????

Your IP : 216.73.216.81


Current Path : C:/inetpub/vhost/binhdinhinvest.gdtvietnam.com/api/node_modules/@azure/core-lro/dist/
Upload File :
Current File : C:/inetpub/vhost/binhdinhinvest.gdtvietnam.com/api/node_modules/@azure/core-lro/dist/index.js.map

{"version":3,"file":"index.js","sources":["../src/logger.ts","../src/poller/constants.ts","../src/poller/operation.ts","../src/http/operation.ts","../src/poller/poller.ts","../src/http/poller.ts","../src/legacy/lroEngine/operation.ts","../src/legacy/poller.ts","../src/legacy/lroEngine/lroEngine.ts"],"sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The `@azure/logger` configuration for this package.\n * @internal\n */\nexport const logger = createClientLogger(\"core-lro\");\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * The default time interval to wait before sending the next polling request.\n */\nexport const POLL_INTERVAL_IN_MS = 2000;\n/**\n * The closed set of terminal states.\n */\nexport const terminalStates = [\"succeeded\", \"canceled\", \"failed\"];\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n  LroError,\n  InnerError,\n  Operation,\n  OperationStatus,\n  RestorableOperationState,\n  StateProxy,\n} from \"./models\";\nimport { logger } from \"../logger\";\nimport { terminalStates } from \"./constants\";\n\n/**\n * Deserializes the state\n */\nexport function deserializeState<TState>(\n  serializedState: string\n): RestorableOperationState<TState> {\n  try {\n    return JSON.parse(serializedState).state;\n  } catch (e) {\n    throw new Error(`Unable to deserialize input state: ${serializedState}`);\n  }\n}\n\nfunction setStateError<TState, TResult>(inputs: {\n  state: TState;\n  stateProxy: StateProxy<TState, TResult>;\n  isOperationError: (error: Error) => boolean;\n}): (error: Error) => never {\n  const { state, stateProxy, isOperationError } = inputs;\n  return (error: Error) => {\n    if (isOperationError(error)) {\n      stateProxy.setError(state, error);\n      stateProxy.setFailed(state);\n    }\n    throw error;\n  };\n}\n\nfunction appendReadableErrorMessage(currentMessage: string, innerMessage: string): string {\n  let message = currentMessage;\n  if (message.slice(-1) !== \".\") {\n    message = message + \".\";\n  }\n  return message + \" \" + innerMessage;\n}\n\nfunction simplifyError(err: LroError): {\n  code: string;\n  message: string;\n} {\n  let message = err.message;\n  let code = err.code;\n  let curErr = err as InnerError;\n  while (curErr.innererror) {\n    curErr = curErr.innererror;\n    code = curErr.code;\n    message = appendReadableErrorMessage(message, curErr.message);\n  }\n  return {\n    code,\n    message,\n  };\n}\n\nfunction processOperationStatus<TState, TResult, TResponse>(result: {\n  status: OperationStatus;\n  response: TResponse;\n  state: RestorableOperationState<TState>;\n  stateProxy: StateProxy<TState, TResult>;\n  processResult?: (result: TResponse, state: TState) => TResult;\n  getError?: (response: TResponse) => LroError | undefined;\n  isDone?: (lastResponse: TResponse, state: TState) => boolean;\n  setErrorAsResult: boolean;\n}): void {\n  const { state, stateProxy, status, isDone, processResult, getError, response, setErrorAsResult } =\n    result;\n  switch (status) {\n    case \"succeeded\": {\n      stateProxy.setSucceeded(state);\n      break;\n    }\n    case \"failed\": {\n      const err = getError?.(response);\n      let postfix = \"\";\n      if (err) {\n        const { code, message } = simplifyError(err);\n        postfix = `. ${code}. ${message}`;\n      }\n      const errStr = `The long-running operation has failed${postfix}`;\n      stateProxy.setError(state, new Error(errStr));\n      stateProxy.setFailed(state);\n      logger.warning(errStr);\n      break;\n    }\n    case \"canceled\": {\n      stateProxy.setCanceled(state);\n      break;\n    }\n  }\n  if (\n    isDone?.(response, state) ||\n    (isDone === undefined &&\n      [\"succeeded\", \"canceled\"].concat(setErrorAsResult ? [] : [\"failed\"]).includes(status))\n  ) {\n    stateProxy.setResult(\n      state,\n      buildResult({\n        response,\n        state,\n        processResult,\n      })\n    );\n  }\n}\n\nfunction buildResult<TResponse, TResult, TState>(inputs: {\n  response: TResponse;\n  state: TState;\n  processResult?: (result: TResponse, state: TState) => TResult;\n}): TResult {\n  const { processResult, response, state } = inputs;\n  return processResult ? processResult(response, state) : (response as unknown as TResult);\n}\n\n/**\n * Initiates the long-running operation.\n */\nexport async function initOperation<TResponse, TResult, TState>(inputs: {\n  init: Operation<TResponse, unknown>[\"init\"];\n  stateProxy: StateProxy<TState, TResult>;\n  getOperationStatus: (inputs: {\n    response: TResponse;\n    state: RestorableOperationState<TState>;\n    operationLocation?: string;\n  }) => OperationStatus;\n  processResult?: (result: TResponse, state: TState) => TResult;\n  withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void;\n  setErrorAsResult: boolean;\n}): Promise<RestorableOperationState<TState>> {\n  const {\n    init,\n    stateProxy,\n    processResult,\n    getOperationStatus,\n    withOperationLocation,\n    setErrorAsResult,\n  } = inputs;\n  const { operationLocation, resourceLocation, metadata, response } = await init();\n  if (operationLocation) withOperationLocation?.(operationLocation, false);\n  const config = {\n    metadata,\n    operationLocation,\n    resourceLocation,\n  };\n  logger.verbose(`LRO: Operation description:`, config);\n  const state = stateProxy.initState(config);\n  const status = getOperationStatus({ response, state, operationLocation });\n  processOperationStatus({ state, status, stateProxy, response, setErrorAsResult, processResult });\n  return state;\n}\n\nasync function pollOperationHelper<TResponse, TState, TResult, TOptions>(inputs: {\n  poll: Operation<TResponse, TOptions>[\"poll\"];\n  stateProxy: StateProxy<TState, TResult>;\n  state: RestorableOperationState<TState>;\n  operationLocation: string;\n  getOperationStatus: (\n    response: TResponse,\n    state: RestorableOperationState<TState>\n  ) => OperationStatus;\n  getResourceLocation: (\n    response: TResponse,\n    state: RestorableOperationState<TState>\n  ) => string | undefined;\n  isOperationError: (error: Error) => boolean;\n  options?: TOptions;\n}): Promise<{\n  status: OperationStatus;\n  response: TResponse;\n}> {\n  const {\n    poll,\n    state,\n    stateProxy,\n    operationLocation,\n    getOperationStatus,\n    getResourceLocation,\n    isOperationError,\n    options,\n  } = inputs;\n  const response = await poll(operationLocation, options).catch(\n    setStateError({\n      state,\n      stateProxy,\n      isOperationError,\n    })\n  );\n  const status = getOperationStatus(response, state);\n  logger.verbose(\n    `LRO: Status:\\n\\tPolling from: ${\n      state.config.operationLocation\n    }\\n\\tOperation status: ${status}\\n\\tPolling status: ${\n      terminalStates.includes(status) ? \"Stopped\" : \"Running\"\n    }`\n  );\n  if (status === \"succeeded\") {\n    const resourceLocation = getResourceLocation(response, state);\n    if (resourceLocation !== undefined) {\n      return {\n        response: await poll(resourceLocation).catch(\n          setStateError({ state, stateProxy, isOperationError })\n        ),\n        status,\n      };\n    }\n  }\n  return { response, status };\n}\n\n/** Polls the long-running operation. */\nexport async function pollOperation<TResponse, TState, TResult, TOptions>(inputs: {\n  poll: Operation<TResponse, TOptions>[\"poll\"];\n  stateProxy: StateProxy<TState, TResult>;\n  state: RestorableOperationState<TState>;\n  getOperationStatus: (\n    response: TResponse,\n    state: RestorableOperationState<TState>\n  ) => OperationStatus;\n  getResourceLocation: (\n    response: TResponse,\n    state: RestorableOperationState<TState>\n  ) => string | undefined;\n  isOperationError: (error: Error) => boolean;\n  getPollingInterval?: (response: TResponse) => number | undefined;\n  setDelay: (intervalInMs: number) => void;\n  getOperationLocation?: (\n    response: TResponse,\n    state: RestorableOperationState<TState>\n  ) => string | undefined;\n  withOperationLocation?: (operationLocation: string, isUpdated: boolean) => void;\n  processResult?: (result: TResponse, state: TState) => TResult;\n  getError?: (response: TResponse) => LroError | undefined;\n  updateState?: (state: TState, lastResponse: TResponse) => void;\n  isDone?: (lastResponse: TResponse, state: TState) => boolean;\n  setErrorAsResult: boolean;\n  options?: TOptions;\n}): Promise<void> {\n  const {\n    poll,\n    state,\n    stateProxy,\n    options,\n    getOperationStatus,\n    getResourceLocation,\n    getOperationLocation,\n    isOperationError,\n    withOperationLocation,\n    getPollingInterval,\n    processResult,\n    getError,\n    updateState,\n    setDelay,\n    isDone,\n    setErrorAsResult,\n  } = inputs;\n  const { operationLocation } = state.config;\n  if (operationLocation !== undefined) {\n    const { response, status } = await pollOperationHelper({\n      poll,\n      getOperationStatus,\n      state,\n      stateProxy,\n      operationLocation,\n      getResourceLocation,\n      isOperationError,\n      options,\n    });\n    processOperationStatus({\n      status,\n      response,\n      state,\n      stateProxy,\n      isDone,\n      processResult,\n      getError,\n      setErrorAsResult,\n    });\n\n    if (!terminalStates.includes(status)) {\n      const intervalInMs = getPollingInterval?.(response);\n      if (intervalInMs) setDelay(intervalInMs);\n      const location = getOperationLocation?.(response, state);\n      if (location !== undefined) {\n        const isUpdated = operationLocation !== location;\n        state.config.operationLocation = location;\n        withOperationLocation?.(location, isUpdated);\n      } else withOperationLocation?.(operationLocation, false);\n    }\n    updateState?.(state, response);\n  }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport {\n  HttpOperationMode,\n  LongRunningOperation,\n  LroResourceLocationConfig,\n  LroResponse,\n  RawResponse,\n  ResponseBody,\n} from \"./models\";\nimport {\n  LroError,\n  OperationConfig,\n  OperationStatus,\n  RestorableOperationState,\n  StateProxy,\n} from \"../poller/models\";\nimport { initOperation, pollOperation } from \"../poller/operation\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { logger } from \"../logger\";\n\nfunction getOperationLocationPollingUrl(inputs: {\n  operationLocation?: string;\n  azureAsyncOperation?: string;\n}): string | undefined {\n  const { azureAsyncOperation, operationLocation } = inputs;\n  return operationLocation ?? azureAsyncOperation;\n}\n\nfunction getLocationHeader(rawResponse: RawResponse): string | undefined {\n  return rawResponse.headers[\"location\"];\n}\n\nfunction getOperationLocationHeader(rawResponse: RawResponse): string | undefined {\n  return rawResponse.headers[\"operation-location\"];\n}\n\nfunction getAzureAsyncOperationHeader(rawResponse: RawResponse): string | undefined {\n  return rawResponse.headers[\"azure-asyncoperation\"];\n}\n\nfunction findResourceLocation(inputs: {\n  requestMethod?: string;\n  location?: string;\n  requestPath?: string;\n  resourceLocationConfig?: LroResourceLocationConfig;\n}): string | undefined {\n  const { location, requestMethod, requestPath, resourceLocationConfig } = inputs;\n  switch (requestMethod) {\n    case \"PUT\": {\n      return requestPath;\n    }\n    case \"DELETE\": {\n      return undefined;\n    }\n    default: {\n      switch (resourceLocationConfig) {\n        case \"azure-async-operation\": {\n          return undefined;\n        }\n        case \"original-uri\": {\n          return requestPath;\n        }\n        case \"location\":\n        default: {\n          return location;\n        }\n      }\n    }\n  }\n}\n\nexport function inferLroMode(inputs: {\n  rawResponse: RawResponse;\n  requestPath?: string;\n  requestMethod?: string;\n  resourceLocationConfig?: LroResourceLocationConfig;\n}): (OperationConfig & { mode: HttpOperationMode }) | undefined {\n  const { rawResponse, requestMethod, requestPath, resourceLocationConfig } = inputs;\n  const operationLocation = getOperationLocationHeader(rawResponse);\n  const azureAsyncOperation = getAzureAsyncOperationHeader(rawResponse);\n  const pollingUrl = getOperationLocationPollingUrl({ operationLocation, azureAsyncOperation });\n  const location = getLocationHeader(rawResponse);\n  const normalizedRequestMethod = requestMethod?.toLocaleUpperCase();\n  if (pollingUrl !== undefined) {\n    return {\n      mode: \"OperationLocation\",\n      operationLocation: pollingUrl,\n      resourceLocation: findResourceLocation({\n        requestMethod: normalizedRequestMethod,\n        location,\n        requestPath,\n        resourceLocationConfig,\n      }),\n    };\n  } else if (location !== undefined) {\n    return {\n      mode: \"ResourceLocation\",\n      operationLocation: location,\n    };\n  } else if (normalizedRequestMethod === \"PUT\" && requestPath) {\n    return {\n      mode: \"Body\",\n      operationLocation: requestPath,\n    };\n  } else {\n    return undefined;\n  }\n}\n\nfunction transformStatus(inputs: { status: unknown; statusCode: number }): OperationStatus {\n  const { status, statusCode } = inputs;\n  if (typeof status !== \"string\" && status !== undefined) {\n    throw new Error(\n      `Polling was unsuccessful. Expected status to have a string value or no value but it has instead: ${status}. This doesn't necessarily indicate the operation has failed. Check your Azure subscription or resource status for more information.`\n    );\n  }\n  switch (status?.toLocaleLowerCase()) {\n    case undefined:\n      return toOperationStatus(statusCode);\n    case \"succeeded\":\n      return \"succeeded\";\n    case \"failed\":\n      return \"failed\";\n    case \"running\":\n    case \"accepted\":\n    case \"started\":\n    case \"canceling\":\n    case \"cancelling\":\n      return \"running\";\n    case \"canceled\":\n    case \"cancelled\":\n      return \"canceled\";\n    default: {\n      logger.verbose(`LRO: unrecognized operation status: ${status}`);\n      return status as OperationStatus;\n    }\n  }\n}\n\nfunction getStatus(rawResponse: RawResponse): OperationStatus {\n  const { status } = (rawResponse.body as ResponseBody) ?? {};\n  return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\n\nfunction getProvisioningState(rawResponse: RawResponse): OperationStatus {\n  const { properties, provisioningState } = (rawResponse.body as ResponseBody) ?? {};\n  const status = properties?.provisioningState ?? provisioningState;\n  return transformStatus({ status, statusCode: rawResponse.statusCode });\n}\n\nfunction toOperationStatus(statusCode: number): OperationStatus {\n  if (statusCode === 202) {\n    return \"running\";\n  } else if (statusCode < 300) {\n    return \"succeeded\";\n  } else {\n    return \"failed\";\n  }\n}\n\nexport function parseRetryAfter<T>({ rawResponse }: LroResponse<T>): number | undefined {\n  const retryAfter: string | undefined = rawResponse.headers[\"retry-after\"];\n  if (retryAfter !== undefined) {\n    // Retry-After header value is either in HTTP date format, or in seconds\n    const retryAfterInSeconds = parseInt(retryAfter);\n    return isNaN(retryAfterInSeconds)\n      ? calculatePollingIntervalFromDate(new Date(retryAfter))\n      : retryAfterInSeconds * 1000;\n  }\n  return undefined;\n}\n\nexport function getErrorFromResponse<T>(response: LroResponse<T>): LroError | undefined {\n  const error = (response.flatResponse as ResponseBody).error;\n  if (!error) {\n    logger.warning(\n      `The long-running operation failed but there is no error property in the response's body`\n    );\n    return;\n  }\n  if (!error.code || !error.message) {\n    logger.warning(\n      `The long-running operation failed but the error property in the response's body doesn't contain code or message`\n    );\n    return;\n  }\n  return error as LroError;\n}\n\nfunction calculatePollingIntervalFromDate(retryAfterDate: Date): number | undefined {\n  const timeNow = Math.floor(new Date().getTime());\n  const retryAfterTime = retryAfterDate.getTime();\n  if (timeNow < retryAfterTime) {\n    return retryAfterTime - timeNow;\n  }\n  return undefined;\n}\n\nexport function getStatusFromInitialResponse<TState>(inputs: {\n  response: LroResponse<unknown>;\n  state: RestorableOperationState<TState>;\n  operationLocation?: string;\n}): OperationStatus {\n  const { response, state, operationLocation } = inputs;\n  function helper(): OperationStatus {\n    const mode = state.config.metadata?.[\"mode\"];\n    switch (mode) {\n      case undefined:\n        return toOperationStatus(response.rawResponse.statusCode);\n      case \"Body\":\n        return getOperationStatus(response, state);\n      default:\n        return \"running\";\n    }\n  }\n  const status = helper();\n  return status === \"running\" && operationLocation === undefined ? \"succeeded\" : status;\n}\n\n/**\n * Initiates the long-running operation.\n */\nexport async function initHttpOperation<TResult, TState>(inputs: {\n  stateProxy: StateProxy<TState, TResult>;\n  resourceLocationConfig?: LroResourceLocationConfig;\n  processResult?: (result: unknown, state: TState) => TResult;\n  setErrorAsResult: boolean;\n  lro: LongRunningOperation;\n}): Promise<RestorableOperationState<TState>> {\n  const { stateProxy, resourceLocationConfig, processResult, lro, setErrorAsResult } = inputs;\n  return initOperation({\n    init: async () => {\n      const response = await lro.sendInitialRequest();\n      const config = inferLroMode({\n        rawResponse: response.rawResponse,\n        requestPath: lro.requestPath,\n        requestMethod: lro.requestMethod,\n        resourceLocationConfig,\n      });\n      return {\n        response,\n        operationLocation: config?.operationLocation,\n        resourceLocation: config?.resourceLocation,\n        ...(config?.mode ? { metadata: { mode: config.mode } } : {}),\n      };\n    },\n    stateProxy,\n    processResult: processResult\n      ? ({ flatResponse }, state) => processResult(flatResponse, state)\n      : ({ flatResponse }) => flatResponse as TResult,\n    getOperationStatus: getStatusFromInitialResponse,\n    setErrorAsResult,\n  });\n}\n\nexport function getOperationLocation<TState>(\n  { rawResponse }: LroResponse,\n  state: RestorableOperationState<TState>\n): string | undefined {\n  const mode = state.config.metadata?.[\"mode\"];\n  switch (mode) {\n    case \"OperationLocation\": {\n      return getOperationLocationPollingUrl({\n        operationLocation: getOperationLocationHeader(rawResponse),\n        azureAsyncOperation: getAzureAsyncOperationHeader(rawResponse),\n      });\n    }\n    case \"ResourceLocation\": {\n      return getLocationHeader(rawResponse);\n    }\n    case \"Body\":\n    default: {\n      return undefined;\n    }\n  }\n}\n\nexport function getOperationStatus<TState>(\n  { rawResponse }: LroResponse,\n  state: RestorableOperationState<TState>\n): OperationStatus {\n  const mode = state.config.metadata?.[\"mode\"];\n  switch (mode) {\n    case \"OperationLocation\": {\n      return getStatus(rawResponse);\n    }\n    case \"ResourceLocation\": {\n      return toOperationStatus(rawResponse.statusCode);\n    }\n    case \"Body\": {\n      return getProvisioningState(rawResponse);\n    }\n    default:\n      throw new Error(`Internal error: Unexpected operation mode: ${mode}`);\n  }\n}\n\nexport function getResourceLocation<TState>(\n  { flatResponse }: LroResponse,\n  state: RestorableOperationState<TState>\n): string | undefined {\n  if (typeof flatResponse === \"object\") {\n    const resourceLocation = (flatResponse as { resourceLocation?: string }).resourceLocation;\n    if (resourceLocation !== undefined) {\n      state.config.resourceLocation = resourceLocation;\n    }\n  }\n  return state.config.resourceLocation;\n}\n\nexport function isOperationError(e: Error): boolean {\n  return e.name === \"RestError\";\n}\n\n/** Polls the long-running operation. */\nexport async function pollHttpOperation<TState, TResult>(inputs: {\n  lro: LongRunningOperation;\n  stateProxy: StateProxy<TState, TResult>;\n  processResult?: (result: unknown, state: TState) => TResult;\n  updateState?: (state: TState, lastResponse: LroResponse) => void;\n  isDone?: (lastResponse: LroResponse, state: TState) => boolean;\n  setDelay: (intervalInMs: number) => void;\n  options?: { abortSignal?: AbortSignalLike };\n  state: RestorableOperationState<TState>;\n  setErrorAsResult: boolean;\n}): Promise<void> {\n  const {\n    lro,\n    stateProxy,\n    options,\n    processResult,\n    updateState,\n    setDelay,\n    state,\n    setErrorAsResult,\n  } = inputs;\n  return pollOperation({\n    state,\n    stateProxy,\n    setDelay,\n    processResult: processResult\n      ? ({ flatResponse }, inputState) => processResult(flatResponse, inputState)\n      : ({ flatResponse }) => flatResponse as TResult,\n    getError: getErrorFromResponse,\n    updateState,\n    getPollingInterval: parseRetryAfter,\n    getOperationLocation,\n    getOperationStatus,\n    isOperationError,\n    getResourceLocation,\n    options,\n    /**\n     * The expansion here is intentional because `lro` could be an object that\n     * references an inner this, so we need to preserve a reference to it.\n     */\n    poll: async (location, inputOptions) => lro.sendPollRequest(location, inputOptions),\n    setErrorAsResult,\n  });\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { AbortController, AbortSignalLike } from \"@azure/abort-controller\";\nimport {\n  BuildCreatePollerOptions,\n  CreatePollerOptions,\n  Operation,\n  OperationState,\n  RestorableOperationState,\n  SimplePollerLike,\n  StateProxy,\n} from \"./models\";\nimport { deserializeState, initOperation, pollOperation } from \"./operation\";\nimport { POLL_INTERVAL_IN_MS } from \"./constants\";\nimport { delay } from \"@azure/core-util\";\n\nconst createStateProxy: <TResult, TState extends OperationState<TResult>>() => StateProxy<\n  TState,\n  TResult\n> = () => ({\n  /**\n   * The state at this point is created to be of type OperationState<TResult>.\n   * It will be updated later to be of type TState when the\n   * customer-provided callback, `updateState`, is called during polling.\n   */\n  initState: (config) => ({ status: \"running\", config } as any),\n  setCanceled: (state) => (state.status = \"canceled\"),\n  setError: (state, error) => (state.error = error),\n  setResult: (state, result) => (state.result = result),\n  setRunning: (state) => (state.status = \"running\"),\n  setSucceeded: (state) => (state.status = \"succeeded\"),\n  setFailed: (state) => (state.status = \"failed\"),\n\n  getError: (state) => state.error,\n  getResult: (state) => state.result,\n  isCanceled: (state) => state.status === \"canceled\",\n  isFailed: (state) => state.status === \"failed\",\n  isRunning: (state) => state.status === \"running\",\n  isSucceeded: (state) => state.status === \"succeeded\",\n});\n\n/**\n * Returns a poller factory.\n */\nexport function buildCreatePoller<TResponse, TResult, TState extends OperationState<TResult>>(\n  inputs: BuildCreatePollerOptions<TResponse, TState>\n): (\n  lro: Operation<TResponse, { abortSignal?: AbortSignalLike }>,\n  options?: CreatePollerOptions<TResponse, TResult, TState>\n) => Promise<SimplePollerLike<TState, TResult>> {\n  const {\n    getOperationLocation,\n    getStatusFromInitialResponse,\n    getStatusFromPollResponse,\n    isOperationError,\n    getResourceLocation,\n    getPollingInterval,\n    getError,\n    resolveOnUnsuccessful,\n  } = inputs;\n  return async (\n    { init, poll }: Operation<TResponse, { abortSignal?: AbortSignalLike }>,\n    options?: CreatePollerOptions<TResponse, TResult, TState>\n  ) => {\n    const {\n      processResult,\n      updateState,\n      withOperationLocation: withOperationLocationCallback,\n      intervalInMs = POLL_INTERVAL_IN_MS,\n      restoreFrom,\n    } = options || {};\n    const stateProxy = createStateProxy<TResult, TState>();\n    const withOperationLocation = withOperationLocationCallback\n      ? (() => {\n          let called = false;\n          return (operationLocation: string, isUpdated: boolean) => {\n            if (isUpdated) withOperationLocationCallback(operationLocation);\n            else if (!called) withOperationLocationCallback(operationLocation);\n            called = true;\n          };\n        })()\n      : undefined;\n    const state: RestorableOperationState<TState> = restoreFrom\n      ? deserializeState(restoreFrom)\n      : await initOperation({\n          init,\n          stateProxy,\n          processResult,\n          getOperationStatus: getStatusFromInitialResponse,\n          withOperationLocation,\n          setErrorAsResult: !resolveOnUnsuccessful,\n        });\n    let resultPromise: Promise<TResult> | undefined;\n    const abortController = new AbortController();\n    // Progress handlers\n    type Handler = (state: TState) => void;\n    const handlers = new Map<symbol, Handler>();\n    const handleProgressEvents = async (): Promise<void> => handlers.forEach((h) => h(state));\n    const cancelErrMsg = \"Operation was canceled\";\n    let currentPollIntervalInMs = intervalInMs;\n\n    const poller: SimplePollerLike<TState, TResult> = {\n      getOperationState: () => state,\n      getResult: () => state.result,\n      isDone: () => [\"succeeded\", \"failed\", \"canceled\"].includes(state.status),\n      isStopped: () => resultPromise === undefined,\n      stopPolling: () => {\n        abortController.abort();\n      },\n      toString: () =>\n        JSON.stringify({\n          state,\n        }),\n      onProgress: (callback: (state: TState) => void) => {\n        const s = Symbol();\n        handlers.set(s, callback);\n        return () => handlers.delete(s);\n      },\n      pollUntilDone: (pollOptions?: { abortSignal?: AbortSignalLike }) =>\n        (resultPromise ??= (async () => {\n          const { abortSignal: inputAbortSignal } = pollOptions || {};\n          const { signal: abortSignal } = inputAbortSignal\n            ? new AbortController([inputAbortSignal, abortController.signal])\n            : abortController;\n          if (!poller.isDone()) {\n            await poller.poll({ abortSignal });\n            while (!poller.isDone()) {\n              await delay(currentPollIntervalInMs, { abortSignal });\n              await poller.poll({ abortSignal });\n            }\n          }\n          if (resolveOnUnsuccessful) {\n            return poller.getResult() as TResult;\n          } else {\n            switch (state.status) {\n              case \"succeeded\":\n                return poller.getResult() as TResult;\n              case \"canceled\":\n                throw new Error(cancelErrMsg);\n              case \"failed\":\n                throw state.error;\n              case \"notStarted\":\n              case \"running\":\n                throw new Error(`Polling completed without succeeding or failing`);\n            }\n          }\n        })().finally(() => {\n          resultPromise = undefined;\n        })),\n      async poll(pollOptions?: { abortSignal?: AbortSignalLike }): Promise<void> {\n        if (resolveOnUnsuccessful) {\n          if (poller.isDone()) return;\n        } else {\n          switch (state.status) {\n            case \"succeeded\":\n              return;\n            case \"canceled\":\n              throw new Error(cancelErrMsg);\n            case \"failed\":\n              throw state.error;\n          }\n        }\n        await pollOperation({\n          poll,\n          state,\n          stateProxy,\n          getOperationLocation,\n          isOperationError,\n          withOperationLocation,\n          getPollingInterval,\n          getOperationStatus: getStatusFromPollResponse,\n          getResourceLocation,\n          processResult,\n          getError,\n          updateState,\n          options: pollOptions,\n          setDelay: (pollIntervalInMs) => {\n            currentPollIntervalInMs = pollIntervalInMs;\n          },\n          setErrorAsResult: !resolveOnUnsuccessful,\n        });\n        await handleProgressEvents();\n        if (!resolveOnUnsuccessful) {\n          switch (state.status) {\n            case \"canceled\":\n              throw new Error(cancelErrMsg);\n            case \"failed\":\n              throw state.error;\n          }\n        }\n      },\n    };\n    return poller;\n  };\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LongRunningOperation, LroResponse } from \"./models\";\nimport { OperationState, SimplePollerLike } from \"../poller/models\";\nimport {\n  getErrorFromResponse,\n  getOperationLocation,\n  getOperationStatus,\n  getResourceLocation,\n  getStatusFromInitialResponse,\n  inferLroMode,\n  isOperationError,\n  parseRetryAfter,\n} from \"./operation\";\nimport { CreateHttpPollerOptions } from \"./models\";\nimport { buildCreatePoller } from \"../poller/poller\";\n\n/**\n * Creates a poller that can be used to poll a long-running operation.\n * @param lro - Description of the long-running operation\n * @param options - options to configure the poller\n * @returns an initialized poller\n */\nexport async function createHttpPoller<TResult, TState extends OperationState<TResult>>(\n  lro: LongRunningOperation,\n  options?: CreateHttpPollerOptions<TResult, TState>\n): Promise<SimplePollerLike<TState, TResult>> {\n  const {\n    resourceLocationConfig,\n    intervalInMs,\n    processResult,\n    restoreFrom,\n    updateState,\n    withOperationLocation,\n    resolveOnUnsuccessful = false,\n  } = options || {};\n  return buildCreatePoller<LroResponse, TResult, TState>({\n    getStatusFromInitialResponse,\n    getStatusFromPollResponse: getOperationStatus,\n    isOperationError,\n    getOperationLocation,\n    getResourceLocation,\n    getPollingInterval: parseRetryAfter,\n    getError: getErrorFromResponse,\n    resolveOnUnsuccessful,\n  })(\n    {\n      init: async () => {\n        const response = await lro.sendInitialRequest();\n        const config = inferLroMode({\n          rawResponse: response.rawResponse,\n          requestPath: lro.requestPath,\n          requestMethod: lro.requestMethod,\n          resourceLocationConfig,\n        });\n        return {\n          response,\n          operationLocation: config?.operationLocation,\n          resourceLocation: config?.resourceLocation,\n          ...(config?.mode ? { metadata: { mode: config.mode } } : {}),\n        };\n      },\n      poll: lro.sendPollRequest,\n    },\n    {\n      intervalInMs,\n      withOperationLocation,\n      restoreFrom,\n      updateState,\n      processResult: processResult\n        ? ({ flatResponse }, state) => processResult(flatResponse, state)\n        : ({ flatResponse }) => flatResponse as TResult,\n    }\n  );\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LongRunningOperation, LroResourceLocationConfig, RawResponse } from \"../../http/models\";\nimport { PollOperation, PollOperationState } from \"../pollOperation\";\nimport { RestorableOperationState, StateProxy } from \"../../poller/models\";\nimport { initHttpOperation, pollHttpOperation } from \"../../http/operation\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { PollerConfig } from \"./models\";\nimport { logger } from \"../../logger\";\n\nconst createStateProxy: <TResult, TState extends PollOperationState<TResult>>() => StateProxy<\n  TState,\n  TResult\n> = () => ({\n  initState: (config) => ({ config, isStarted: true } as any),\n  setCanceled: (state) => (state.isCancelled = true),\n  setError: (state, error) => (state.error = error),\n  setResult: (state, result) => (state.result = result),\n  setRunning: (state) => (state.isStarted = true),\n  setSucceeded: (state) => (state.isCompleted = true),\n  setFailed: () => {\n    /** empty body */\n  },\n\n  getError: (state) => state.error,\n  getResult: (state) => state.result,\n  isCanceled: (state) => !!state.isCancelled,\n  isFailed: (state) => !!state.error,\n  isRunning: (state) => !!state.isStarted,\n  isSucceeded: (state) => Boolean(state.isCompleted && !state.isCancelled && !state.error),\n});\n\nexport class GenericPollOperation<TResult, TState extends PollOperationState<TResult>>\n  implements PollOperation<TState, TResult>\n{\n  private pollerConfig?: PollerConfig;\n\n  constructor(\n    public state: RestorableOperationState<TState>,\n    private lro: LongRunningOperation,\n    private setErrorAsResult: boolean,\n    private lroResourceLocationConfig?: LroResourceLocationConfig,\n    private processResult?: (result: unknown, state: TState) => TResult,\n    private updateState?: (state: TState, lastResponse: RawResponse) => void,\n    private isDone?: (lastResponse: TResult, state: TState) => boolean\n  ) {}\n\n  public setPollerConfig(pollerConfig: PollerConfig): void {\n    this.pollerConfig = pollerConfig;\n  }\n\n  async update(options?: {\n    abortSignal?: AbortSignalLike;\n    fireProgress?: (state: TState) => void;\n  }): Promise<PollOperation<TState, TResult>> {\n    const stateProxy = createStateProxy<TResult, TState>();\n    if (!this.state.isStarted) {\n      this.state = {\n        ...this.state,\n        ...(await initHttpOperation({\n          lro: this.lro,\n          stateProxy,\n          resourceLocationConfig: this.lroResourceLocationConfig,\n          processResult: this.processResult,\n          setErrorAsResult: this.setErrorAsResult,\n        })),\n      };\n    }\n    const updateState = this.updateState;\n    const isDone = this.isDone;\n\n    if (!this.state.isCompleted && this.state.error === undefined) {\n      await pollHttpOperation({\n        lro: this.lro,\n        state: this.state,\n        stateProxy,\n        processResult: this.processResult,\n        updateState: updateState\n          ? (state, { rawResponse }) => updateState(state, rawResponse)\n          : undefined,\n        isDone: isDone\n          ? ({ flatResponse }, state) => isDone(flatResponse as TResult, state)\n          : undefined,\n        options,\n        setDelay: (intervalInMs) => {\n          this.pollerConfig!.intervalInMs = intervalInMs;\n        },\n        setErrorAsResult: this.setErrorAsResult,\n      });\n    }\n    options?.fireProgress?.(this.state);\n    return this;\n  }\n\n  async cancel(): Promise<PollOperation<TState, TResult>> {\n    logger.error(\"`cancelOperation` is deprecated because it wasn't implemented\");\n    return this;\n  }\n\n  /**\n   * Serializes the Poller operation.\n   */\n  public toString(): string {\n    return JSON.stringify({\n      state: this.state,\n    });\n  }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { PollOperation, PollOperationState } from \"./pollOperation\";\nimport { AbortSignalLike } from \"@azure/abort-controller\";\nimport { CancelOnProgress } from \"../poller/models\";\nimport { PollerLike } from \"./models\";\n\n/**\n * PollProgressCallback<TState> is the type of the callback functions sent to onProgress.\n * These functions will receive a TState that is defined by your implementation of\n * the Poller class.\n */\nexport type PollProgressCallback<TState> = (state: TState) => void;\n\n/**\n * When a poller is manually stopped through the `stopPolling` method,\n * the poller will be rejected with an instance of the PollerStoppedError.\n */\nexport class PollerStoppedError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"PollerStoppedError\";\n    Object.setPrototypeOf(this, PollerStoppedError.prototype);\n  }\n}\n\n/**\n * When the operation is cancelled, the poller will be rejected with an instance\n * of the PollerCancelledError.\n */\nexport class PollerCancelledError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"PollerCancelledError\";\n    Object.setPrototypeOf(this, PollerCancelledError.prototype);\n  }\n}\n\n/**\n * A class that represents the definition of a program that polls through consecutive requests\n * until it reaches a state of completion.\n *\n * A poller can be executed manually, by polling request by request by calling to the `poll()` method repeatedly, until its operation is completed.\n * It also provides a way to wait until the operation completes, by calling `pollUntilDone()` and waiting until the operation finishes.\n * Pollers can also request the cancellation of the ongoing process to whom is providing the underlying long running operation.\n *\n * ```ts\n * const poller = new MyPoller();\n *\n * // Polling just once:\n * await poller.poll();\n *\n * // We can try to cancel the request here, by calling:\n * //\n * //     await poller.cancelOperation();\n * //\n *\n * // Getting the final result:\n * const result = await poller.pollUntilDone();\n * ```\n *\n * The Poller is defined by two types, a type representing the state of the poller, which\n * must include a basic set of properties from `PollOperationState<TResult>`,\n * and a return type defined by `TResult`, which can be anything.\n *\n * The Poller class implements the `PollerLike` interface, which allows poller implementations to avoid having\n * to export the Poller's class directly, and instead only export the already instantiated poller with the PollerLike type.\n *\n * ```ts\n * class Client {\n *   public async makePoller: PollerLike<MyOperationState, MyResult> {\n *     const poller = new MyPoller({});\n *     // It might be preferred to return the poller after the first request is made,\n *     // so that some information can be obtained right away.\n *     await poller.poll();\n *     return poller;\n *   }\n * }\n *\n * const poller: PollerLike<MyOperationState, MyResult> = myClient.makePoller();\n * ```\n *\n * A poller can be created through its constructor, then it can be polled until it's completed.\n * At any point in time, the state of the poller can be obtained without delay through the getOperationState method.\n * At any point in time, the intermediate forms of the result type can be requested without delay.\n * Once the underlying operation is marked as completed, the poller will stop and the final value will be returned.\n *\n * ```ts\n * const poller = myClient.makePoller();\n * const state: MyOperationState = poller.getOperationState();\n *\n * // The intermediate result can be obtained at any time.\n * const result: MyResult | undefined = poller.getResult();\n *\n * // The final result can only be obtained after the poller finishes.\n * const result: MyResult = await poller.pollUntilDone();\n * ```\n *\n */\n// eslint-disable-next-line no-use-before-define\nexport abstract class Poller<TState extends PollOperationState<TResult>, TResult>\n  implements PollerLike<TState, TResult>\n{\n  /** controls whether to throw an error if the operation failed or was canceled. */\n  protected resolveOnUnsuccessful: boolean = false;\n  private stopped: boolean = true;\n  private resolve?: (value: TResult) => void;\n  private reject?: (error: PollerStoppedError | PollerCancelledError | Error) => void;\n  private pollOncePromise?: Promise<void>;\n  private cancelPromise?: Promise<void>;\n  private promise: Promise<TResult>;\n  private pollProgressCallbacks: PollProgressCallback<TState>[] = [];\n\n  /**\n   * The poller's operation is available in full to any of the methods of the Poller class\n   * and any class extending the Poller class.\n   */\n  protected operation: PollOperation<TState, TResult>;\n\n  /**\n   * A poller needs to be initialized by passing in at least the basic properties of the `PollOperation<TState, TResult>`.\n   *\n   * When writing an implementation of a Poller, this implementation needs to deal with the initialization\n   * of any custom state beyond the basic definition of the poller. The basic poller assumes that the poller's\n   * operation has already been defined, at least its basic properties. The code below shows how to approach\n   * the definition of the constructor of a new custom poller.\n   *\n   * ```ts\n   * export class MyPoller extends Poller<MyOperationState, string> {\n   *   constructor({\n   *     // Anything you might need outside of the basics\n   *   }) {\n   *     let state: MyOperationState = {\n   *       privateProperty: private,\n   *       publicProperty: public,\n   *     };\n   *\n   *     const operation = {\n   *       state,\n   *       update,\n   *       cancel,\n   *       toString\n   *     }\n   *\n   *     // Sending the operation to the parent's constructor.\n   *     super(operation);\n   *\n   *     // You can assign more local properties here.\n   *   }\n   * }\n   * ```\n   *\n   * Inside of this constructor, a new promise is created. This will be used to\n   * tell the user when the poller finishes (see `pollUntilDone()`). The promise's\n   * resolve and reject methods are also used internally to control when to resolve\n   * or reject anyone waiting for the poller to finish.\n   *\n   * The constructor of a custom implementation of a poller is where any serialized version of\n   * a previous poller's operation should be deserialized into the operation sent to the\n   * base constructor. For example:\n   *\n   * ```ts\n   * export class MyPoller extends Poller<MyOperationState, string> {\n   *   constructor(\n   *     baseOperation: string | undefined\n   *   ) {\n   *     let state: MyOperationState = {};\n   *     if (baseOperation) {\n   *       state = {\n   *         ...JSON.parse(baseOperation).state,\n   *         ...state\n   *       };\n   *     }\n   *     const operation = {\n   *       state,\n   *       // ...\n   *     }\n   *     super(operation);\n   *   }\n   * }\n   * ```\n   *\n   * @param operation - Must contain the basic properties of `PollOperation<State, TResult>`.\n   */\n  constructor(operation: PollOperation<TState, TResult>) {\n    this.operation = operation;\n    this.promise = new Promise<TResult>(\n      (\n        resolve: (result: TResult) => void,\n        reject: (error: PollerStoppedError | PollerCancelledError | Error) => void\n      ) => {\n        this.resolve = resolve;\n        this.reject = reject;\n      }\n    );\n    // This prevents the UnhandledPromiseRejectionWarning in node.js from being thrown.\n    // The above warning would get thrown if `poller.poll` is called, it returns an error,\n    // and pullUntilDone did not have a .catch or await try/catch on it's return value.\n    this.promise.catch(() => {\n      /* intentionally blank */\n    });\n  }\n\n  /**\n   * Defines how much to wait between each poll request.\n   * This has to be implemented by your custom poller.\n   *\n   * \\@azure/core-util has a simple implementation of a delay function that waits as many milliseconds as specified.\n   * This can be used as follows:\n   *\n   * ```ts\n   * import { delay } from \"@azure/core-util\";\n   *\n   * export class MyPoller extends Poller<MyOperationState, string> {\n   *   // The other necessary definitions.\n   *\n   *   async delay(): Promise<void> {\n   *     const milliseconds = 1000;\n   *     return delay(milliseconds);\n   *   }\n   * }\n   * ```\n   *\n   */\n  protected abstract delay(): Promise<void>;\n\n  /**\n   * Starts a loop that will break only if the poller is done\n   * or if the poller is stopped.\n   */\n  private async startPolling(pollOptions: { abortSignal?: AbortSignalLike } = {}): Promise<void> {\n    if (this.stopped) {\n      this.stopped = false;\n    }\n    while (!this.isStopped() && !this.isDone()) {\n      await this.poll(pollOptions);\n      await this.delay();\n    }\n  }\n\n  /**\n   * pollOnce does one polling, by calling to the update method of the underlying\n   * poll operation to make any relevant change effective.\n   *\n   * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n   *\n   * @param options - Optional properties passed to the operation's update method.\n   */\n  private async pollOnce(options: { abortSignal?: AbortSignalLike } = {}): Promise<void> {\n    if (!this.isDone()) {\n      this.operation = await this.operation.update({\n        abortSignal: options.abortSignal,\n        fireProgress: this.fireProgress.bind(this),\n      });\n    }\n    this.processUpdatedState();\n  }\n\n  /**\n   * fireProgress calls the functions passed in via onProgress the method of the poller.\n   *\n   * It loops over all of the callbacks received from onProgress, and executes them, sending them\n   * the current operation state.\n   *\n   * @param state - The current operation state.\n   */\n  private fireProgress(state: TState): void {\n    for (const callback of this.pollProgressCallbacks) {\n      callback(state);\n    }\n  }\n\n  /**\n   * Invokes the underlying operation's cancel method.\n   */\n  private async cancelOnce(options: { abortSignal?: AbortSignalLike } = {}): Promise<void> {\n    this.operation = await this.operation.cancel(options);\n  }\n\n  /**\n   * Returns a promise that will resolve once a single polling request finishes.\n   * It does this by calling the update method of the Poller's operation.\n   *\n   * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n   *\n   * @param options - Optional properties passed to the operation's update method.\n   */\n  public poll(options: { abortSignal?: AbortSignalLike } = {}): Promise<void> {\n    if (!this.pollOncePromise) {\n      this.pollOncePromise = this.pollOnce(options);\n      const clearPollOncePromise = (): void => {\n        this.pollOncePromise = undefined;\n      };\n      this.pollOncePromise.then(clearPollOncePromise, clearPollOncePromise).catch(this.reject);\n    }\n    return this.pollOncePromise;\n  }\n\n  private processUpdatedState(): void {\n    if (this.operation.state.error) {\n      this.stopped = true;\n      if (!this.resolveOnUnsuccessful) {\n        this.reject!(this.operation.state.error);\n        throw this.operation.state.error;\n      }\n    }\n    if (this.operation.state.isCancelled) {\n      this.stopped = true;\n      if (!this.resolveOnUnsuccessful) {\n        const error = new PollerCancelledError(\"Operation was canceled\");\n        this.reject!(error);\n        throw error;\n      }\n    }\n    if (this.isDone() && this.resolve) {\n      // If the poller has finished polling, this means we now have a result.\n      // However, it can be the case that TResult is instantiated to void, so\n      // we are not expecting a result anyway. To assert that we might not\n      // have a result eventually after finishing polling, we cast the result\n      // to TResult.\n      this.resolve(this.getResult() as TResult);\n    }\n  }\n\n  /**\n   * Returns a promise that will resolve once the underlying operation is completed.\n   */\n  public async pollUntilDone(\n    pollOptions: { abortSignal?: AbortSignalLike } = {}\n  ): Promise<TResult> {\n    if (this.stopped) {\n      this.startPolling(pollOptions).catch(this.reject);\n    }\n    // This is needed because the state could have been updated by\n    // `cancelOperation`, e.g. the operation is canceled or an error occurred.\n    this.processUpdatedState();\n    return this.promise;\n  }\n\n  /**\n   * Invokes the provided callback after each polling is completed,\n   * sending the current state of the poller's operation.\n   *\n   * It returns a method that can be used to stop receiving updates on the given callback function.\n   */\n  public onProgress(callback: (state: TState) => void): CancelOnProgress {\n    this.pollProgressCallbacks.push(callback);\n    return (): void => {\n      this.pollProgressCallbacks = this.pollProgressCallbacks.filter((c) => c !== callback);\n    };\n  }\n\n  /**\n   * Returns true if the poller has finished polling.\n   */\n  public isDone(): boolean {\n    const state: PollOperationState<TResult> = this.operation.state;\n    return Boolean(state.isCompleted || state.isCancelled || state.error);\n  }\n\n  /**\n   * Stops the poller from continuing to poll.\n   */\n  public stopPolling(): void {\n    if (!this.stopped) {\n      this.stopped = true;\n      if (this.reject) {\n        this.reject(new PollerStoppedError(\"This poller is already stopped\"));\n      }\n    }\n  }\n\n  /**\n   * Returns true if the poller is stopped.\n   */\n  public isStopped(): boolean {\n    return this.stopped;\n  }\n\n  /**\n   * Attempts to cancel the underlying operation.\n   *\n   * It only optionally receives an object with an abortSignal property, from \\@azure/abort-controller's AbortSignalLike.\n   *\n   * If it's called again before it finishes, it will throw an error.\n   *\n   * @param options - Optional properties passed to the operation's update method.\n   */\n  public cancelOperation(options: { abortSignal?: AbortSignalLike } = {}): Promise<void> {\n    if (!this.cancelPromise) {\n      this.cancelPromise = this.cancelOnce(options);\n    } else if (options.abortSignal) {\n      throw new Error(\"A cancel request is currently pending\");\n    }\n    return this.cancelPromise;\n  }\n\n  /**\n   * Returns the state of the operation.\n   *\n   * Even though TState will be the same type inside any of the methods of any extension of the Poller class,\n   * implementations of the pollers can customize what's shared with the public by writing their own\n   * version of the `getOperationState` method, and by defining two types, one representing the internal state of the poller\n   * and a public type representing a safe to share subset of the properties of the internal state.\n   * Their definition of getOperationState can then return their public type.\n   *\n   * Example:\n   *\n   * ```ts\n   * // Let's say we have our poller's operation state defined as:\n   * interface MyOperationState extends PollOperationState<ResultType> {\n   *   privateProperty?: string;\n   *   publicProperty?: string;\n   * }\n   *\n   * // To allow us to have a true separation of public and private state, we have to define another interface:\n   * interface PublicState extends PollOperationState<ResultType> {\n   *   publicProperty?: string;\n   * }\n   *\n   * // Then, we define our Poller as follows:\n   * export class MyPoller extends Poller<MyOperationState, ResultType> {\n   *   // ... More content is needed here ...\n   *\n   *   public getOperationState(): PublicState {\n   *     const state: PublicState = this.operation.state;\n   *     return {\n   *       // Properties from PollOperationState<TResult>\n   *       isStarted: state.isStarted,\n   *       isCompleted: state.isCompleted,\n   *       isCancelled: state.isCancelled,\n   *       error: state.error,\n   *       result: state.result,\n   *\n   *       // The only other property needed by PublicState.\n   *       publicProperty: state.publicProperty\n   *     }\n   *   }\n   * }\n   * ```\n   *\n   * You can see this in the tests of this repository, go to the file:\n   * `../test/utils/testPoller.ts`\n   * and look for the getOperationState implementation.\n   */\n  public getOperationState(): TState {\n    return this.operation.state;\n  }\n\n  /**\n   * Returns the result value of the operation,\n   * regardless of the state of the poller.\n   * It can return undefined or an incomplete form of the final TResult value\n   * depending on the implementation.\n   */\n  public getResult(): TResult | undefined {\n    const state: PollOperationState<TResult> = this.operation.state;\n    return state.result;\n  }\n\n  /**\n   * Returns a serialized version of the poller's operation\n   * by invoking the operation's toString method.\n   */\n  public toString(): string {\n    return this.operation.toString();\n  }\n}\n","// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { LroEngineOptions, PollerConfig } from \"./models\";\nimport { GenericPollOperation } from \"./operation\";\nimport { LongRunningOperation } from \"../../http/models\";\nimport { POLL_INTERVAL_IN_MS } from \"../../poller/constants\";\nimport { PollOperationState } from \"../pollOperation\";\nimport { Poller } from \"../poller\";\nimport { RestorableOperationState } from \"../../poller/models\";\nimport { deserializeState } from \"../../poller/operation\";\n\n/**\n * The LRO Engine, a class that performs polling.\n */\nexport class LroEngine<TResult, TState extends PollOperationState<TResult>> extends Poller<\n  TState,\n  TResult\n> {\n  private config: PollerConfig;\n\n  constructor(lro: LongRunningOperation<TResult>, options?: LroEngineOptions<TResult, TState>) {\n    const {\n      intervalInMs = POLL_INTERVAL_IN_MS,\n      resumeFrom,\n      resolveOnUnsuccessful = false,\n      isDone,\n      lroResourceLocationConfig,\n      processResult,\n      updateState,\n    } = options || {};\n    const state: RestorableOperationState<TState> = resumeFrom\n      ? deserializeState(resumeFrom)\n      : ({} as RestorableOperationState<TState>);\n    const operation = new GenericPollOperation(\n      state,\n      lro,\n      !resolveOnUnsuccessful,\n      lroResourceLocationConfig,\n      processResult,\n      updateState,\n      isDone\n    );\n    super(operation);\n    this.resolveOnUnsuccessful = resolveOnUnsuccessful;\n\n    this.config = { intervalInMs: intervalInMs };\n    operation.setPollerConfig(this.config);\n  }\n\n  /**\n   * The method used by the poller to wait before attempting to update its operation.\n   */\n  delay(): Promise<void> {\n    return new Promise((resolve) => setTimeout(() => resolve(), this.config.intervalInMs));\n  }\n}\n"],"names":["createClientLogger","createStateProxy","abortController","AbortController","delay"],"mappings":";;;;;;;;AAAA;AAKA;;;AAGG;AACI,MAAM,MAAM,GAAGA,2BAAkB,CAAC,UAAU,CAAC;;ACTpD;AACA;AAEA;;AAEG;AACI,MAAM,mBAAmB,GAAG,IAAI,CAAC;AACxC;;AAEG;AACI,MAAM,cAAc,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,QAAQ,CAAC;;ACVjE;AAcA;;AAEG;AACG,SAAU,gBAAgB,CAC9B,eAAuB,EAAA;IAEvB,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC;AAC1C,KAAA;AAAC,IAAA,OAAO,CAAC,EAAE;AACV,QAAA,MAAM,IAAI,KAAK,CAAC,sCAAsC,eAAe,CAAA,CAAE,CAAC,CAAC;AAC1E,KAAA;AACH,CAAC;AAED,SAAS,aAAa,CAAkB,MAIvC,EAAA;IACC,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;IACvD,OAAO,CAAC,KAAY,KAAI;AACtB,QAAA,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE;AAC3B,YAAA,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AAClC,YAAA,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC7B,SAAA;AACD,QAAA,MAAM,KAAK,CAAC;AACd,KAAC,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,cAAsB,EAAE,YAAoB,EAAA;IAC9E,IAAI,OAAO,GAAG,cAAc,CAAC;IAC7B,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AAC7B,QAAA,OAAO,GAAG,OAAO,GAAG,GAAG,CAAC;AACzB,KAAA;AACD,IAAA,OAAO,OAAO,GAAG,GAAG,GAAG,YAAY,CAAC;AACtC,CAAC;AAED,SAAS,aAAa,CAAC,GAAa,EAAA;AAIlC,IAAA,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;AAC1B,IAAA,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACpB,IAAI,MAAM,GAAG,GAAiB,CAAC;IAC/B,OAAO,MAAM,CAAC,UAAU,EAAE;AACxB,QAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAC3B,QAAA,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACnB,OAAO,GAAG,0BAA0B,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;AAC/D,KAAA;IACD,OAAO;QACL,IAAI;QACJ,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAA6B,MAS3D,EAAA;AACC,IAAA,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,GAC9F,MAAM,CAAC;AACT,IAAA,QAAQ,MAAM;QACZ,KAAK,WAAW,EAAE;AAChB,YAAA,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM;AACP,SAAA;QACD,KAAK,QAAQ,EAAE;YACb,MAAM,GAAG,GAAG,QAAQ,KAAR,IAAA,IAAA,QAAQ,uBAAR,QAAQ,CAAG,QAAQ,CAAC,CAAC;YACjC,IAAI,OAAO,GAAG,EAAE,CAAC;AACjB,YAAA,IAAI,GAAG,EAAE;gBACP,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;AAC7C,gBAAA,OAAO,GAAG,CAAK,EAAA,EAAA,IAAI,CAAK,EAAA,EAAA,OAAO,EAAE,CAAC;AACnC,aAAA;AACD,YAAA,MAAM,MAAM,GAAG,CAAwC,qCAAA,EAAA,OAAO,EAAE,CAAC;YACjE,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9C,YAAA,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC5B,YAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACvB,MAAM;AACP,SAAA;QACD,KAAK,UAAU,EAAE;AACf,YAAA,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC9B,MAAM;AACP,SAAA;AACF,KAAA;IACD,IACE,CAAA,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAG,QAAQ,EAAE,KAAK,CAAC;SACxB,MAAM,KAAK,SAAS;YACnB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,MAAM,CAAC,gBAAgB,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EACxF;AACA,QAAA,UAAU,CAAC,SAAS,CAClB,KAAK,EACL,WAAW,CAAC;YACV,QAAQ;YACR,KAAK;YACL,aAAa;AACd,SAAA,CAAC,CACH,CAAC;AACH,KAAA;AACH,CAAC;AAED,SAAS,WAAW,CAA6B,MAIhD,EAAA;IACC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;AAClD,IAAA,OAAO,aAAa,GAAG,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAI,QAA+B,CAAC;AAC3F,CAAC;AAED;;AAEG;AACI,eAAe,aAAa,CAA6B,MAW/D,EAAA;AACC,IAAA,MAAM,EACJ,IAAI,EACJ,UAAU,EACV,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,GACjB,GAAG,MAAM,CAAC;AACX,IAAA,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,EAAE,CAAC;AACjF,IAAA,IAAI,iBAAiB;QAAE,qBAAqB,KAAA,IAAA,IAArB,qBAAqB,KAArB,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qBAAqB,CAAG,iBAAiB,EAAE,KAAK,CAAC,CAAC;AACzE,IAAA,MAAM,MAAM,GAAG;QACb,QAAQ;QACR,iBAAiB;QACjB,gBAAgB;KACjB,CAAC;AACF,IAAA,MAAM,CAAC,OAAO,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC3C,IAAA,MAAM,MAAM,GAAG,kBAAkB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAC1E,IAAA,sBAAsB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC,CAAC;AACjG,IAAA,OAAO,KAAK,CAAC;AACf,CAAC;AAED,eAAe,mBAAmB,CAAuC,MAexE,EAAA;AAIC,IAAA,MAAM,EACJ,IAAI,EACJ,KAAK,EACL,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,OAAO,GACR,GAAG,MAAM,CAAC;AACX,IAAA,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,KAAK,CAC3D,aAAa,CAAC;QACZ,KAAK;QACL,UAAU;QACV,gBAAgB;AACjB,KAAA,CAAC,CACH,CAAC;IACF,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnD,IAAA,MAAM,CAAC,OAAO,CACZ,CAAA,8BAAA,EACE,KAAK,CAAC,MAAM,CAAC,iBACf,CAAA,sBAAA,EAAyB,MAAM,CAAA,oBAAA,EAC7B,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAChD,CAAE,CAAA,CACH,CAAC;IACF,IAAI,MAAM,KAAK,WAAW,EAAE;QAC1B,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC9D,IAAI,gBAAgB,KAAK,SAAS,EAAE;YAClC,OAAO;AACL,gBAAA,QAAQ,EAAE,MAAM,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAC1C,aAAa,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,CAAC,CACvD;gBACD,MAAM;aACP,CAAC;AACH,SAAA;AACF,KAAA;AACD,IAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;AAC9B,CAAC;AAED;AACO,eAAe,aAAa,CAAuC,MA0BzE,EAAA;AACC,IAAA,MAAM,EACJ,IAAI,EACJ,KAAK,EACL,UAAU,EACV,OAAO,EACP,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,MAAM,EACN,gBAAgB,GACjB,GAAG,MAAM,CAAC;AACX,IAAA,MAAM,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3C,IAAI,iBAAiB,KAAK,SAAS,EAAE;QACnC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,mBAAmB,CAAC;YACrD,IAAI;YACJ,kBAAkB;YAClB,KAAK;YACL,UAAU;YACV,iBAAiB;YACjB,mBAAmB;YACnB,gBAAgB;YAChB,OAAO;AACR,SAAA,CAAC,CAAC;AACH,QAAA,sBAAsB,CAAC;YACrB,MAAM;YACN,QAAQ;YACR,KAAK;YACL,UAAU;YACV,MAAM;YACN,aAAa;YACb,QAAQ;YACR,gBAAgB;AACjB,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACpC,MAAM,YAAY,GAAG,kBAAkB,KAAlB,IAAA,IAAA,kBAAkB,uBAAlB,kBAAkB,CAAG,QAAQ,CAAC,CAAC;AACpD,YAAA,IAAI,YAAY;gBAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;AACzC,YAAA,MAAM,QAAQ,GAAG,oBAAoB,KAAA,IAAA,IAApB,oBAAoB,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAApB,oBAAoB,CAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;YACzD,IAAI,QAAQ,KAAK,SAAS,EAAE;AAC1B,gBAAA,MAAM,SAAS,GAAG,iBAAiB,KAAK,QAAQ,CAAC;AACjD,gBAAA,KAAK,CAAC,MAAM,CAAC,iBAAiB,GAAG,QAAQ,CAAC;gBAC1C,qBAAqB,KAAA,IAAA,IAArB,qBAAqB,KAArB,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qBAAqB,CAAG,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC9C,aAAA;;gBAAM,qBAAqB,KAAA,IAAA,IAArB,qBAAqB,KAArB,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,qBAAqB,CAAG,iBAAiB,EAAE,KAAK,CAAC,CAAC;AAC1D,SAAA;QACD,WAAW,KAAA,IAAA,IAAX,WAAW,KAAX,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,WAAW,CAAG,KAAK,EAAE,QAAQ,CAAC,CAAC;AAChC,KAAA;AACH;;AChTA;AAsBA,SAAS,8BAA8B,CAAC,MAGvC,EAAA;AACC,IAAA,MAAM,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;AAC1D,IAAA,OAAO,iBAAiB,KAAjB,IAAA,IAAA,iBAAiB,cAAjB,iBAAiB,GAAI,mBAAmB,CAAC;AAClD,CAAC;AAED,SAAS,iBAAiB,CAAC,WAAwB,EAAA;AACjD,IAAA,OAAO,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,0BAA0B,CAAC,WAAwB,EAAA;AAC1D,IAAA,OAAO,WAAW,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,4BAA4B,CAAC,WAAwB,EAAA;AAC5D,IAAA,OAAO,WAAW,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,oBAAoB,CAAC,MAK7B,EAAA;IACC,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE,GAAG,MAAM,CAAC;AAChF,IAAA,QAAQ,aAAa;QACnB,KAAK,KAAK,EAAE;AACV,YAAA,OAAO,WAAW,CAAC;AACpB,SAAA;QACD,KAAK,QAAQ,EAAE;AACb,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;AACD,QAAA,SAAS;AACP,YAAA,QAAQ,sBAAsB;gBAC5B,KAAK,uBAAuB,EAAE;AAC5B,oBAAA,OAAO,SAAS,CAAC;AAClB,iBAAA;gBACD,KAAK,cAAc,EAAE;AACnB,oBAAA,OAAO,WAAW,CAAC;AACpB,iBAAA;AACD,gBAAA,KAAK,UAAU,CAAC;AAChB,gBAAA,SAAS;AACP,oBAAA,OAAO,QAAQ,CAAC;AACjB,iBAAA;AACF,aAAA;AACF,SAAA;AACF,KAAA;AACH,CAAC;AAEK,SAAU,YAAY,CAAC,MAK5B,EAAA;IACC,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,sBAAsB,EAAE,GAAG,MAAM,CAAC;AACnF,IAAA,MAAM,iBAAiB,GAAG,0BAA0B,CAAC,WAAW,CAAC,CAAC;AAClE,IAAA,MAAM,mBAAmB,GAAG,4BAA4B,CAAC,WAAW,CAAC,CAAC;IACtE,MAAM,UAAU,GAAG,8BAA8B,CAAC,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAC9F,IAAA,MAAM,QAAQ,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,uBAAuB,GAAG,aAAa,KAAb,IAAA,IAAA,aAAa,uBAAb,aAAa,CAAE,iBAAiB,EAAE,CAAC;IACnE,IAAI,UAAU,KAAK,SAAS,EAAE;QAC5B,OAAO;AACL,YAAA,IAAI,EAAE,mBAAmB;AACzB,YAAA,iBAAiB,EAAE,UAAU;YAC7B,gBAAgB,EAAE,oBAAoB,CAAC;AACrC,gBAAA,aAAa,EAAE,uBAAuB;gBACtC,QAAQ;gBACR,WAAW;gBACX,sBAAsB;aACvB,CAAC;SACH,CAAC;AACH,KAAA;SAAM,IAAI,QAAQ,KAAK,SAAS,EAAE;QACjC,OAAO;AACL,YAAA,IAAI,EAAE,kBAAkB;AACxB,YAAA,iBAAiB,EAAE,QAAQ;SAC5B,CAAC;AACH,KAAA;AAAM,SAAA,IAAI,uBAAuB,KAAK,KAAK,IAAI,WAAW,EAAE;QAC3D,OAAO;AACL,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,iBAAiB,EAAE,WAAW;SAC/B,CAAC;AACH,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,SAAS,CAAC;AAClB,KAAA;AACH,CAAC;AAED,SAAS,eAAe,CAAC,MAA+C,EAAA;AACtE,IAAA,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACtC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS,EAAE;AACtD,QAAA,MAAM,IAAI,KAAK,CACb,oGAAoG,MAAM,CAAA,oIAAA,CAAsI,CACjP,CAAC;AACH,KAAA;IACD,QAAQ,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,iBAAiB,EAAE;AACjC,QAAA,KAAK,SAAS;AACZ,YAAA,OAAO,iBAAiB,CAAC,UAAU,CAAC,CAAC;AACvC,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,WAAW,CAAC;AACrB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,QAAQ,CAAC;AAClB,QAAA,KAAK,SAAS,CAAC;AACf,QAAA,KAAK,UAAU,CAAC;AAChB,QAAA,KAAK,SAAS,CAAC;AACf,QAAA,KAAK,WAAW,CAAC;AACjB,QAAA,KAAK,YAAY;AACf,YAAA,OAAO,SAAS,CAAC;AACnB,QAAA,KAAK,UAAU,CAAC;AAChB,QAAA,KAAK,WAAW;AACd,YAAA,OAAO,UAAU,CAAC;AACpB,QAAA,SAAS;AACP,YAAA,MAAM,CAAC,OAAO,CAAC,uCAAuC,MAAM,CAAA,CAAE,CAAC,CAAC;AAChE,YAAA,OAAO,MAAyB,CAAC;AAClC,SAAA;AACF,KAAA;AACH,CAAC;AAED,SAAS,SAAS,CAAC,WAAwB,EAAA;;IACzC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAA,EAAA,GAAC,WAAW,CAAC,IAAqB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;AAC5D,IAAA,OAAO,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,oBAAoB,CAAC,WAAwB,EAAA;;AACpD,IAAA,MAAM,EAAE,UAAU,EAAE,iBAAiB,EAAE,GAAG,CAAC,EAAA,GAAA,WAAW,CAAC,IAAqB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,EAAE,CAAC;AACnF,IAAA,MAAM,MAAM,GAAG,CAAA,EAAA,GAAA,UAAU,KAAV,IAAA,IAAA,UAAU,KAAV,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,UAAU,CAAE,iBAAiB,MAAI,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,EAAA,GAAA,iBAAiB,CAAC;AAClE,IAAA,OAAO,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,UAAU,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAkB,EAAA;IAC3C,IAAI,UAAU,KAAK,GAAG,EAAE;AACtB,QAAA,OAAO,SAAS,CAAC;AAClB,KAAA;SAAM,IAAI,UAAU,GAAG,GAAG,EAAE;AAC3B,QAAA,OAAO,WAAW,CAAC;AACpB,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,QAAQ,CAAC;AACjB,KAAA;AACH,CAAC;AAEe,SAAA,eAAe,CAAI,EAAE,WAAW,EAAkB,EAAA;IAChE,MAAM,UAAU,GAAuB,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1E,IAAI,UAAU,KAAK,SAAS,EAAE;;AAE5B,QAAA,MAAM,mBAAmB,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QACjD,OAAO,KAAK,CAAC,mBAAmB,CAAC;cAC7B,gCAAgC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;AACxD,cAAE,mBAAmB,GAAG,IAAI,CAAC;AAChC,KAAA;AACD,IAAA,OAAO,SAAS,CAAC;AACnB,CAAC;AAEK,SAAU,oBAAoB,CAAI,QAAwB,EAAA;AAC9D,IAAA,MAAM,KAAK,GAAI,QAAQ,CAAC,YAA6B,CAAC,KAAK,CAAC;IAC5D,IAAI,CAAC,KAAK,EAAE;AACV,QAAA,MAAM,CAAC,OAAO,CACZ,CAAA,uFAAA,CAAyF,CAC1F,CAAC;QACF,OAAO;AACR,KAAA;IACD,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;AACjC,QAAA,MAAM,CAAC,OAAO,CACZ,CAAA,+GAAA,CAAiH,CAClH,CAAC;QACF,OAAO;AACR,KAAA;AACD,IAAA,OAAO,KAAiB,CAAC;AAC3B,CAAC;AAED,SAAS,gCAAgC,CAAC,cAAoB,EAAA;AAC5D,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;AACjD,IAAA,MAAM,cAAc,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC;IAChD,IAAI,OAAO,GAAG,cAAc,EAAE;QAC5B,OAAO,cAAc,GAAG,OAAO,CAAC;AACjC,KAAA;AACD,IAAA,OAAO,SAAS,CAAC;AACnB,CAAC;AAEK,SAAU,4BAA4B,CAAS,MAIpD,EAAA;IACC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAAC;AACtD,IAAA,SAAS,MAAM,GAAA;;QACb,MAAM,IAAI,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,MAAM,CAAC,CAAC;AAC7C,QAAA,QAAQ,IAAI;AACV,YAAA,KAAK,SAAS;gBACZ,OAAO,iBAAiB,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAC5D,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC7C,YAAA;AACE,gBAAA,OAAO,SAAS,CAAC;AACpB,SAAA;KACF;AACD,IAAA,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC;AACxB,IAAA,OAAO,MAAM,KAAK,SAAS,IAAI,iBAAiB,KAAK,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;AACxF,CAAC;AAED;;AAEG;AACI,eAAe,iBAAiB,CAAkB,MAMxD,EAAA;AACC,IAAA,MAAM,EAAE,UAAU,EAAE,sBAAsB,EAAE,aAAa,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,MAAM,CAAC;AAC5F,IAAA,OAAO,aAAa,CAAC;QACnB,IAAI,EAAE,YAAW;AACf,YAAA,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,sBAAsB;AACvB,aAAA,CAAC,CAAC;YACH,OACE,MAAA,CAAA,MAAA,CAAA,EAAA,QAAQ,EACR,iBAAiB,EAAE,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,iBAAiB,EAC5C,gBAAgB,EAAE,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,gBAAgB,EACvC,GAAC,CAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,IAAI,IAAG,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAC3D,CAAA;SACH;QACD,UAAU;AACV,QAAA,aAAa,EAAE,aAAa;AAC1B,cAAE,CAAC,EAAE,YAAY,EAAE,EAAE,KAAK,KAAK,aAAa,CAAC,YAAY,EAAE,KAAK,CAAC;cAC/D,CAAC,EAAE,YAAY,EAAE,KAAK,YAAuB;AACjD,QAAA,kBAAkB,EAAE,4BAA4B;QAChD,gBAAgB;AACjB,KAAA,CAAC,CAAC;AACL,CAAC;SAEe,oBAAoB,CAClC,EAAE,WAAW,EAAe,EAC5B,KAAuC,EAAA;;IAEvC,MAAM,IAAI,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,MAAM,CAAC,CAAC;AAC7C,IAAA,QAAQ,IAAI;QACV,KAAK,mBAAmB,EAAE;AACxB,YAAA,OAAO,8BAA8B,CAAC;AACpC,gBAAA,iBAAiB,EAAE,0BAA0B,CAAC,WAAW,CAAC;AAC1D,gBAAA,mBAAmB,EAAE,4BAA4B,CAAC,WAAW,CAAC;AAC/D,aAAA,CAAC,CAAC;AACJ,SAAA;QACD,KAAK,kBAAkB,EAAE;AACvB,YAAA,OAAO,iBAAiB,CAAC,WAAW,CAAC,CAAC;AACvC,SAAA;AACD,QAAA,KAAK,MAAM,CAAC;AACZ,QAAA,SAAS;AACP,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;AACF,KAAA;AACH,CAAC;SAEe,kBAAkB,CAChC,EAAE,WAAW,EAAe,EAC5B,KAAuC,EAAA;;IAEvC,MAAM,IAAI,GAAG,CAAA,EAAA,GAAA,KAAK,CAAC,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAG,MAAM,CAAC,CAAC;AAC7C,IAAA,QAAQ,IAAI;QACV,KAAK,mBAAmB,EAAE;AACxB,YAAA,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC;AAC/B,SAAA;QACD,KAAK,kBAAkB,EAAE;AACvB,YAAA,OAAO,iBAAiB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAClD,SAAA;QACD,KAAK,MAAM,EAAE;AACX,YAAA,OAAO,oBAAoB,CAAC,WAAW,CAAC,CAAC;AAC1C,SAAA;AACD,QAAA;AACE,YAAA,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,CAAA,CAAE,CAAC,CAAC;AACzE,KAAA;AACH,CAAC;SAEe,mBAAmB,CACjC,EAAE,YAAY,EAAe,EAC7B,KAAuC,EAAA;AAEvC,IAAA,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE;AACpC,QAAA,MAAM,gBAAgB,GAAI,YAA8C,CAAC,gBAAgB,CAAC;QAC1F,IAAI,gBAAgB,KAAK,SAAS,EAAE;AAClC,YAAA,KAAK,CAAC,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;AAClD,SAAA;AACF,KAAA;AACD,IAAA,OAAO,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC;AACvC,CAAC;AAEK,SAAU,gBAAgB,CAAC,CAAQ,EAAA;AACvC,IAAA,OAAO,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;AAChC,CAAC;AAED;AACO,eAAe,iBAAiB,CAAkB,MAUxD,EAAA;AACC,IAAA,MAAM,EACJ,GAAG,EACH,UAAU,EACV,OAAO,EACP,aAAa,EACb,WAAW,EACX,QAAQ,EACR,KAAK,EACL,gBAAgB,GACjB,GAAG,MAAM,CAAC;AACX,IAAA,OAAO,aAAa,CAAC;QACnB,KAAK;QACL,UAAU;QACV,QAAQ;AACR,QAAA,aAAa,EAAE,aAAa;AAC1B,cAAE,CAAC,EAAE,YAAY,EAAE,EAAE,UAAU,KAAK,aAAa,CAAC,YAAY,EAAE,UAAU,CAAC;cACzE,CAAC,EAAE,YAAY,EAAE,KAAK,YAAuB;AACjD,QAAA,QAAQ,EAAE,oBAAoB;QAC9B,WAAW;AACX,QAAA,kBAAkB,EAAE,eAAe;QACnC,oBAAoB;QACpB,kBAAkB;QAClB,gBAAgB;QAChB,mBAAmB;QACnB,OAAO;AACP;;;AAGG;AACH,QAAA,IAAI,EAAE,OAAO,QAAQ,EAAE,YAAY,KAAK,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,YAAY,CAAC;QACnF,gBAAgB;AACjB,KAAA,CAAC,CAAC;AACL;;ACxWA;AAiBA,MAAMC,kBAAgB,GAGlB,OAAO;AACT;;;;AAIG;AACH,IAAA,SAAS,EAAE,CAAC,MAAM,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAU,CAAA;AAC7D,IAAA,WAAW,EAAE,CAAC,KAAK,MAAM,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;AACnD,IAAA,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,MAAM,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACjD,IAAA,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACrD,IAAA,UAAU,EAAE,CAAC,KAAK,MAAM,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;AACjD,IAAA,YAAY,EAAE,CAAC,KAAK,MAAM,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC;AACrD,IAAA,SAAS,EAAE,CAAC,KAAK,MAAM,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC;IAE/C,QAAQ,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;IAChC,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM;IAClC,UAAU,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,KAAK,UAAU;IAClD,QAAQ,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,KAAK,QAAQ;IAC9C,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,KAAK,SAAS;IAChD,WAAW,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,KAAK,WAAW;AACrD,CAAA,CAAC,CAAC;AAEH;;AAEG;AACG,SAAU,iBAAiB,CAC/B,MAAmD,EAAA;AAKnD,IAAA,MAAM,EACJ,oBAAoB,EACpB,4BAA4B,EAC5B,yBAAyB,EACzB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,QAAQ,EACR,qBAAqB,GACtB,GAAG,MAAM,CAAC;IACX,OAAO,OACL,EAAE,IAAI,EAAE,IAAI,EAA2D,EACvE,OAAyD,KACvD;AACF,QAAA,MAAM,EACJ,aAAa,EACb,WAAW,EACX,qBAAqB,EAAE,6BAA6B,EACpD,YAAY,GAAG,mBAAmB,EAClC,WAAW,GACZ,GAAG,OAAO,IAAI,EAAE,CAAC;AAClB,QAAA,MAAM,UAAU,GAAGA,kBAAgB,EAAmB,CAAC;QACvD,MAAM,qBAAqB,GAAG,6BAA6B;cACvD,CAAC,MAAK;gBACJ,IAAI,MAAM,GAAG,KAAK,CAAC;AACnB,gBAAA,OAAO,CAAC,iBAAyB,EAAE,SAAkB,KAAI;AACvD,oBAAA,IAAI,SAAS;wBAAE,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;AAC3D,yBAAA,IAAI,CAAC,MAAM;wBAAE,6BAA6B,CAAC,iBAAiB,CAAC,CAAC;oBACnE,MAAM,GAAG,IAAI,CAAC;AAChB,iBAAC,CAAC;AACJ,aAAC,GAAG;cACJ,SAAS,CAAC;QACd,MAAM,KAAK,GAAqC,WAAW;AACzD,cAAE,gBAAgB,CAAC,WAAW,CAAC;cAC7B,MAAM,aAAa,CAAC;gBAClB,IAAI;gBACJ,UAAU;gBACV,aAAa;AACb,gBAAA,kBAAkB,EAAE,4BAA4B;gBAChD,qBAAqB;gBACrB,gBAAgB,EAAE,CAAC,qBAAqB;AACzC,aAAA,CAAC,CAAC;AACP,QAAA,IAAI,aAA2C,CAAC;AAChD,QAAA,MAAMC,iBAAe,GAAG,IAAIC,+BAAe,EAAE,CAAC;AAG9C,QAAA,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;QAC5C,MAAM,oBAAoB,GAAG,YAA2B,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1F,MAAM,YAAY,GAAG,wBAAwB,CAAC;QAC9C,IAAI,uBAAuB,GAAG,YAAY,CAAC;AAE3C,QAAA,MAAM,MAAM,GAAsC;AAChD,YAAA,iBAAiB,EAAE,MAAM,KAAK;AAC9B,YAAA,SAAS,EAAE,MAAM,KAAK,CAAC,MAAM;AAC7B,YAAA,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;AACxE,YAAA,SAAS,EAAE,MAAM,aAAa,KAAK,SAAS;YAC5C,WAAW,EAAE,MAAK;gBAChBD,iBAAe,CAAC,KAAK,EAAE,CAAC;aACzB;AACD,YAAA,QAAQ,EAAE,MACR,IAAI,CAAC,SAAS,CAAC;gBACb,KAAK;aACN,CAAC;AACJ,YAAA,UAAU,EAAE,CAAC,QAAiC,KAAI;AAChD,gBAAA,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC;AACnB,gBAAA,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC1B,OAAO,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aACjC;AACD,YAAA,aAAa,EAAE,CAAC,WAA+C,MAC5D,aAAa,KAAA,IAAA,IAAb,aAAa,KAAA,KAAA,CAAA,GAAb,aAAa,IAAb,aAAa,GAAK,CAAC,YAAW;gBAC7B,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,WAAW,IAAI,EAAE,CAAC;AAC5D,gBAAA,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB;sBAC5C,IAAIC,+BAAe,CAAC,CAAC,gBAAgB,EAAED,iBAAe,CAAC,MAAM,CAAC,CAAC;sBAC/DA,iBAAe,CAAC;AACpB,gBAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;oBACpB,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AACnC,oBAAA,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;wBACvB,MAAME,cAAK,CAAC,uBAAuB,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;wBACtD,MAAM,MAAM,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;AACpC,qBAAA;AACF,iBAAA;AACD,gBAAA,IAAI,qBAAqB,EAAE;AACzB,oBAAA,OAAO,MAAM,CAAC,SAAS,EAAa,CAAC;AACtC,iBAAA;AAAM,qBAAA;oBACL,QAAQ,KAAK,CAAC,MAAM;AAClB,wBAAA,KAAK,WAAW;AACd,4BAAA,OAAO,MAAM,CAAC,SAAS,EAAa,CAAC;AACvC,wBAAA,KAAK,UAAU;AACb,4BAAA,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,wBAAA,KAAK,QAAQ;4BACX,MAAM,KAAK,CAAC,KAAK,CAAC;AACpB,wBAAA,KAAK,YAAY,CAAC;AAClB,wBAAA,KAAK,SAAS;AACZ,4BAAA,MAAM,IAAI,KAAK,CAAC,CAAA,+CAAA,CAAiD,CAAC,CAAC;AACtE,qBAAA;AACF,iBAAA;AACH,aAAC,GAAG,CAAC,OAAO,CAAC,MAAK;gBAChB,aAAa,GAAG,SAAS,CAAC;AAC5B,aAAC,CAAC,CAAC,CAAA;YACL,MAAM,IAAI,CAAC,WAA+C,EAAA;AACxD,gBAAA,IAAI,qBAAqB,EAAE;oBACzB,IAAI,MAAM,CAAC,MAAM,EAAE;wBAAE,OAAO;AAC7B,iBAAA;AAAM,qBAAA;oBACL,QAAQ,KAAK,CAAC,MAAM;AAClB,wBAAA,KAAK,WAAW;4BACd,OAAO;AACT,wBAAA,KAAK,UAAU;AACb,4BAAA,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,wBAAA,KAAK,QAAQ;4BACX,MAAM,KAAK,CAAC,KAAK,CAAC;AACrB,qBAAA;AACF,iBAAA;AACD,gBAAA,MAAM,aAAa,CAAC;oBAClB,IAAI;oBACJ,KAAK;oBACL,UAAU;oBACV,oBAAoB;oBACpB,gBAAgB;oBAChB,qBAAqB;oBACrB,kBAAkB;AAClB,oBAAA,kBAAkB,EAAE,yBAAyB;oBAC7C,mBAAmB;oBACnB,aAAa;oBACb,QAAQ;oBACR,WAAW;AACX,oBAAA,OAAO,EAAE,WAAW;AACpB,oBAAA,QAAQ,EAAE,CAAC,gBAAgB,KAAI;wBAC7B,uBAAuB,GAAG,gBAAgB,CAAC;qBAC5C;oBACD,gBAAgB,EAAE,CAAC,qBAAqB;AACzC,iBAAA,CAAC,CAAC;gBACH,MAAM,oBAAoB,EAAE,CAAC;gBAC7B,IAAI,CAAC,qBAAqB,EAAE;oBAC1B,QAAQ,KAAK,CAAC,MAAM;AAClB,wBAAA,KAAK,UAAU;AACb,4BAAA,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;AAChC,wBAAA,KAAK,QAAQ;4BACX,MAAM,KAAK,CAAC,KAAK,CAAC;AACrB,qBAAA;AACF,iBAAA;aACF;SACF,CAAC;AACF,QAAA,OAAO,MAAM,CAAC;AAChB,KAAC,CAAC;AACJ;;ACnMA;AAkBA;;;;;AAKG;AACI,eAAe,gBAAgB,CACpC,GAAyB,EACzB,OAAkD,EAAA;IAElD,MAAM,EACJ,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,qBAAqB,GAAG,KAAK,GAC9B,GAAG,OAAO,IAAI,EAAE,CAAC;AAClB,IAAA,OAAO,iBAAiB,CAA+B;QACrD,4BAA4B;AAC5B,QAAA,yBAAyB,EAAE,kBAAkB;QAC7C,gBAAgB;QAChB,oBAAoB;QACpB,mBAAmB;AACnB,QAAA,kBAAkB,EAAE,eAAe;AACnC,QAAA,QAAQ,EAAE,oBAAoB;QAC9B,qBAAqB;AACtB,KAAA,CAAC,CACA;QACE,IAAI,EAAE,YAAW;AACf,YAAA,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,kBAAkB,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,YAAY,CAAC;gBAC1B,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,aAAa,EAAE,GAAG,CAAC,aAAa;gBAChC,sBAAsB;AACvB,aAAA,CAAC,CAAC;YACH,OACE,MAAA,CAAA,MAAA,CAAA,EAAA,QAAQ,EACR,iBAAiB,EAAE,MAAM,KAAN,IAAA,IAAA,MAAM,KAAN,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,MAAM,CAAE,iBAAiB,EAC5C,gBAAgB,EAAE,MAAM,KAAA,IAAA,IAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,gBAAgB,EACvC,GAAC,CAAA,MAAM,aAAN,MAAM,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAN,MAAM,CAAE,IAAI,IAAG,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,EAC3D,CAAA;SACH;QACD,IAAI,EAAE,GAAG,CAAC,eAAe;KAC1B,EACD;QACE,YAAY;QACZ,qBAAqB;QACrB,WAAW;QACX,WAAW;AACX,QAAA,aAAa,EAAE,aAAa;AAC1B,cAAE,CAAC,EAAE,YAAY,EAAE,EAAE,KAAK,KAAK,aAAa,CAAC,YAAY,EAAE,KAAK,CAAC;cAC/D,CAAC,EAAE,YAAY,EAAE,KAAK,YAAuB;AAClD,KAAA,CACF,CAAC;AACJ;;AC3EA;AAWA,MAAM,gBAAgB,GAGlB,OAAO;AACT,IAAA,SAAS,EAAE,CAAC,MAAM,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAU,CAAA;AAC3D,IAAA,WAAW,EAAE,CAAC,KAAK,MAAM,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;AAClD,IAAA,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,MAAM,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;AACjD,IAAA,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,MAAM,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AACrD,IAAA,UAAU,EAAE,CAAC,KAAK,MAAM,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;AAC/C,IAAA,YAAY,EAAE,CAAC,KAAK,MAAM,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;IACnD,SAAS,EAAE,MAAK;;KAEf;IAED,QAAQ,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;IAChC,SAAS,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM;IAClC,UAAU,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,WAAW;IAC1C,QAAQ,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK;IAClC,SAAS,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS;IACvC,WAAW,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;AACzF,CAAA,CAAC,CAAC;MAEU,oBAAoB,CAAA;AAK/B,IAAA,WAAA,CACS,KAAuC,EACtC,GAAyB,EACzB,gBAAyB,EACzB,yBAAqD,EACrD,aAA2D,EAC3D,WAAgE,EAChE,MAA0D,EAAA;QAN3D,IAAK,CAAA,KAAA,GAAL,KAAK,CAAkC;QACtC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAsB;QACzB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAS;QACzB,IAAyB,CAAA,yBAAA,GAAzB,yBAAyB,CAA4B;QACrD,IAAa,CAAA,aAAA,GAAb,aAAa,CAA8C;QAC3D,IAAW,CAAA,WAAA,GAAX,WAAW,CAAqD;QAChE,IAAM,CAAA,MAAA,GAAN,MAAM,CAAoD;KAChE;AAEG,IAAA,eAAe,CAAC,YAA0B,EAAA;AAC/C,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;KAClC;IAED,MAAM,MAAM,CAAC,OAGZ,EAAA;;AACC,QAAA,MAAM,UAAU,GAAG,gBAAgB,EAAmB,CAAC;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;YACzB,IAAI,CAAC,KAAK,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACL,IAAI,CAAC,KAAK,CACV,GAAC,MAAM,iBAAiB,CAAC;gBAC1B,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,UAAU;gBACV,sBAAsB,EAAE,IAAI,CAAC,yBAAyB;gBACtD,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;aACxC,CAAC,EACH,CAAC;AACH,SAAA;AACD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACrC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AAE3B,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;AAC7D,YAAA,MAAM,iBAAiB,CAAC;gBACtB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,UAAU;gBACV,aAAa,EAAE,IAAI,CAAC,aAAa;AACjC,gBAAA,WAAW,EAAE,WAAW;AACtB,sBAAE,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,KAAK,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC;AAC7D,sBAAE,SAAS;AACb,gBAAA,MAAM,EAAE,MAAM;AACZ,sBAAE,CAAC,EAAE,YAAY,EAAE,EAAE,KAAK,KAAK,MAAM,CAAC,YAAuB,EAAE,KAAK,CAAC;AACrE,sBAAE,SAAS;gBACb,OAAO;AACP,gBAAA,QAAQ,EAAE,CAAC,YAAY,KAAI;AACzB,oBAAA,IAAI,CAAC,YAAa,CAAC,YAAY,GAAG,YAAY,CAAC;iBAChD;gBACD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;AACxC,aAAA,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,CAAA,EAAA,GAAA,OAAO,KAAA,IAAA,IAAP,OAAO,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAP,OAAO,CAAE,YAAY,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,OAAA,EAAG,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,MAAM,GAAA;AACV,QAAA,MAAM,CAAC,KAAK,CAAC,+DAA+D,CAAC,CAAC;AAC9E,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;AAEG;IACI,QAAQ,GAAA;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,KAAK,EAAE,IAAI,CAAC,KAAK;AAClB,SAAA,CAAC,CAAC;KACJ;AACF;;AC5GD;AACA;AAcA;;;AAGG;AACG,MAAO,kBAAmB,SAAQ,KAAK,CAAA;AAC3C,IAAA,WAAA,CAAY,OAAe,EAAA;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;AACf,QAAA,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,kBAAkB,CAAC,SAAS,CAAC,CAAC;KAC3D;AACF,CAAA;AAED;;;AAGG;AACG,MAAO,oBAAqB,SAAQ,KAAK,CAAA;AAC7C,IAAA,WAAA,CAAY,OAAe,EAAA;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;AACf,QAAA,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;KAC7D;AACF,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DG;AACH;MACsB,MAAM,CAAA;AAmB1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgEG;AACH,IAAA,WAAA,CAAY,SAAyC,EAAA;;QAhF3C,IAAqB,CAAA,qBAAA,GAAY,KAAK,CAAC;QACzC,IAAO,CAAA,OAAA,GAAY,IAAI,CAAC;QAMxB,IAAqB,CAAA,qBAAA,GAAmC,EAAE,CAAC;AA0EjE,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CACxB,CACE,OAAkC,EAClC,MAA0E,KACxE;AACF,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,SAAC,CACF,CAAC;;;;AAIF,QAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAK;;AAExB,SAAC,CAAC,CAAC;KACJ;AAyBD;;;AAGG;AACK,IAAA,MAAM,YAAY,CAAC,WAAA,GAAiD,EAAE,EAAA;QAC5E,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACtB,SAAA;QACD,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;AAC1C,YAAA,MAAM,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC7B,YAAA,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACpB,SAAA;KACF;AAED;;;;;;;AAOG;AACK,IAAA,MAAM,QAAQ,CAAC,OAAA,GAA6C,EAAE,EAAA;AACpE,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;YAClB,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;gBAC3C,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3C,aAAA,CAAC,CAAC;AACJ,SAAA;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AAED;;;;;;;AAOG;AACK,IAAA,YAAY,CAAC,KAAa,EAAA;AAChC,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,qBAAqB,EAAE;YACjD,QAAQ,CAAC,KAAK,CAAC,CAAC;AACjB,SAAA;KACF;AAED;;AAEG;AACK,IAAA,MAAM,UAAU,CAAC,OAAA,GAA6C,EAAE,EAAA;AACtE,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KACvD;AAED;;;;;;;AAOG;IACI,IAAI,CAAC,UAA6C,EAAE,EAAA;AACzD,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC9C,MAAM,oBAAoB,GAAG,MAAW;AACtC,gBAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;AACnC,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1F,SAAA;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IAEO,mBAAmB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE;AAC9B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;gBAC/B,IAAI,CAAC,MAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzC,gBAAA,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;AAClC,aAAA;AACF,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE;AACpC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC/B,gBAAA,MAAM,KAAK,GAAG,IAAI,oBAAoB,CAAC,wBAAwB,CAAC,CAAC;AACjE,gBAAA,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC,CAAC;AACpB,gBAAA,MAAM,KAAK,CAAC;AACb,aAAA;AACF,SAAA;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,EAAE;;;;;;YAMjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAa,CAAC,CAAC;AAC3C,SAAA;KACF;AAED;;AAEG;AACI,IAAA,MAAM,aAAa,CACxB,WAAA,GAAiD,EAAE,EAAA;QAEnD,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACnD,SAAA;;;QAGD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED;;;;;AAKG;AACI,IAAA,UAAU,CAAC,QAAiC,EAAA;AACjD,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC1C,QAAA,OAAO,MAAW;AAChB,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC;AACxF,SAAC,CAAC;KACH;AAED;;AAEG;IACI,MAAM,GAAA;AACX,QAAA,MAAM,KAAK,GAAgC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AAChE,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;KACvE;AAED;;AAEG;IACI,WAAW,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,gCAAgC,CAAC,CAAC,CAAC;AACvE,aAAA;AACF,SAAA;KACF;AAED;;AAEG;IACI,SAAS,GAAA;QACd,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;AAED;;;;;;;;AAQG;IACI,eAAe,CAAC,UAA6C,EAAE,EAAA;AACpE,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC/C,SAAA;aAAM,IAAI,OAAO,CAAC,WAAW,EAAE;AAC9B,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAC1D,SAAA;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CG;IACI,iBAAiB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;KAC7B;AAED;;;;;AAKG;IACI,SAAS,GAAA;AACd,QAAA,MAAM,KAAK,GAAgC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QAChE,OAAO,KAAK,CAAC,MAAM,CAAC;KACrB;AAED;;;AAGG;IACI,QAAQ,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;KAClC;AACF;;ACpdD;AAYA;;AAEG;AACG,MAAO,SAA+D,SAAQ,MAGnF,CAAA;IAGC,WAAY,CAAA,GAAkC,EAAE,OAA2C,EAAA;QACzF,MAAM,EACJ,YAAY,GAAG,mBAAmB,EAClC,UAAU,EACV,qBAAqB,GAAG,KAAK,EAC7B,MAAM,EACN,yBAAyB,EACzB,aAAa,EACb,WAAW,GACZ,GAAG,OAAO,IAAI,EAAE,CAAC;QAClB,MAAM,KAAK,GAAqC,UAAU;AACxD,cAAE,gBAAgB,CAAC,UAAU,CAAC;cAC3B,EAAuC,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,oBAAoB,CACxC,KAAK,EACL,GAAG,EACH,CAAC,qBAAqB,EACtB,yBAAyB,EACzB,aAAa,EACb,WAAW,EACX,MAAM,CACP,CAAC;QACF,KAAK,CAAC,SAAS,CAAC,CAAC;AACjB,QAAA,IAAI,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QAEnD,IAAI,CAAC,MAAM,GAAG,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AAC7C,QAAA,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACxC;AAED;;AAEG;IACH,KAAK,GAAA;QACH,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,UAAU,CAAC,MAAM,OAAO,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;KACxF;AACF;;;;;;;;"}