@adaline/gateway 1.12.0 → 1.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors/errors.ts","../src/plugins/http-client/http-client.error.ts","../src/plugins/telemetry/telemetry.manager.ts","../src/plugins/http-client/isomorphic.http-client.ts","../src/plugins/queue/queue.error.ts","../src/plugins/queue/queue.interface.ts","../src/utils/utils.ts","../src/plugins/logger/logger.manager.ts","../src/plugins/logger/console.logger.ts","../src/plugins/queue/simple.queue.ts","../src/plugins/cache/lru.cache.ts","../src/plugins/analytics/no-op.analytics.ts","../src/plugins/analytics/analytics.utils.ts","../src/plugins/analytics/post.analytics.ts","../src/plugins/analytics/analytics.manager.ts","../src/gateway.types.ts","../src/handlers/complete-chat/complete-chat.handler.ts","../src/handlers/complete-chat/complete-chat.types.ts","../src/handlers/get-chat-usage-cost/get-chat-usage-cost.handler.ts","../src/handlers/get-embeddings/get-embeddings.types.ts","../src/handlers/get-embeddings/get-embeddings.handler.ts","../src/handlers/get-tool-responses/get-tool-responses.types.ts","../src/handlers/get-tool-responses/get-tool-responses.handler.ts","../src/handlers/proxy-complete-chat/proxy-complete-chat.types.ts","../src/handlers/proxy-complete-chat/proxy-complete-chat.handler.ts","../src/handlers/proxy-get-embeddings/proxy-get-embeddings.handler.ts","../src/handlers/proxy-get-embeddings/proxy-get-embeddings.types.ts","../src/handlers/proxy-stream-chat/proxy-stream-chat.types.ts","../src/handlers/proxy-stream-chat/proxy-stream-chat.handler.ts","../src/handlers/stream-chat/stream-chat.types.ts","../src/handlers/stream-chat/stream-chat.handler.ts","../src/gateway.ts","../src/handlers/get-chat-usage-cost/get-chat-usage-cost.types.ts"],"names":["GatewayError","_GatewayError","message","status","data","GatewayTelemetryErrorLiteral","GatewayTelemetryError","_GatewayTelemetryError","GatewayBaseError","info","cause","error","HttpClientErrorLiteral","HttpClientError","_HttpClientError","HttpRequestErrorLiteral","HttpRequestError","_HttpRequestError","headers","TelemetryManager","tracer","trace","meter","metrics","convertHeadersToRecord","headerRecord","key","value","axiosToHttpRequestError","_a","_b","_c","IsomorphicHttpClient","config","axiosInstance","timeoutInMilliseconds","enableProxyAgent","axios","Timeout","z","ProxyAgent","logger","LoggerManager","_0","_1","_2","__async","method","url","dataOrParams","additionalConfig","options","telemetryContext","_makeRequest","span","executeRequest","__spreadValues","__spreadProps","resp","response","result","SpanStatusCode","retryConfig","lastError","attempt","delay","resolve","context","ATTR_HTTP_REQUEST_METHOD","ATTR_URL_FULL","__asyncGenerator","_stream","requestStart","timeToFirstTokenSet","__await","iter","__forAwait","more","temp","chunk","ttfb","decodedChunk","fetchConfig","text","reader","done","decodedValue","__yieldStar","params","QueueTaskTimeoutErrorLiteral","QueueTaskTimeoutError","_QueueTaskTimeoutError","QueueOptions","getCacheKeyHash","prefix","object","sha256","castToError","err","isRunningInBrowser","logColors","verbose","level","action","args","debug","safelyInvokeCallbacks","callbacks","name","promises","callback","func","ms","ConsoleLogger","SimpleQueue","task","taskSpan","taskTelemetryContext","reject","timeout","retryRemaining","shouldRetry","delayMs","taskRequest","GatewayCompleteChatRequest","retryDelay","randomDelayMs","retrySpan","item","LRUCache","maxEntries","LRU","NoOpAnalytics","event","dimensions","getNodeDetails","os","getBrowserDetails","PostAnalytics","analyticsEvent","eventsToSend","events","e","AnalyticsManager","enableAnalytics","GatewayOptions","GatewayCompleteChatRequestOptions","Config","Message","Tool","GatewayStreamChatRequestOptions","GatewayStreamChatRequest","GatewayGetEmbeddingsRequestOptions","GatewayGetEmbeddingsRequest","EmbeddingRequests","GatewayProxyCompleteChatRequest","GatewayProxyStreamChatRequest","GatewayProxyGetEmbeddingsRequest","GatewayGetChatUsageCostRequest","GatewayGetToolResponsesRequestOptions","GatewayGetToolResponsesRequest","CompleteChatHandlerRequest","CompleteChatHandlerResponse","ChatResponse","handleCompleteChat","request","client","_handleCompleteChat","handlerTelemetryContext","providerData","providerRequest","cacheKey","cachedResponse","now","providerResponse","latencyInMs","safeError","handleGetChatUsageCost","promptTokens","completionTokens","tokenRanges","getRate","tokens","kind","tokenRange","t","rate","inputRatePerMillion","outputRatePerMillion","inputCost","outputCost","GetEmbeddingsHandlerRequest","GetEmbeddingsHandlerResponse","EmbeddingResponse","handleGetEmbeddings","_handleGetEmbeddings","GetToolResponsesHandlerRequest","GetToolResponsesHandlerResponse","ToolResponseContent","handleGetToolResponses","_handleGetToolResponses","tools","toolCalls","acc","contentToolCalls","acc_","content","toolCallPromises","toolCall","tool","requestSettings","requestMethod","retrySettings","queryParams","body","bodyOrQuery","warningMessage","toolResponse","toolResponses","ProxyCompleteChatHandlerRequest","ProxyCompleteChatHandlerResponse","handleProxyCompleteChat","_handleProxyCompleteChat","transformedResponse","transformationError","ProxyGetEmbeddingsHandlerRequest","ProxyGetEmbeddingsHandlerResponse","handleProxyGetEmbeddings","_handleProxyGetEmbeddings","sanitizedProviderRequest","ProxyStreamChatHandlerRequest","ProxyStreamChatHandlerResponse","PartialChatResponse","handleProxyStreamChat","_handleProxyStreamChat","buffer","accumulatedPartialResponse","transformed","hasMessages","hasUsage","streamResponse","StreamChatHandlerRequest","StreamChatHandlerResponse","handleStreamChat","_handleStreamChat","stable","isFirstResponse","Gateway","_d","_e","_f","_g","queueOptions","modelName","uuidv4","activeContext","GetChatUsageCostHandlerRequest","GetChatUsageCostHandlerResponse"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,IAAA,EAAA,CAAA,MAAA,CAAA,cAAA,CAAA,EAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,IAAA,EAAA,CAAA,MAAA,CAAA,yBAAA,CAAA,IAAA,EAAA,CAAA,MAAA,CAAA,qBAAA,CAAA,IAAA,EAAA,CAAA,MAAA,CAAA,SAAA,CAAA,cAAA,CAAA,EAAA,CAAA,MAAA,CAAA,SAAA,CAAA,oBAAA,CAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,MAAA,CAAA,GAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,MAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,UAAA,CAAA,CAAA,CAAA,CAAA,YAAA,CAAA,CAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,IAAA,CAAA,IAAA,CAAA,GAAA,CAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,CAAA,IAAA,IAAA,CAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,EAAA,CAAA,CAAA,CAAA,EAAA,OAAA,OAAA,EAAA,WAAA,CAAA,OAAA,CAAA,OAAA,KAAA,EAAA,WAAA,CAAA,IAAA,KAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,OAAA,OAAA,EAAA,WAAA,CAAA,OAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,SAAA,CAAA,CAAA,CAAA,GAAA,OAAA,OAAA,EAAA,WAAA,CAAA,OAAA,OAAA,CAAA,KAAA,CAAA,IAAA,CAAA,SAAA,CAAA,CAAA,MAAA,KAAA,CAAA,sBAAA,CAAA,CAAA,CAAA,oBAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,IAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,GAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,YAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,QAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,IAAA,CAAA,KAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,EAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,eAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,eAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA,EAAA,IAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,OAAA,CAAA,MAAA,CAAA,CAAA,OAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,IAAA,CAAA,CAAA,IAAA,OAAA,CAAA,CAAA,EAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,YAAA,MAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA,OAAA,GAAA,CAAA,CAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,EAAA,CAAA,MAAA,CAAA,CAAA,CAAA,QAAA,GAAA,CAAA,EAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,eAAA,CAAA,CAAA,EAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,CAAA,UAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAA,IAAA,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,IAAA,CAAA,OAAA,CAAA,OAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,IAAA,CAAA,CAAA,EAAA,CAAA,CAAA,CAAA,KAAA,CAAA,CAAA,CAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAAA,CAAA,CAAA,CAAA,CAAA,QAAA,CAAA,CAAA,CAAA,CAAA,CAEA,IAAMA,CAAN,CAAA,MAAMC,CAAqB,SAAA,KAAM,CAI/B,WAAA,CAAYC,CAAiBC,CAAAA,CAAAA,CAAiB,IAAKC,CAAgB,CAAA,CACjE,KAAMF,CAAAA,CAAO,CACb,CAAA,IAAA,CAAK,IAAO,CAAA,cAAA,CACZ,IAAK,CAAA,MAAA,CAASC,CACd,CAAA,IAAA,CAAK,IAAOC,CAAAA,CAAAA,CAER,KAAM,CAAA,iBAAA,EACR,MAAM,iBAAkB,CAAA,IAAA,CAAMH,CAAY,EAE9C,CACF,CAAA,CAEMI,EAA+B,CAAA,uBAAA,CAC/BC,EAAN,CAAA,MAAMC,CAA8BC,SAAAA,sBAAiB,CAInD,WAAA,CAAY,CAAE,IAAA,CAAAC,EAAM,KAAAC,CAAAA,CAAM,CAAqC,CAAA,CAC7D,KAAM,CAAA,CAAE,IAAAD,CAAAA,CAAAA,CAAM,MAAAC,CAAM,CAAA,CAAGL,EAA4B,CAAA,CACnD,IAAK,CAAA,IAAA,CAAOI,CACZ,CAAA,IAAA,CAAK,MAAQC,CACb,CAAA,MAAA,CAAO,cAAe,CAAA,IAAA,CAAM,GAAW,CAAA,MAAA,CAAA,SAAS,EAClD,CAEA,OAAO,uBAAA,CAAwBC,CAAgD,CAAA,CAC7E,OAAOA,CAAAA,YAAiBJ,CAC1B,CACF,EC/BMK,IAAAA,EAAAA,CAAyB,iBACzBC,CAAAA,EAAAA,CAAN,MAAMC,CAAwBN,SAAAA,sBAAiB,CAI7C,WAAA,CAAY,CAAE,IAAA,CAAAC,CAAM,CAAA,KAAA,CAAAC,CAAM,CAAqC,CAAA,CAC7D,KAAM,CAAA,CAAE,IAAAD,CAAAA,CAAAA,CAAM,KAAAC,CAAAA,CAAM,EAAGE,EAAsB,CAAA,CAC7C,IAAK,CAAA,IAAA,CAAOH,CACZ,CAAA,IAAA,CAAK,KAAQC,CAAAA,CAAAA,CACb,MAAO,CAAA,cAAA,CAAe,IAAM,CAAA,GAAA,CAAA,MAAA,CAAW,SAAS,EAClD,CAEA,OAAO,kBAAkBC,CAA0C,CAAA,CACjE,OAAOA,CAAAA,YAAiBG,CAC1B,CACF,CAEMC,CAAAA,EAAAA,CAA0B,kBAC1BC,CAAAA,CAAAA,CAAN,MAAMC,CAAAA,SAAyBT,sBAAiB,CAQ9C,WAAYN,CAAAA,CAAAA,CAAiBC,EAAiB,GAAKe,CAAAA,CAAAA,CAAiCd,CAAe,CAAA,CACjG,KAAM,CAAA,CAAE,IAAMF,CAAAA,CAAAA,CAAS,KAAO,CAAA,CAAE,MAAAC,CAAAA,CAAAA,CAAQ,OAAAe,CAAAA,CAAAA,CAAS,IAAAd,CAAAA,CAAK,CAAE,CAAGW,CAAAA,EAAuB,CAClF,CAAA,IAAA,CAAK,IAAOb,CAAAA,CAAAA,CACZ,IAAK,CAAA,KAAA,CAAQ,CAAE,MAAAC,CAAAA,CAAAA,CAAQ,OAAAe,CAAAA,CAAAA,CAAS,IAAAd,CAAAA,CAAK,CACrC,CAAA,MAAA,CAAO,eAAe,IAAM,CAAA,GAAA,CAAA,MAAA,CAAW,SAAS,EAClD,CAEA,OAAO,kBAAmBO,CAAAA,CAAAA,CAA2C,CACnE,OAAOA,CAAiBM,YAAAA,CAC1B,CACF,ECpCME,IAAAA,CAAAA,CAAN,KAAuB,CAOrB,OAAO,SAAA,CAAUC,CAAkC,CAAA,CAC5C,IAAK,CAAA,MAAA,GACR,IAAK,CAAA,MAAA,CAASA,GAAUC,SAAM,CAAA,SAAA,CAAU,IAAK,CAAA,kBAAkB,CAEnE,EAAA,CAEA,OAAO,SAAA,EAAoB,CACzB,OAAO,IAAA,CAAK,MAAUA,EAAAA,SAAAA,CAAM,SAAU,CAAA,IAAA,CAAK,kBAAkB,CAC/D,CAEA,OAAO,QAAA,CAASC,CAAgC,CAAA,CACzC,IAAK,CAAA,KAAA,GACR,IAAK,CAAA,KAAA,CAAQA,CAASC,EAAAA,WAAAA,CAAQ,QAAS,CAAA,IAAA,CAAK,iBAAiB,CAAA,EAEjE,CAEA,OAAO,UAAkB,CACvB,OAAO,IAAK,CAAA,KAAA,EAASA,WAAQ,CAAA,QAAA,CAAS,IAAK,CAAA,iBAAiB,CAC9D,CACF,EA1BMJ,CAAAA,CACG,kBAAqB,CAAA,SAAA,CADxBA,CAEG,CAAA,iBAAA,CAAoB,UAFvBA,CAIW,CAAA,MAAA,CAA6B,KAJxCA,CAAAA,CAAAA,CAAAA,CAKW,KAA2B,CAAA,KAAA,CAAA,CCItCK,IAAAA,EAAAA,CAA0BN,CAAyC,EAAA,CACvE,IAAMO,CAAAA,CAAuC,EAAC,CAC9C,OAAIP,CAAAA,GAAY,OAAOA,CAAY,EAAA,QAAA,EAAYA,CAAmB,YAAA,OAAA,CAAA,EAChE,MAAO,CAAA,OAAA,CAAQA,CAAO,CAAA,CAAE,QAAQ,CAAC,CAACQ,CAAKC,CAAAA,CAAK,CAAM,GAAA,CAC5C,KAAM,CAAA,OAAA,CAAQA,CAAK,CACrBF,CAAAA,CAAAA,CAAaC,CAAG,CAAA,CAAIC,CAAM,CAAA,IAAA,CAAK,IAAI,CAAA,CAC1B,OAAOA,CAAAA,EAAU,QAC1BF,CAAAA,CAAAA,CAAaC,CAAG,CAAA,CAAIC,CAEpBF,CAAAA,CAAAA,CAAaC,CAAG,CAAI,CAAA,GAExB,CAAC,CAAA,CAGID,CACT,CAAA,CAEMG,EAA2BjB,CAAAA,CAAAA,EAAwC,CA5BzE,IAAAkB,CAAAA,CAAAC,CAAAC,CAAAA,CAAAA,CA6BE,IAAM7B,CAAAA,CAAAA,CAAUS,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,EAAO,OAAW,GAAA,8BAAA,CAC5BR,CAAS0B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAlB,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAO,CAAA,QAAA,GAAP,IAAAkB,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAiB,MAAU,GAAA,GAAA,CACpCX,CAAUM,CAAAA,EAAAA,CAAAA,CAAuBM,CAAAnB,CAAAA,CAAAA,EAAA,YAAAA,CAAO,CAAA,QAAA,GAAP,IAAAmB,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAiB,OAAO,CAAA,EAAK,EAAC,CAC/D1B,IAAO2B,CAAApB,CAAAA,CAAAA,EAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAO,QAAP,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAoB,CAAiB,CAAA,IAAA,GAAQ,EACtC,CAAA,OAAO,IAAIf,CAAAA,CAAiBd,CAASC,CAAAA,CAAAA,CAAQe,CAASd,CAAAA,CAAI,CAC5D,CAAA,CASM4B,EAAN,CAAA,KAAiD,CAO/C,WAAA,CAAYC,CAAoC,CAAA,CAwBhD,uBAAoB,IACX,OAAO,OAAY,EAAA,WAAA,EAAe,OAAQ,CAAA,QAAA,EAAY,IAAQ,EAAA,OAAA,CAAQ,SAAS,IAAQ,EAAA,IAAA,CAxB9F,GAAM,CAAE,aAAAC,CAAAA,CAAAA,CAAe,qBAAAC,CAAAA,CAAAA,CAAuB,iBAAAC,CAAiB,CAAA,CAAIH,CACnE,CAAA,IAAA,CAAK,MAASC,CAAAA,CAAAA,EAAiBG,mBAAM,CAAA,MAAA,EAErC,CAAA,IAAMC,CAAUC,CAAAA,KAAAA,CAAE,MAAO,EAAA,CAAE,GAAI,EAAA,CAAE,UAAW,CAAA,QAAA,EAQ5C,CAAA,GAPA,IAAK,CAAA,cAAA,CAAiBD,CAAQ,CAAA,KAAA,CAAMH,CAAqB,CAEzD,CAAA,IAAA,CAAK,MAAO,CAAA,QAAA,CAAS,OAAU,CAAA,IAAA,CAAK,cAGpC,CAAA,IAAA,CAAK,iBAAmBC,CAAA,EAAA,IAAA,CAAAA,CAAoB,CAAA,CAAA,CAAA,CAExC,IAAK,CAAA,gBAAA,CAAkB,CAEzB,IAAMI,CAAa,CAAA,EAAA,CAAQ,aAAa,CAAA,CACxC,IAAK,CAAA,cAAA,CAAiB,IAAIA,CAAAA,CAAW,WACrC,IAAK,CAAA,eAAA,CAAkB,IAAIA,CAAAA,CAAW,UAAW,CAAA,CAC/C,kBAAoB,CAAA,CAAA,CACtB,CAAC,EACH,CACA,IAAMC,CAAAA,CAASC,CAAc,CAAA,SAAA,EAC7BD,CAAAA,CAAAA,EAAA,MAAAA,CAAQ,CAAA,KAAA,CAAM,CAAyD,sDAAA,EAAA,IAAA,CAAK,cAAc,CAAA,CAAA,EAC5F,CAMc,WAAA,CACZE,CACAC,CAAAA,CAAAA,CACAC,CAIgC,CAAA,CAAA,OAAAC,CAAA,CAAA,IAAA,CAAA,SAAA,CAAA,UANhCC,CACAC,CAAAA,CAAAA,CACAC,EACAC,CAAuC,CAAA,EACvCC,CAAAA,CAAAA,CACAC,CACgC,CAAA,CAChC,IAAMX,CAAAA,CAASC,EAAc,SAAU,EAAA,CAEjCW,CAAyBC,CAAAA,CAAAA,EAAgDR,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAC7E,IAAMS,CAAAA,CAAiB,IAA4CT,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CACjE,GAAI,CACF,IAAMb,CAAAA,CAA6BuB,CAAAC,CAAAA,CAAAA,CAAAD,CAAA,CAAA,CAAA,CAAA,EAAA,CAC7BT,CAAW,GAAA,KAAA,EAASA,CAAW,GAAA,QAAA,CAAW,CAAE,MAAA,CAAQE,CAAa,CAAI,CAAA,CAAE,IAAMA,CAAAA,CAAa,CAC3FC,CAAAA,CAAAA,CAAAA,CAAAA,CAF8B,CAGjC,OAAA,CAAS,IAAK,CAAA,cAAA,CAAA,CAAA,CACV,IAAK,CAAA,gBAAA,CACL,CACE,SAAA,CAAW,IAAK,CAAA,cAAA,CAChB,WAAY,IAAK,CAAA,eACnB,CACA,CAAA,EAGN,CAAA,CAAA,GAAIH,CAAW,GAAA,KAAA,EAASA,CAAW,GAAA,QAAA,CAAU,CAC3C,IAAMW,CAAO,CAAA,MAAM,IAAK,CAAA,MAAA,CAAOX,CAAM,CAAKC,CAAAA,CAAAA,CAAKf,CAAM,CAAA,CAC/C0B,CAAW,CAAA,CACf,IAAMD,CAAAA,CAAAA,CAAK,KACX,OAASlC,CAAAA,EAAAA,CAAuBkC,CAAK,CAAA,OAAO,CAC5C,CAAA,MAAA,CAAQ,CACN,IAAA,CAAMA,EAAK,MACX,CAAA,IAAA,CAAMA,CAAK,CAAA,UACb,CACF,CAAA,CACA,OAAAjB,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,6CAAA,CAA+CkB,CACtDA,CAAAA,CAAAA,CACT,CAAO,KAAA,CACL,IAAMD,CAAO,CAAA,MAAM,IAAK,CAAA,MAAA,CAAOX,CAAM,CAAA,CAAKC,CAAKf,CAAAA,CAAAA,CAAO,KAAMwB,CAAAD,CAAAA,CAAAA,CAAA,EACvDvB,CAAAA,CAAAA,CAAAA,CADuD,CAE1D,MAAA,CAAQA,CAAO,CAAA,MACjB,EAAC,CACK0B,CAAAA,CAAAA,CAAW,CACf,IAAA,CAAMD,CAAK,CAAA,IAAA,CACX,OAASlC,CAAAA,EAAAA,CAAuBkC,CAAK,CAAA,OAAO,CAC5C,CAAA,MAAA,CAAQ,CACN,IAAA,CAAMA,CAAK,CAAA,MAAA,CACX,KAAMA,CAAK,CAAA,UACb,CACF,CAAA,CACA,OAAAjB,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,MAAM,6CAA+CkB,CAAAA,CAAAA,CAAAA,CACtDA,CACT,CACF,CAAShD,MAAAA,CAAAA,CAAO,CAEd,MADA8B,GAAA,IAAAA,EAAAA,CAAAA,CAAQ,IAAK,CAAA,0CAAA,CAA4C9B,CACrD0B,CAAAA,CAAAA,mBAAAA,CAAM,YAAa1B,CAAAA,CAAK,CAASiB,CAAAA,EAAAA,CAAwBjB,CAAK,CAAA,CAC5D,IAAIE,EAAAA,CAAgB,CAAE,IAAA,CAAM,+BAAgC,KAAOF,CAAAA,CAAM,CAAC,CAClF,CACF,CAAA,CAAA,CAEA,GAAI,CAEF,GAAI,EAACwC,CAAA,EAAA,IAAA,EAAAA,CAAS,CAAA,KAAA,CAAA,CAAO,CACnB,IAAMS,EAAS,MAAML,CAAAA,EACrB,CAAA,OAAAD,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,SAAA,CAAU,CAAE,IAAA,CAAMO,kBAAe,CAAA,EAAA,CAAI,OAAS,CAAA,oBAAqB,CAClED,CAAAA,CAAAA,CACT,CAGA,IAAME,CAAAA,CAAcX,CAAQ,CAAA,KAAA,CACxBY,CAEJ,CAAA,IAAA,IAASC,CAAU,CAAA,CAAA,CAAGA,GAAWF,CAAY,CAAA,WAAA,CAAaE,CACxD,EAAA,CAAA,GAAI,CACF,IAAMJ,CAAS,CAAA,MAAML,GAErB,CAAA,OAAAD,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,SAAA,CAAU,CAAE,IAAA,CAAMO,kBAAe,CAAA,EAAA,CAAI,OAAS,CAAA,oBAAqB,CAClED,CAAAA,CAAAA,CACT,CAASjD,MAAAA,CAAAA,CAAO,CAKd,GAJAoD,CAAAA,CAAYpD,CACZ8B,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,IAAK,CAAA,CAAA,yCAAA,EAA4CuB,CAAO,CAAarD,SAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAGzEqD,CAAYF,GAAAA,CAAAA,CAAY,WAC1B,CAAA,MAIF,IAAMG,CAAAA,CAAQH,EAAY,YAAe,CAAA,IAAA,CAAK,GAAIA,CAAAA,CAAAA,CAAY,iBAAmBE,CAAAA,CAAAA,CAAU,CAAC,CAAA,CAC5FvB,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,CAAmDwB,gDAAAA,EAAAA,CAAK,CAAeD,YAAAA,EAAAA,CAAO,IAAIF,CAAY,CAAA,WAAW,CAGvH,CAAA,CAAA,CAAA,CAAA,MAAM,IAAI,OAAA,CAASI,CAAY,EAAA,UAAA,CAAWA,EAASD,CAAK,CAAC,EAC3D,CAIF,MAAAX,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAM,UAAU,CAAE,IAAA,CAAMO,kBAAe,CAAA,KAAA,CAAO,OAAS,CAAA,yCAA0C,CAC3FE,CAAAA,CAAAA,CACR,CAASpD,MAAAA,CAAAA,CAAO,CACd,MAAA2C,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,SAAA,CAAU,CAAE,IAAMO,CAAAA,kBAAAA,CAAe,KAAO,CAAA,OAAA,CAAS,gBAAiB,CAAA,CAAA,CAClElD,CACR,CAAA,OAAE,CACA2C,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAM,GACR,GAAA,CACF,CAEA,CAAA,CAAA,OAAKF,EAIE,MAAMe,WAAAA,CAAQ,IAAKf,CAAAA,CAAAA,CAAkB,IAAYN,CAAAA,CAAA,IAEtD,CAAA,IAAA,CAAA,WAAA,CAAA,OAAO,MADQ3B,CAAAA,CAAiB,SAAU,EAAA,CACtB,eAAgB,CAAA,cAAA,CAAuBmC,CAAeR,EAAAA,CAAAA,CAAA,sBACxE,OAAAQ,CAAAA,CAAK,YAAac,CAAAA,4CAAAA,CAA0BrB,CAAO,CAAA,WAAA,EAAa,CAAA,CAChEO,EAAK,YAAae,CAAAA,iCAAAA,CAAerB,CAAG,CAAA,CAC7B,MAAMK,CAAAA,CAAgBC,CAAI,CACnC,EAAC,CACH,CAAA,CAAC,CAVQD,CAAAA,CAAAA,EAWX,CAAA,CAAA,CAEO,MACLL,CAAAA,CAAAA,CACAD,CACA3C,CAAAA,CAAAA,CACAc,CACAiC,CAAAA,CAAAA,CAGAC,CACkC,CAAA,CAAA,OAAAkB,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAClC,IAAM7B,CAASC,CAAAA,CAAAA,CAAc,SAAU,EAAA,CACvCD,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,0CAA0CO,CAAG,CAAA,CAAA,CAAI,CAAE,IAAA,CAAA5C,CAAM,CAAA,OAAA,CAAAc,CAAQ,CAAA,CAAA,CAC/E,IAAMqD,CAAU,CAAA,SAA6CjB,CAA+C,CAAA,CAAA,OAAAgB,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAE1G,IAAME,CAAAA,CAAe,IAAK,CAAA,GAAA,EACtBC,CAAAA,CAAAA,CAAsB,CAE1B,CAAA,CAAA,GAAI,CACF,GAAI,KAAK,iBAAkB,EAAA,CAAG,CAC5BhC,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,iDAAA,CAAA,CACd,IAAMkB,CAAW,CAAA,MAAA,IAAAe,CAAM,CAAA,IAAA,CAAK,MAAO,CAAA,OAAA,CAAQ,CACzC,MAAA,CAAA3B,EACA,GAAAC,CAAAA,CAAAA,CACA,OAAA9B,CAAAA,CAAAA,CACA,IAAAd,CAAAA,CAAAA,CACA,YAAc,CAAA,QAAA,CACd,MAAQ+C,CAAAA,CAAAA,EAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAS,WACnB,CAAC,CAED,CAAA,CAAA,GAAA,CAAA,IAAA,IAAAwB,EAAAC,CAA0BjB,CAAAA,CAAAA,CAAS,IAAnCkB,CAAAA,CAAAA,CAAAA,CAAAC,CAAAnE,CAAAA,CAAAA,CAAAkE,CAAA,CAAA,CAAA,CAAAC,EAAA,MAAAJ,IAAAA,CAAAA,CAAAC,CAAA,CAAA,IAAA,EAAA,CAAA,EAAA,IAAA,CAAAE,CAAA,CAAA,CAAA,CAAA,CAAyC,CAA9B,IAAME,EAAjBD,CAAA,CAAA,KAAA,CAEE,GAAI,CAACL,CAAqB,CAAA,CACxB,IAAMO,CAAAA,CAAO,IAAK,CAAA,GAAA,EAAQR,CAAAA,CAAAA,CAC1BlB,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,YAAA,CAAa,sBAAuB0B,CAC1CP,CAAAA,CAAAA,CAAAA,CAAsB,CACxB,EAAA,CACAnB,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,QAAA,CAAS,eAAgB,CAAE,OAAA,CAAS,uBAAwB,CAAA,CAAA,CAClE,IAAM2B,CAAAA,CAAeF,CAAM,CAAA,QAAA,GAC3BtC,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,qCAAuCwC,CAAAA,CAAAA,CAAAA,CACrD,MAAMA,EACR,CAXAH,CAAAA,MAAAA,CAAAA,CApOV,CAoOUnE,CAAAA,CAAA,CAAAmE,CAAAA,EAAAA,CAAAA,OAAA,CAAAD,GAAAA,CAAAA,CAAAA,GAAAC,EAAAH,CAAA,CAAA,MAAA,CAAA,GAAA,MAAA,IAAAD,CAAAI,CAAAA,CAAAA,CAAA,IAAAH,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,OAAA,CAAAhE,GAAAA,CAAAA,CAAA,MAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAYA2C,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,SAAA,CAAU,CAAE,IAAA,CAAMO,mBAAe,EAAI,CAAA,OAAA,CAAS,mBAAoB,CAAA,EAC1E,CAAO,KAAA,CACLpB,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,oDACd,CAAA,CAAA,IAAMyC,CAA2B,CAAA,CAC/B,MAAAnC,CAAAA,CAAAA,CACA,QAAS,IAAI,OAAA,CAAQS,CAAA,CAAA,EAAA,CAChBtC,CACJ,CAAA,CAAA,CACD,IAAM6B,CAAAA,CAAAA,GAAW,MAAQ,IAAK,CAAA,SAAA,CAAU3C,CAAI,CAAA,CAAI,KAChD,CAAA,CAAA,MAAA,CAAQ+C,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,EAAS,WACnB,CAAA,CACMQ,CAAW,CAAA,MAAA,IAAAe,CAAM,CAAA,KAAA,CAAM1B,CAAKkC,CAAAA,CAAW,CAE7C,CAAA,CAAA,GAAI,CAACvB,CAAAA,CAAS,EAAI,CAAA,CAChBlB,CAAA,EAAA,IAAA,EAAAA,EAAQ,IAAK,CAAA,+CAAA,CAAiDkB,CAC9DL,CAAAA,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAM,SAAU,CAAA,CAAE,IAAMO,CAAAA,kBAAAA,CAAe,KAAO,CAAA,OAAA,CAAS,eAAgB,CAAA,CAAA,CACvE,IAAMsB,CAAAA,CAAY,UAAAT,CAAMf,CAAAA,CAAAA,CAAS,IAAK,EAAA,CAAA,CACtC,MAAM,IAAI3C,CACR,CAAA,CAAA,2BAAA,EAA8B2C,CAAS,CAAA,MAAM,CAC7CA,CAAAA,CAAAA,CAAAA,CAAS,MACTnC,CAAAA,EAAAA,CAAuBmC,CAAS,CAAA,OAAO,EACvCwB,CACF,CACF,CAEA,GAAIxB,CAAS,CAAA,IAAA,CAAM,CACjB,IAAMyB,EAASzB,CAAS,CAAA,IAAA,CAAK,SAAU,EAAA,CACvC,OAAa,CACX,GAAM,CAAE,KAAA0B,CAAM,CAAA,KAAA,CAAA1D,CAAM,CAAA,CAAI,MAAA+C,IAAAA,CAAAA,CAAMU,CAAO,CAAA,IAAA,EACrC,CAAA,CAAA,GAAIC,CAAM,CAAA,CAER,GAAI,CAACZ,CAAuB9C,EAAAA,CAAAA,CAAO,CACjC,IAAMqD,CAAAA,CAAO,IAAK,CAAA,GAAA,EAAQR,CAAAA,CAAAA,CAC1BlB,CAAA,EAAA,IAAA,EAAAA,EAAM,YAAa,CAAA,qBAAA,CAAuB0B,CAC1CP,CAAAA,CAAAA,CAAAA,CAAsB,CACxB,EAAA,CACAnB,CAAA,EAAA,IAAA,EAAAA,EAAM,QAAS,CAAA,cAAA,CAAgB,CAAE,OAAA,CAAS,uBAAwB,CAAA,CAAA,CAClE,IAAMgC,CAAAA,CAAe,IAAI,WAAA,EAAc,CAAA,MAAA,CAAO3D,CAAO,CAAA,CAAE,MAAQ,CAAA,CAAA,CAAK,CAAC,CACrEc,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,qCAAA,CAAuC6C,CACrD,CAAA,CAAA,MAAMA,EACN,KACF,CAGA,GAAI,CAACb,CAAqB,CAAA,CACxB,IAAMO,CAAAA,CAAO,KAAK,GAAI,EAAA,CAAIR,CAC1BlB,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAM,YAAa,CAAA,qBAAA,CAAuB0B,CAC1CP,CAAAA,CAAAA,CAAAA,CAAsB,CACxB,EAAA,CACAnB,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,QAAA,CAAS,eAAgB,CAAE,OAAA,CAAS,uBAAwB,CAAA,CAAA,CAClE,IAAMgC,CAAAA,CAAe,IAAI,WAAA,EAAc,CAAA,MAAA,CAAO3D,CAAO,CAAA,CAAE,MAAQ,CAAA,CAAA,CAAK,CAAC,CAAA,CACrEc,GAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,qCAAA,CAAuC6C,CACrD,CAAA,CAAA,MAAMA,EACR,CACAhC,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,SAAA,CAAU,CAAE,IAAA,CAAMO,kBAAe,CAAA,EAAA,CAAI,QAAS,mBAAoB,CAAA,EAC1E,CACE,KAAA,MAAApB,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,IAAA,CAAK,oDACba,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,SAAA,CAAU,CAAE,IAAA,CAAMO,kBAAe,CAAA,KAAA,CAAO,QAAS,eAAgB,CAAA,CAAA,CACjE,IAAI7C,CAAAA,CAAiB,yCAA2C,CAAA,GAAA,CAAK,EAAC,CAAG2C,CAAQ,CAE3F,CACF,CAAA,MAAShD,CAAY,CAAA,CAGnB,MAFA8B,CAAAA,EAAA,MAAAA,CAAQ,CAAA,IAAA,CAAK,qCAAuC9B,CAAAA,CAAAA,CAAAA,CACpD2C,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,SAAA,CAAU,CAAE,IAAMO,CAAAA,kBAAAA,CAAe,KAAO,CAAA,OAAA,CAAS,eAAgB,CAAA,CAAA,CACnE7C,CAAiB,CAAA,kBAAA,CAAmBL,CAAK,CAASA,CAAAA,CAAAA,CAAAA,CAClDA,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAO,CAAA,IAAA,IAAS,YAAoB,CAAA,IAAIK,CAAiB,CAAA,YAAA,CAAc,GAAK,CAAA,EAAI,CAAA,EAAE,CAAA,CAAA,CAClFL,GAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAO,IAAS,IAAA,eAAA,CAAuB,IAAIK,CAAAA,CAAiB,YAAc,CAAA,GAAA,CAAK,EAAI,CAAA,EAAE,CAAA,CAErFqB,mBAAM,CAAA,YAAA,CAAa1B,CAAK,CAAA,CAASiB,GAAwBjB,CAAK,CAAA,CAC5D,IAAIE,EAAAA,CAAgB,CAAE,IAAA,CAAM,8BAAgC,CAAA,KAAA,CAAOF,CAAM,CAAC,CAClF,CAAA,OAAE,CACA2C,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAM,MACR,CACF,CAAA,CAAA,CAAA,CAAE,IAAK,CAAA,IAAI,CAEX,CAAA,OAAKF,CAIE,CAAA,MAAAmC,CAAO,CAAA,MAAA,IAAAb,CAAMP,CAAAA,WAAAA,CAAQ,IAAKf,CAAAA,CAAAA,CAAkB,IAAYN,CAAAA,CAAA,sBAE7D,OAAO,MADQ3B,CAAiB,CAAA,SAAA,EACZ,CAAA,eAAA,CAAgB,aAAsBmC,CAAAA,CAAAA,EAAeR,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CACvE,OAAAQ,CAAAA,CAAK,YAAac,CAAAA,4CAAAA,CAA0BrB,CAAO,CAAA,WAAA,EAAa,CAChEO,CAAAA,CAAAA,CAAK,YAAae,CAAAA,iCAAAA,CAAerB,CAAG,CAAA,CAC7B,MAAMuB,CAAAA,CAAQjB,CAAI,CAC3B,CAAA,CAAC,CACH,CAAA,CAAC,CAVQ,CAAA,CAAA,CAAA,MAAAiC,CAAOhB,CAAAA,CAAAA,GAWlB,CAEM,CAAA,CAAA,GAAA,CACJvB,CACAwC,CAAAA,CAAAA,CACAtE,CACAiC,CAAAA,CAAAA,CACAC,CACgC,CAAA,CAAA,OAAAN,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAChC,IAAML,CAAAA,CAASC,CAAc,CAAA,SAAA,EAC7B,CAAA,OAAAD,GAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,CAAA,oCAAA,EAAuCO,CAAG,CAAA,CAAA,CAAI,CAAE,MAAA,CAAAwC,EAAQ,OAAAtE,CAAAA,CAAQ,CACvE,CAAA,CAAA,IAAA,CAAK,WAAe,CAAA,KAAA,CAAO8B,CAAKwC,CAAAA,CAAAA,EAAU,EAAI,CAAA,CAAE,OAAAtE,CAAAA,CAAQ,CAAGiC,CAAAA,CAAAA,CAASC,CAAgB,CAC7F,CAEM,CAAA,CAAA,IAAA,CACJJ,CACA5C,CAAAA,CAAAA,CACAc,CACAiC,CAAAA,CAAAA,CACAC,CACgC,CAAA,CAAA,OAAAN,EAAA,IAChC,CAAA,IAAA,CAAA,WAAA,CAAA,IAAML,CAASC,CAAAA,CAAAA,CAAc,SAAU,EAAA,CACvC,OAAAD,CAAAA,EAAA,MAAAA,CAAQ,CAAA,KAAA,CAAM,CAAwCO,qCAAAA,EAAAA,CAAG,CAAI,CAAA,CAAA,CAAE,IAAA5C,CAAAA,CAAAA,CAAM,QAAAc,CAAQ,CAAA,CAAA,CACtE,IAAK,CAAA,WAAA,CAAe,MAAQ8B,CAAAA,CAAAA,CAAK5C,CAAQ,EAAA,EAAI,CAAA,CAAE,OAAAc,CAAAA,CAAQ,CAAGiC,CAAAA,CAAAA,CAASC,CAAgB,CAC5F,GAEM,GACJJ,CAAAA,CAAAA,CACA5C,CACAc,CAAAA,CAAAA,CACAiC,CACAC,CAAAA,CAAAA,CACgC,CAAAN,OAAAA,CAAAA,CAAA,sBAChC,IAAML,CAAAA,CAASC,CAAc,CAAA,SAAA,EAC7B,CAAA,OAAAD,CAAA,EAAA,IAAA,EAAAA,EAAQ,KAAM,CAAA,CAAA,oCAAA,EAAuCO,CAAG,CAAA,CAAA,CAAI,CAAE,IAAA,CAAA5C,CAAM,CAAA,OAAA,CAAAc,CAAQ,CAAA,CAAA,CACrE,IAAK,CAAA,WAAA,CAAe,KAAO8B,CAAAA,CAAAA,CAAK5C,CAAQ,EAAA,GAAI,CAAE,OAAA,CAAAc,CAAQ,CAAA,CAAGiC,CAASC,CAAAA,CAAgB,CAC3F,CAAA,CAAA,CAEM,OACJJ,CACAwC,CAAAA,CAAAA,CACAtE,CACAiC,CAAAA,CAAAA,CACAC,CACgC,CAAA,CAAA,OAAAN,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAChC,IAAML,CAASC,CAAAA,CAAAA,CAAc,SAAU,EAAA,CACvC,OAAAD,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,CAAA,uCAAA,EAA0CO,CAAG,CAAA,CAAA,CAAI,CAAE,MAAA,CAAAwC,CAAQ,CAAA,OAAA,CAAAtE,CAAQ,CAC1E,CAAA,CAAA,IAAA,CAAK,WAAe,CAAA,QAAA,CAAU8B,CAAKwC,CAAAA,CAAAA,EAAU,EAAC,CAAG,CAAE,OAAAtE,CAAAA,CAAQ,CAAGiC,CAAAA,CAAAA,CAASC,CAAgB,CAChG,CAEM,CAAA,CAAA,KAAA,CACJJ,EACA5C,CACAc,CAAAA,CAAAA,CACAiC,CACAC,CAAAA,CAAAA,CACgC,CAAAN,OAAAA,CAAAA,CAAA,IAChC,CAAA,IAAA,CAAA,WAAA,CAAA,IAAML,CAASC,CAAAA,CAAAA,CAAc,SAAU,EAAA,CACvC,OAAAD,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,MAAM,CAAyCO,sCAAAA,EAAAA,CAAG,CAAI,CAAA,CAAA,CAAE,IAAA5C,CAAAA,CAAAA,CAAM,OAAAc,CAAAA,CAAQ,GACvE,IAAK,CAAA,WAAA,CAAe,OAAS8B,CAAAA,CAAAA,CAAK5C,CAAQ,EAAA,EAAI,CAAA,CAAE,QAAAc,CAAQ,CAAA,CAAGiC,CAASC,CAAAA,CAAgB,CAC7F,CAAA,CAAA,CACF,EClYA,IAAMqC,EAA+B,CAAA,uBAAA,CAC/BC,EAAN,CAAA,MAAMC,UAA8BnF,sBAAiB,CAInD,WAAY,CAAA,CAAE,IAAAC,CAAAA,CAAAA,CAAM,KAAAC,CAAAA,CAAM,CAAqC,CAAA,CAC7D,KAAM,CAAA,CAAE,IAAAD,CAAAA,CAAAA,CAAM,KAAAC,CAAAA,CAAM,EAAG+E,EAA4B,CAAA,CACnD,IAAK,CAAA,IAAA,CAAOhF,CACZ,CAAA,IAAA,CAAK,KAAQC,CAAAA,CAAAA,CACb,MAAO,CAAA,cAAA,CAAe,IAAM,CAAA,GAAA,CAAA,MAAA,CAAW,SAAS,EAClD,CAEA,OAAO,wBAAwBC,CAAgD,CAAA,CAC7E,OAAOA,CAAAA,YAAiBgF,CAC1B,CACF,ECEMC,IAAAA,EAAAA,CAAerD,KAAE,CAAA,MAAA,CAAO,CAC5B,kBAAA,CAAoBA,MAAE,MAAO,EAAA,CAAE,GAAI,EAAA,CAAE,QAAS,EAAA,CAC9C,UAAYA,CAAAA,KAAAA,CAAE,MAAO,EAAA,CAAE,GAAI,EAAA,CAAE,QAAS,EAAA,CACtC,OAASA,CAAAA,KAAAA,CAAE,QAAS,CAAA,GAAA,EAAM,CAAA,QAAA,EAC1B,CAAA,KAAA,CAAOA,KAAE,CAAA,MAAA,CAAO,CACd,YAAcA,CAAAA,KAAAA,CAAE,MAAO,EAAA,CAAE,GAAI,EAAA,CAAE,QAAS,EAAA,CACxC,kBAAmBA,KAAE,CAAA,MAAA,EAAS,CAAA,GAAA,EAAM,CAAA,QAAA,EACtC,CAAC,CACH,CAAC,ECtBD,IAAMsD,EAAkB,CAAA,CAACC,EAAgBC,CAChCC,GAAAA,mBAAAA,CAAOF,CAAS,CAAA,IAAA,CAAK,SAAUC,CAAAA,CAAM,CAAC,CAAA,CAAE,UAG3CE,CAAAA,CAAAA,CAAeC,CACfA,EAAAA,CAAAA,YAAelG,CAAqBkG,CAAAA,CAAAA,CACpCrF,EAAgB,CAAA,iBAAA,CAAkBqF,CAAG,CAAA,CAAU,IAAIlG,CAAAA,CAAakG,CAAI,CAAA,OAAO,CAC3ElF,CAAAA,CAAAA,CAAiB,mBAAmBkF,CAAG,CAAA,CAAU,IAAIlG,CAAAA,CAAakG,CAAI,CAAA,OAAA,CAASA,CAAI,CAAA,KAAA,CAAM,MAAQA,CAAAA,CAAAA,CAAI,KAAM,CAAA,IAAI,CAC/GA,CAAAA,CAAAA,YAAe,KAAc,CAAA,IAAIlG,EAAakG,CAAI,CAAA,OAAO,CACtD,CAAA,IAAIlG,CAAakG,CAAAA,CAAG,CAGvBC,CAAAA,CAAAA,CAAqB,IAGlB,OAAO,MAAW,EAAA,WAAA,EAAe,OAAO,MAAA,CAAO,QAAa,EAAA,WAAA,EAAe,OAAO,SAAc,EAAA,WAAA,CAUzG,IAAMC,EAAAA,CAAY,CAChB,KAAA,CAAO,YACP,CAAA,IAAA,CAAM,gBACN,IAAM,CAAA,cACR,CAEMC,CAAAA,EAAAA,CAAU,CAACC,CAAAA,CAA+BC,CAAmBC,CAAAA,GAAAA,CAAAA,GAAgB,CACjF,GAAKL,CAAAA,EAYMA,CAAAA,CAAAA,EAET,EAAA,OAAA,CAAQ,GAAI,CAAA,CAAA,GAAA,EAAMG,CAAM,CAAA,WAAA,EAAa,CAAA,GAAA,EAAMC,CAAM,CAAA,CAAA,CAAA,CAAKH,EAAUE,CAAAA,CAAK,EAAG,GAAGE,CAAI,CAZ/E,CAAA,KAAA,OAAQF,CAAO,EACb,IAAK,OAAA,CACH,QAAQ,KAAM,CAAA,GAAGE,CAAI,CAAA,CACrB,MACF,IAAK,MACH,CAAA,OAAA,CAAQ,KAAK,GAAGA,CAAI,CACpB,CAAA,MACF,QACE,OAAA,CAAQ,GAAI,CAAA,GAAGA,CAAI,EACvB,CAKJ,CAAA,CAEMC,EAAQ,CAAA,CAACH,CAA+BC,CAAAA,CAAAA,CAAAA,GAAmBC,IAAgB,CAvDjF,IAAA3E,CAwDMsE,CAAAA,CAAAA,EAEAtE,EAAAA,CAAAA,CAAAA,CAAAA,CAAA,OAAS,EAAA,IAAA,CAAA,KAAA,CAAA,CAAA,OAAA,CAAA,GAAA,GAAT,YAAAA,CAAc,CAAA,KAAA,IAAU,MAC5BwE,EAAAA,EAAAA,CAAQC,CAAOC,CAAAA,CAAAA,CAAQ,GAAGC,CAAI,EAChC,CAYME,CAAAA,CAAAA,CAAwB,CAC5BC,CAAAA,CACAC,CACGJ,CAAAA,GAAAA,CAAAA,GACe1D,CAAA,CAAA,KAAA,CAAA,CAAA,IAAA,CAAA,WAAA,CAClB,IAAM+D,CAAAA,CAA4B,EAAC,CAEnCF,CAAU,CAAA,OAAA,CAASG,CAAa,EAAA,CAC9B,IAAMC,CAAOD,CAAAA,CAAAA,CAASF,CAAI,CAAA,CAC1B,GAAI,OAAOG,CAAS,EAAA,UAAA,CAClB,GAAI,CACF,IAAMnD,CAAAA,CAASmD,CAAK,CAAA,GAAGP,CAAI,CAAA,CACvB5C,aAAkB,OACpBiD,EAAAA,CAAAA,CAAS,IAAKjD,CAAAA,CAAM,EAExB,CAAA,MAASjD,CAAO,CAAA,CACd8F,EAAM,CAAA,OAAA,CAAS,CAA2B,wBAAA,EAAA,MAAA,CAAOG,CAAI,CAAC,CAAKjG,CAAAA,CAAAA,CAAAA,CAAK,EAClE,CAEJ,CAAC,CAED,CAAA,MAAM,OAAQ,CAAA,UAAA,CAAWkG,CAAQ,EACnC,GAEM5C,EAAS+C,CAAAA,CAAAA,EAAe,IAAI,OAAA,CAAS9C,CAAY,EAAA,UAAA,CAAWA,CAAS8C,CAAAA,CAAE,CAAC,CC9F9E,CAAA,IAAMtE,CAAN,CAAA,KAAoB,CAGlB,OAAO,SAAUD,CAAAA,CAAAA,CAAkC,CACjD,IAAA,CAAK,MAASA,CAAAA,EAChB,CAEA,OAAO,SAAgC,EAAA,CACrC,OAAO,IAAK,CAAA,MACd,CACF,ECTawE,IAAAA,EAAAA,CAAN,KAAsC,CAC3C,MAAM/G,CAAoBsF,CAAAA,GAAAA,CAAAA,CAAqB,CAC7C,OAAA,CAAQ,KAAMtF,CAAAA,CAAAA,CAAS,GAAGsF,CAAM,EAClC,CAEA,IAAA,CAAKtF,CAAoBsF,CAAAA,GAAAA,CAAAA,CAAqB,CAC5C,OAAA,CAAQ,IAAKtF,CAAAA,CAAAA,CAAS,GAAGsF,CAAM,EACjC,CAEA,IAAKtF,CAAAA,CAAAA,CAAAA,GAAoBsF,CAAqB,CAAA,CACxCW,GACF,CAAA,OAAA,CAAQ,IAAK,CAAA,CAAA,SAAA,EAAYjG,CAAO,CAAA,CAAA,CAAI,mCAAqC,CAAA,EAAA,CAAI,GAAGsF,CAAM,CAAA,CAItF,OAAQ,CAAA,IAAA,CAAK,CAA0BtF,qBAAAA,EAAAA,CAAO,CAAI,CAAA,CAAA,GAAGsF,CAAM,EAE/D,CAEA,KAAMtF,CAAAA,CAAAA,CAAAA,GAAoBsF,CAAqB,CAAA,CACzCW,CAAmB,EAAA,CACrB,OAAQ,CAAA,KAAA,CAAM,CAAajG,UAAAA,EAAAA,CAAO,CAAI,CAAA,CAAA,uCAAA,CAAyC,EAAI,CAAA,GAAGsF,CAAM,CAI5F,CAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,sBAAA,EAAwBtF,CAAO,CAAA,CAAA,CAAI,GAAGsF,CAAM,EAE9D,CAEA,QAAA,CAAStF,CAAoBsF,CAAAA,GAAAA,CAAAA,CAAqB,CAC5CW,CAAAA,EACF,CAAA,OAAA,CAAQ,MAAM,CAAiBjG,cAAAA,EAAAA,CAAO,CAAI,CAAA,CAAA,gCAAA,CAAkC,EAAI,CAAA,GAAGsF,CAAM,CAAA,CAIzF,OAAQ,CAAA,KAAA,CAAM,CAA+BtF,2BAAAA,EAAAA,CAAO,CAAI,CAAA,CAAA,GAAGsF,CAAM,EAErE,CACF,EC/BA,IAAM0B,EAAN,CAAA,KAAyE,CAKvE,WAAA,CAAY/D,CAA2B,CAAA,CAHvC,KAAQ,WAAc,CAAA,CAAA,CACtB,IAAQ,CAAA,KAAA,CAAkE,EAAC,CAGzE,IAAK,CAAA,OAAA,CAAUA,EACjB,CAEO,OAAA,CAAQgE,CAA0C,CAAA,CACvD,IAAM1E,CAAAA,CAASC,CAAc,CAAA,SAAA,EAC7BD,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,CAAA,iCAAA,EAAoC0E,CAAK,CAAA,EAAE,IACzDhD,WAAQ,CAAA,IAAA,CAAKgD,CAAK,CAAA,gBAAA,CAAkB,IAAYrE,CAAAA,CAAA,IAE9C,CAAA,IAAA,CAAA,WAAA,CAAA,OADe3B,EAAiB,SAAU,EAAA,CAC5B,eAAgB,CAAA,wBAAA,CAAiCiG,CAAmBtE,EAAAA,CAAAA,CAAA,IAChFsE,CAAAA,IAAAA,CAAAA,WAAAA,CAAAA,CAAAA,CAAS,aAAa,IAAMD,CAAAA,CAAAA,CAAK,EAAE,CAAA,CACnC,IAAK,CAAA,KAAA,CAAM,IAAK,CAAA,CAAE,IAAAA,CAAAA,CAAAA,CAAM,QAAAC,CAAAA,CAAS,CAAC,CAAA,CAClC3E,CAAA,EAAA,IAAA,EAAAA,EAAQ,KAAM,CAAA,CAAA,uCAAA,EAA0C0E,CAAK,CAAA,EAAE,CACjE,CAAA,EAAA,CAAA,CAAC,CACH,CAAA,CAAC,EACD,IAAK,CAAA,YAAA,GACP,CAEQ,kBAAmBA,CAAAA,CAAAA,CAAoCE,CAAkD,CAAA,CAC/G,IAAM5E,CAASC,CAAAA,CAAAA,CAAc,SAAU,EAAA,CACvC,OAAAD,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,CAAA,qDAAA,EAAwD,IAAK,CAAA,OAAA,CAAQ,OAAO,CAAA,MAAA,EAAS0E,CAAK,CAAA,EAAE,IACnG,IAAI,OAAA,CAAQ,CAACjD,CAAAA,CAASoD,CAAW,GAAA,CACtC,IAAMC,CAAAA,CAAU,UAAW,CAAA,IAAM,CAC/B9E,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,IAAK,CAAA,CAAA,8CAAA,EAAiD0E,EAAK,EAAE,CAAA,CAAA,CAAA,CACrEG,CACE,CAAA,IAAI5B,EAAsB,CAAA,CACxB,IAAM,CAAA,oBAAA,CACN,KAAO,CAAA,IAAI,KAAM,CAAA,oBAAoB,CACvC,CAAC,CACH,EACF,EAAG,IAAK,CAAA,OAAA,CAAQ,OAAO,CAAA,CAEvBjD,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,sDAAsD0E,CAAK,CAAA,EAAE,CAC3EA,CAAAA,CAAAA,CAAAA,CAAAA,CACG,OAAQA,CAAAA,CAAAA,CAAK,OAASE,CAAAA,CAAoB,EAC1C,IAAMzD,CAAAA,CAAAA,EAAW,CAChBnB,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,CAAA,mDAAA,EAAsD0E,CAAK,CAAA,EAAE,CAC3E,CAAA,CAAA,CAAA,YAAA,CAAaI,CAAO,CAAA,CACpBrD,CAAQN,CAAAA,CAAM,EAChB,CAAC,CAAA,CACA,KAAOjD,CAAAA,CAAAA,EAAU,CAChB8B,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAK,CAAoD0E,iDAAAA,EAAAA,CAAAA,CAAK,EAAE,CAAA,CAAA,CAAA,CACxE,YAAaI,CAAAA,CAAO,CACpBD,CAAAA,CAAAA,CAAO3G,CAAK,EACd,CAAC,EACL,CAAC,CACH,CAEc,gBAAiBwG,CAAAA,CAAAA,CAAoCK,CAA2C,CAAA,CAAA,OAAA1E,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAC5G,IAAML,CAAAA,CAASC,CAAc,CAAA,SAAA,GAC7B,OAAO,MAAMyB,WAAQ,CAAA,IAAA,CAAKgD,CAAK,CAAA,gBAAA,CAAkB,IAAYrE,CAAAA,CAAA,sBAC3D,IAAM1B,CAAAA,CAASD,CAAiB,CAAA,SAAA,EAChC,CAAA,OAAO,MAAMC,CAAAA,CAAO,gBAAgB,oBAA6BkC,CAAAA,CAAAA,EAAeR,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAC9EL,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,CAAkD,+CAAA,EAAA,IAAA,CAAK,OAAQ,CAAA,UAAA,CAAa+E,CAAc,CAAA,MAAA,EAASL,CAAK,CAAA,EAAE,IACxH7D,CAAK,CAAA,YAAA,CAAa,SAAW,CAAA,IAAA,CAAK,OAAQ,CAAA,UAAA,CAAakE,CAAc,CAAA,CACrE,GAAI,CACF,IAAMH,CAAAA,CAAuBlD,WAAQ,CAAA,MAAA,EAC/BR,CAAAA,CAAAA,CAAW,MAAM,IAAK,CAAA,kBAAA,CAAmBwD,CAAME,CAAAA,CAAoB,CACzE,CAAA,OAAA/D,CAAK,CAAA,SAAA,CAAU,CAAE,IAAA,CAAMO,kBAAe,CAAA,EAAG,CAAC,CAAA,CAC1CP,CAAK,CAAA,GAAA,GACEK,CACT,CAAA,MAAShD,CAAO,CAAA,CACd,GAAI6G,CAAAA,GAAmB,CACrB,CAAA,MAAA/E,GAAA,IAAAA,EAAAA,CAAAA,CAAQ,IAAK,CAAA,CAAA,sDAAA,EAAyD0E,CAAK,CAAA,EAAE,CAE7E7D,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,KACC3C,CAAAA,CAAAA,CAGR,IAAI8G,CAAAA,CAAc,CACdC,CAAAA,CAAAA,CAAAA,CACF,IAAK,CAAA,OAAA,CAAQ,KAAM,CAAA,YAAA,CAAe,IAAK,CAAA,GAAA,CAAI,IAAK,CAAA,OAAA,CAAQ,KAAM,CAAA,iBAAA,CAAmB,KAAK,OAAQ,CAAA,UAAA,CAAaF,CAAc,CAAA,CAC3H,GAAIxG,CAAAA,CAAiB,kBAAmBL,CAAAA,CAAK,EAAG,CAE9C,GAAIA,CAAM,CAAA,KAAA,CAAM,MAAW,GAAA,GAAA,CAAK,CAC9B8B,CAAAA,EAAA,MAAAA,CAAQ,CAAA,IAAA,CAAK,CAAyD0E,sDAAAA,EAAAA,CAAAA,CAAK,EAAE,CAAA,CAAA,CAAA,CAC7E,IAAMQ,CAAAA,CAAcC,EAA2B,CAAA,SAAA,CAAUT,CAAK,CAAA,OAAO,CACrE,CAAA,GAAIQ,CAAY,CAAA,OAAA,CAAS,CACvB,IAAME,CAAAA,CAAaF,CAAY,CAAA,IAAA,CAAK,KAAM,CAAA,aAAA,CAAchH,CAAM,CAAA,KAAA,CAAM,OAAO,CAC3E8G,CAAAA,CAAAA,CAAcI,CAAW,CAAA,WAAA,CAErBA,CAAW,CAAA,OAAA,CAAU,CACvBH,GAAAA,CAAAA,CAAUG,EAAW,OAEzB,EAAA,CACA,IAAMC,CAAAA,CAAAA,CAAiB,EAAK,CAAA,IAAA,CAAK,MAAO,EAAA,CAAI,EAAM,EAAA,GAAA,CAClDJ,CAAWI,EAAAA,EACb,CAEInH,CAAAA,CAAM,KAAM,CAAA,MAAA,EAAU,KAAOA,CAAM,CAAA,KAAA,CAAM,MAAS,CAAA,GAAA,GACpD8B,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,IAAA,CAAK,CAAgC9B,6BAAAA,EAAAA,CAAAA,CAAM,KAAM,CAAA,MAAM,CAAewG,YAAAA,EAAAA,CAAAA,CAAK,EAAE,CAAA,CAAA,CAAA,EAIzF,MACE1E,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,IAAA,CAAK,CAA4D0E,yDAAAA,EAAAA,CAAAA,CAAK,EAAE,CAAA,CAAA,CAAI,CAAE,KAAA,CAAAxG,CAAM,CAAA,CAAA,CAK9F,GAAK8G,CAAAA,CAOH,OAAO,MAAMrG,EAAO,eAAgB,CAAA,uBAAA,CAAgC2G,CAAoBjF,EAAAA,CAAAA,CAAA,IACtF,CAAA,IAAA,CAAA,WAAA,CAAA,OAAAL,CAAA,EAAA,IAAA,EAAAA,EAAQ,KAAM,CAAA,CAAA,yCAAA,EAA4CiF,CAAO,CAAA,QAAA,EAAWP,CAAK,CAAA,EAAE,CACnF,CAAA,CAAA,CAAA,MAAMlD,GAAMyD,CAAO,CAAA,CACnBK,CAAU,CAAA,GAAA,EACVzE,CAAAA,CAAAA,CAAK,GAAI,EAAA,CACF,IAAK,CAAA,gBAAA,CAAiB6D,CAAMK,CAAAA,CAAAA,CAAiB,CAAC,CACvD,CAAC,CAAA,CAAA,CAXD,MAAA/E,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,IAAA,CAAK,CAAqE0E,kEAAAA,EAAAA,CAAAA,CAAK,EAAE,CAAA,CAAA,CAAA,CACzF7D,EAAK,GAAI,EAAA,CACH3C,CAWV,CAAA,OAAE,EAGJ,CAAC,CAAA,CACH,EAAC,CACH,CAAA,CAAA,CAEc,YAAe,EAAA,CAAA,OAAAmC,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAzI/B,IAAAjB,CAAAA,CA0II,IAAMY,CAAAA,CAASC,CAAc,CAAA,SAAA,EAC7B,CAAA,GAAI,IAAK,CAAA,WAAA,EAAe,KAAK,OAAQ,CAAA,kBAAA,CAAoB,CACvDD,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,uDAAA,CAAA,CACd,MACF,CAEA,IAAMuF,CAAO,CAAA,IAAA,CAAK,KAAM,CAAA,KAAA,EACxB,CAAA,GAAI,CAACA,CAAM,CAAA,CACTvF,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,6CACd,CAAA,CAAA,MACF,CAEA,GAAM,CAAE,IAAA,CAAA0E,CAAM,CAAA,QAAA,CAAAC,CAAS,CAAA,CAAIY,EACvBZ,CACFA,EAAAA,CAAAA,CAAS,GAAI,EAAA,CAGf,IAAK,CAAA,WAAA,EAAe,CACpB3E,CAAAA,CAAAA,EAAA,MAAAA,CAAQ,CAAA,KAAA,CAAM,CAA0C,uCAAA,EAAA,IAAA,CAAK,WAAW,CAAA,CAAA,CAAA,CACxEA,CAAA,EAAA,IAAA,EAAAA,EAAQ,KAAM,CAAA,CAAA,8CAAA,EAAiD0E,CAAK,CAAA,EAAE,CAEtE,CAAA,CAAA,CAAA,GAAI,CACF,IAAMxD,CAAqB,CAAA,MAAM,IAAK,CAAA,gBAAA,CAAiBwD,CAAM,CAAA,IAAA,CAAK,OAAQ,CAAA,UAAU,EACpF1E,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,CAAgD0E,6CAAAA,EAAAA,CAAAA,CAAK,EAAE,CAAA,CAAA,CAAA,CACrEA,EAAK,OAAQxD,CAAAA,CAAQ,EACvB,CAAA,MAAShD,CAAO,CAAA,CACd8B,CAAA,EAAA,IAAA,EAAAA,EAAQ,IAAK,CAAA,CAAA,2CAAA,EAA8C0E,CAAK,CAAA,EAAE,CAClEA,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,MAAOxG,CAAAA,CAAK,EACnB,CAAA,OAAE,CACA,IAAA,CAAK,WAAe,EAAA,CAAA,CACpB8B,CAAA,EAAA,IAAA,EAAAA,EAAQ,KAAM,CAAA,CAAA,uCAAA,EAA0C,IAAK,CAAA,WAAW,CACxEZ,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAR,SAAM,CAAA,OAAA,CAAQ8F,EAAK,gBAAgB,CAAA,GAAnC,IAAAtF,EAAAA,CAAAA,CAAsC,GACtC,EAAA,CAAA,IAAA,CAAK,YAAa,GACpB,CACF,CACF,CAAA,CAAA,ECxKMoG,IAAAA,EAAAA,CAAN,KAAqD,CAGnD,WAAYC,CAAAA,CAAAA,CAAqB,GAAM,CAAA,CACrC,IAAK,CAAA,KAAA,CAAQ,IAAIC,iBAAe,CAAA,CAC9B,GAAKD,CAAAA,CAAAA,CACL,UAAY,CAAA,CAAA,CAAA,CACZ,cAAgB,CAAA,CAAA,CAClB,CAAC,CACD,CAAA,IAAMzF,CAASC,CAAAA,CAAAA,CAAc,SAAU,EAAA,CACvCD,CAAA,EAAA,IAAA,EAAAA,EAAQ,KAAM,CAAA,CAAA,sCAAA,EAAyCyF,CAAU,CAAA,CAAA,EACnE,CAEM,GAAA,CAAIxG,CAAqC,CAAA,CAAA,OAAAoB,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAC7C,IAAML,CAAAA,CAASC,CAAc,CAAA,SAAA,EAC7B,CAAA,OAAAD,GAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,CAAA,2BAAA,EAA8Bf,CAAG,CAAA,CAAA,CAAA,CACxC,IAAI,OAAA,CAASwC,CAAY,EAAA,CAC9B,IAAMvC,CAAAA,CAAQ,IAAK,CAAA,KAAA,CAAM,GAAID,CAAAA,CAAG,EAChCe,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,iCAAmCd,CAAAA,CAAAA,CAAAA,CACjDuC,CAAQvC,CAAAA,CAAK,EACf,CAAC,CACH,CAAA,CAAA,CAEM,GAAID,CAAAA,CAAAA,CAAaC,CAAyB,CAAA,CAAA,OAAAmB,EAAA,IAC9C,CAAA,IAAA,CAAA,WAAA,CAAA,IAAML,CAASC,CAAAA,CAAAA,CAAc,SAAU,EAAA,CACvC,OAAAD,CAAAA,EAAA,MAAAA,CAAQ,CAAA,KAAA,CAAM,CAA8Bf,2BAAAA,EAAAA,CAAG,CAAaC,SAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CACrD,IAAI,OAAA,CAASuC,GAAY,CAC9B,IAAA,CAAK,KAAM,CAAA,GAAA,CAAIxC,CAAKC,CAAAA,CAAK,CACzBc,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,wBAAA,CAAA,CACdyB,CAAQ,GACV,CAAC,CACH,GAEM,MAAOxC,CAAAA,CAAAA,CAA4B,CAAAoB,OAAAA,CAAAA,CAAA,IACvC,CAAA,IAAA,CAAA,WAAA,CAAA,IAAML,CAASC,CAAAA,CAAAA,CAAc,WAC7B,CAAA,OAAAD,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,CAAiCf,8BAAAA,EAAAA,CAAG,IAC3C,IAAI,OAAA,CAASwC,CAAY,EAAA,CAC9B,IAAK,CAAA,KAAA,CAAM,MAAOxC,CAAAA,CAAG,CACrBe,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,2BAAA,CAAA,CACdyB,CAAQ,GACV,CAAC,CACH,CAAA,CAAA,CAEM,KAAuB,EAAA,CAAA,OAAApB,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAC3B,IAAML,CAAAA,CAASC,EAAc,SAAU,EAAA,CACvC,OAAAD,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,wBAAA,CAAA,CACP,IAAI,OAASyB,CAAAA,CAAAA,EAAY,CAC9B,IAAA,CAAK,KAAM,CAAA,KAAA,EACXzB,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,0BAAA,CAAA,CACdyB,CAAQ,GACV,CAAC,CACH,GACF,ECvDA,IAAMkE,EAAN,CAAA,KAAiD,CAE/C,MAAA,CAAOC,CAAgClI,CAAAA,CAAAA,CAAkCmI,CAAgD,CAAA,EAIzH,YAAA,EAAqB,EAGvB,ECHA,IAAMC,EAAAA,CAAiB,KACd,CACL,IAAM,CAAA,CACJ,OAAS,CAAA,OAAA,CAAQ,OACjB,CAAA,QAAA,CAAUC,mBAAG,CAAA,QAAA,GACb,YAAcA,CAAAA,mBAAAA,CAAG,IAAK,EACxB,CACF,CAAA,CAAA,CAGIC,EAAoB,CAAA,KACjB,CACL,OAAS,CAAA,CACP,OAAS,CAAA,SAAA,CAAU,SACnB,CAAA,SAAA,CAAW,SAAU,CAAA,SACvB,CACF,CClBF,CAAA,CAAA,IAAMC,EAAN,CAAA,KAAiD,CAe/C,WAAA,EAAc,CAdd,IAAA,CAAiB,YAAe,CAAA,KAAA,CAChC,IAAiB,CAAA,cAAA,CAAiB,QAGlC,CAAA,IAAA,CAAQ,aAAwB,CAAA,GAAA,CAChC,KAAQ,SAAoB,CAAA,CAAA,CAC5B,IAAQ,CAAA,WAAA,CAAsB,CAC9B,CAAA,IAAA,CAAQ,WAAsEvC,CAAAA,CAAAA,GAC1EsC,EAAkB,EAAA,CAClBF,EAAe,EAAA,CACnB,IAAQ,CAAA,oBAAA,CAA+B,qEAEvC,CAAA,IAAA,CAAQ,OAAuD,GAI/D,CAEQ,eAAA,EAAkB,CACpBpC,CAAAA,EACF,CAAA,IAAA,CAAK,UAAa,CAAA,MAAA,CAAO,WAAY,CAAA,IAAM,IAAK,CAAA,WAAA,EAAe,CAAA,IAAA,CAAK,aAAa,CAEjF,CAAA,IAAA,CAAK,UAAa,CAAA,WAAA,CAAY,IAAM,IAAA,CAAK,WAAY,EAAA,CAAG,KAAK,aAAa,EAE9E,CAEQ,cAAA,EAAiB,CACnBA,CAAAA,EACF,CAAA,MAAA,CAAO,cAAc,IAAK,CAAA,UAAU,CAEpC,CAAA,aAAA,CAAc,IAAK,CAAA,UAAU,EAEjC,CAEA,MAAOkC,CAAAA,CAAAA,CAAgClI,CAAkCmI,CAAAA,CAAAA,CAAgD,CACvH,IAAMK,CAAiC,CAAA,CACrC,MAAAN,CACA,CAAA,MAAA,CAAAlI,CACA,CAAA,UAAA,CAAAmI,CACA,CAAA,SAAA,CAAW,IAAI,IAAA,EAAO,CAAA,WAAA,EACtB,CAAA,YAAA,CAAc,IAAK,CAAA,YAAA,CACnB,cAAgB,CAAA,IAAA,CAAK,eACrB,WAAa,CAAA,IAAA,CAAK,WACpB,CAAA,CACA,IAAK,CAAA,MAAA,CAAO,IAAK,CAAA,CAAE,KAAOK,CAAAA,CAAAA,CAAgB,OAAS,CAAA,CAAE,CAAC,CAAA,CAElD,IAAK,CAAA,MAAA,CAAO,QAAU,IAAK,CAAA,SAAA,EAC7B,IAAK,CAAA,WAAA,GAET,CAEc,WAA6B,EAAA,CAAA,OAAA7F,EAAA,IACzC,CAAA,IAAA,CAAA,WAAA,CAAA,GAAI,IAAK,CAAA,MAAA,CAAO,MAAW,GAAA,CAAA,CAAG,OAE9B,IAAM8F,EAAe,CAAC,GAAG,IAAK,CAAA,MAAM,CACpC,CAAA,IAAA,CAAK,MAAS,CAAA,EAEE,CAAA,CAAA,MAAM,IAAK,CAAA,UAAA,CAAWA,CAAa,CAAA,GAAA,CAAK,CAAM,EAAA,CAAA,CAAE,KAAK,CAAC,CAAA,GAEpE,IAAK,CAAA,MAAA,CAAO,IACV,CAAA,GAAGA,CAAa,CAAA,MAAA,CAAQ,GAAM,CAAE,CAAA,OAAA,CAAU,IAAK,CAAA,WAAW,CAAE,CAAA,GAAA,CAAK,CAAO,GAAA,CAAE,MAAO,CAAE,CAAA,KAAA,CAAO,OAAS,CAAA,CAAA,CAAE,OAAU,CAAA,CAAE,CAAE,CAAA,CACrH,EAEJ,CAAA,CAAA,CAEc,UAAWC,CAAAA,CAAAA,CAA4C,CAAA/F,OAAAA,CAAAA,CAAA,IACnE,CAAA,IAAA,CAAA,WAAA,CAAA,GAAI,CAUF,OATiB,CAAA,MAAMT,mBAAM,CAAA,IAAA,CAC3B,IAAK,CAAA,oBAAA,CACL,CAAE,MAAA,CAAAwG,CAAO,CACT,CAAA,CACE,OAAS,CAAA,CACP,cAAgB,CAAA,kBAClB,CACF,CACF,GACgB,MAAW,GAAA,GAC7B,CAAQC,MAAAA,CAAAA,CAAA,CACN,OAAO,CACT,CAAA,CACF,CAEO,CAAA,CAAA,YAAA,EAAe,CACpB,IAAA,CAAK,cAAe,EAAA,CACpB,IAAK,CAAA,WAAA,GACP,CACF,ECzFMC,IAAAA,EAAAA,CAAN,KAAuB,CAGrB,OAAO,oBAAA,CAAqBC,EAA6C,CACvE,OAAI,IAAK,CAAA,SAAA,GAAc,KACd,CAAA,CAAA,IAAA,CAAK,SAEZ,EAAA,IAAA,CAAK,UAAYA,CAAkB,CAAA,IAAIN,EAAkB,CAAA,IAAIN,EACtD,CAAA,IAAA,CAAK,SAEhB,CAAA,CACF,ECEA,IAAMa,EAAiB1G,CAAAA,KAAAA,CAAE,MAAO,CAAA,CAC9B,YAAcA,CAAAA,KAAAA,CAAE,KAAK,IAAMqD,EAAAA,CAAa,OAAQ,EAAC,CAAE,CAAA,QAAA,EACnD,CAAA,uBAAA,CAAyBrD,MAAE,OAAQ,EAAA,CAAE,QAAS,EAAA,CAC9C,UAAYA,CAAAA,KAAAA,CAAE,MAAmB,EAAA,CAAE,UACnC,CAAA,iBAAA,CAAmBA,KAAE,CAAA,MAAA,EAAiD,CAAA,QAAA,EACtE,CAAA,qBAAA,CAAuBA,KAAE,CAAA,KAAA,CAAMA,KAAE,CAAA,MAAA,EAAkC,CAAA,CAAE,QAAS,EAAA,CAAE,UAChF,CAAA,kBAAA,CAAoBA,KAAE,CAAA,MAAA,EAAkD,CAAA,QAAA,EACxE,CAAA,sBAAA,CAAwBA,MAAE,KAAMA,CAAAA,KAAAA,CAAE,MAAkC,EAAC,CAAE,CAAA,QAAA,EAAW,CAAA,QAAA,GAClF,qBAAuBA,CAAAA,KAAAA,CAAE,MAAmD,EAAA,CAAE,QAAS,EAAA,CACvF,yBAA2BA,CAAAA,KAAAA,CAAE,KAAMA,CAAAA,KAAAA,CAAE,MAAqC,EAAC,CAAE,CAAA,QAAA,EAAW,CAAA,QAAA,GACxF,mBAAqBA,CAAAA,KAAAA,CAAE,KAAMA,CAAAA,KAAAA,CAAE,MAA+B,EAAC,CAAE,CAAA,QAAA,GAAW,QAAS,EAAA,CACrF,MAAQA,CAAAA,KAAAA,CAAE,MAAe,EAAA,CAAE,QAAS,EAAA,CACpC,UAAWA,KACR,CAAA,MAAA,CAAO,CACN,MAAA,CAAQA,KAAE,CAAA,MAAA,EAAiB,CAAA,QAAA,EAC3B,CAAA,KAAA,CAAOA,KAAE,CAAA,MAAA,EAAgB,CAAA,QAAA,EAC3B,CAAC,EACA,QAAS,EAAA,CACZ,eAAiBA,CAAAA,KAAAA,CAAE,OAAQ,EAAA,CAAE,QAAS,EAAA,CACtC,gBAAkBA,CAAAA,KAAAA,CAAE,OAAQ,EAAA,CAAE,QAAS,EACzC,CAAC,CAAA,CAGK2G,GAAoC3G,KAAE,CAAA,MAAA,CAAO,CACjD,WAAA,CAAaA,KAAE,CAAA,OAAA,EAAU,CAAA,QAAA,EAAW,CAAA,OAAA,CAAQ,CAAI,CAAA,CAAA,CAChD,aAAeA,CAAAA,KAAAA,CAAE,MAAOA,CAAAA,KAAAA,CAAE,QAAQ,CAAA,CAAE,QAAS,EAAA,CAC7C,oBAAsBA,CAAAA,KAAAA,CAAE,GAAI,EAAA,CAAE,UAChC,CAAC,CAGKqF,CAAAA,EAAAA,CAA6BrF,KAAE,CAAA,MAAA,CAAO,CAC1C,KAAA,CAAOA,MAAE,MAAoB,EAAA,CAC7B,MAAQ4G,CAAAA,YAAAA,EACR,CAAA,QAAA,CAAU5G,KAAE,CAAA,KAAA,CAAM6G,aAAQ,EAAC,CAC3B,CAAA,KAAA,CAAO7G,KAAE,CAAA,KAAA,CAAM8G,UAAK,EAAC,EAAE,QAAS,EAAA,CAChC,OAASH,CAAAA,EAAAA,CAAkC,QAAS,EACtD,CAAC,CAAA,CAGKI,GAAkC/G,KAAE,CAAA,MAAA,CAAO,CAC/C,aAAA,CAAeA,KAAE,CAAA,MAAA,CAAOA,KAAE,CAAA,MAAA,EAAQ,CAAE,CAAA,QAAA,EACpC,CAAA,oBAAA,CAAsBA,KAAE,CAAA,GAAA,EAAM,CAAA,QAAA,EAChC,CAAC,CAGKgH,CAAAA,EAAAA,CAA2BhH,KAAE,CAAA,MAAA,CAAO,CACxC,KAAA,CAAOA,MAAE,MAAoB,EAAA,CAC7B,MAAQ4G,CAAAA,YAAAA,EACR,CAAA,QAAA,CAAU5G,KAAE,CAAA,KAAA,CAAM6G,eAAS,CAAA,CAC3B,KAAO7G,CAAAA,KAAAA,CAAE,KAAM8G,CAAAA,UAAAA,EAAM,CAAA,CAAE,UACvB,CAAA,OAAA,CAASC,EAAgC,CAAA,QAAA,EACzC,CAAA,WAAA,CAAa/G,KAAE,CAAA,UAAA,CAAW,WAAW,CAAA,CAAE,QAAS,EAClD,CAAC,CAAA,CAIKiH,EAAqCjH,CAAAA,KAAAA,CAAE,OAAO,CAClD,WAAA,CAAaA,KAAE,CAAA,OAAA,EAAU,CAAA,QAAA,EAAW,CAAA,OAAA,CAAQ,CAAI,CAAA,CAAA,CAChD,aAAeA,CAAAA,KAAAA,CAAE,MAAOA,CAAAA,KAAAA,CAAE,MAAO,EAAC,EAAE,QAAS,EAAA,CAC7C,oBAAsBA,CAAAA,KAAAA,CAAE,GAAI,EAAA,CAAE,QAAS,EACzC,CAAC,CAAA,CAGKkH,EAA8BlH,CAAAA,KAAAA,CAAE,MAAO,CAAA,CAC3C,KAAOA,CAAAA,KAAAA,CAAE,QACT,CAAA,MAAA,CAAQ4G,YAAO,EAAA,CACf,iBAAmBO,CAAAA,uBAAAA,EACnB,CAAA,OAAA,CAASF,GAAmC,QAAS,EACvD,CAAC,CAAA,CAGKG,EAAkCpH,CAAAA,KAAAA,CAAE,MAAO,CAAA,CAC/C,MAAOA,KAAE,CAAA,MAAA,EACT,CAAA,IAAA,CAAMA,KAAE,CAAA,GAAA,EACR,CAAA,OAAA,CAASA,KAAE,CAAA,MAAA,CAAOA,KAAE,CAAA,MAAA,EAAQ,CAAA,CAC5B,KAAOA,CAAAA,KAAAA,CAAE,OAAOA,KAAE,CAAA,MAAA,EAAQ,CAAA,CAAE,QAAS,EACvC,CAAC,CAAA,CAGKqH,GAAgCrH,KAAE,CAAA,MAAA,CAAO,CAC7C,KAAA,CAAOA,KAAE,CAAA,MAAA,EACT,CAAA,IAAA,CAAMA,MAAE,GAAI,EAAA,CACZ,OAASA,CAAAA,KAAAA,CAAE,MAAOA,CAAAA,KAAAA,CAAE,MAAO,EAAC,CAC5B,CAAA,KAAA,CAAOA,KAAE,CAAA,MAAA,CAAOA,KAAE,CAAA,MAAA,EAAQ,CAAA,CAAE,UAC9B,CAAC,CAGKsH,CAAAA,EAAAA,CAAmCtH,KAAE,CAAA,MAAA,CAAO,CAChD,KAAA,CAAOA,MAAE,MAAyB,EAAA,CAClC,IAAMA,CAAAA,KAAAA,CAAE,GAAI,EAAA,CACZ,OAASA,CAAAA,KAAAA,CAAE,OAAOA,KAAE,CAAA,MAAA,EAAQ,CAAA,CAC5B,KAAOA,CAAAA,KAAAA,CAAE,MAAOA,CAAAA,KAAAA,CAAE,MAAO,EAAC,CAAE,CAAA,QAAA,EAC9B,CAAC,CAGKuH,CAAAA,EAAAA,CAAiCvH,MACpC,MAAO,CAAA,CACN,SAAWA,CAAAA,KAAAA,CAAE,MAAsB,EAAA,CACnC,cAAgBA,CAAAA,KAAAA,CAAE,MAA2B,EAAA,CAAE,QAAS,EAAA,CACxD,KAAOA,CAAAA,KAAAA,CAAE,MAAoB,EAAA,CAAE,UACjC,CAAC,CACA,CAAA,MAAA,CACEnC,CAESA,EAAAA,CAAAA,CAAK,cAAmB,GAAA,KAAA,CAAA,GAAgBA,CAAK,CAAA,KAAA,GAAU,KAEjE,CAAA,CAAA,CAAA,CACE,OAAS,CAAA,oEAAA,CACT,IAAM,CAAA,CAAC,iBAAkB,OAAO,CAClC,CACF,CAAA,CAGI2J,EAAwCxH,CAAAA,KAAAA,CAAE,MAAO,CAAA,CACrD,cAAeA,KAAE,CAAA,MAAA,CAAOA,KAAE,CAAA,MAAA,EAAQ,CAAA,CAAE,QAAS,EAAA,CAC7C,qBAAsBA,KAAE,CAAA,GAAA,EAAM,CAAA,QAAA,EAChC,CAAC,CAGKyH,CAAAA,EAAAA,CAAiCzH,KAAE,CAAA,MAAA,CAAO,CAC9C,KAAA,CAAOA,KAAE,CAAA,KAAA,CAAM8G,UAAK,EAAC,EACrB,QAAU9G,CAAAA,KAAAA,CAAE,KAAM6G,CAAAA,aAAAA,EAAS,CAAA,CAC3B,OAASW,CAAAA,EAAAA,CAAsC,UAC/C,CAAA,WAAA,CAAaxH,KAAE,CAAA,UAAA,CAAW,WAAW,CAAA,CAAE,QAAS,EAClD,CAAC,CC7ID,CCQM0H,IAAAA,EAAAA,CAA6B1H,KAAE,CAAA,MAAA,CAAO,CAC1C,KAAOA,CAAAA,KAAAA,CAAE,MAA+C,EAAA,CACxD,KAAOA,CAAAA,KAAAA,CAAE,MAAoB,EAAA,CAC7B,OAAQ4G,YAAO,EAAA,CACf,QAAU5G,CAAAA,KAAAA,CAAE,KAAM6G,CAAAA,aAAAA,EAAS,CAAA,CAC3B,KAAO7G,CAAAA,KAAAA,CAAE,KAAM8G,CAAAA,UAAAA,EAAM,CAAA,CAAE,QAAS,EAAA,CAChC,YAAa9G,KAAE,CAAA,OAAA,EACf,CAAA,aAAA,CAAeA,KAAE,CAAA,MAAA,CAAOA,KAAE,CAAA,MAAA,EAAQ,CAAE,CAAA,QAAA,EACpC,CAAA,SAAA,CAAWA,KAAE,CAAA,KAAA,CAAMA,KAAE,CAAA,MAAA,EAAkC,CAAE,CAAA,QAAA,EAAW,CAAA,QAAA,EACpE,CAAA,oBAAA,CAAsBA,KAAE,CAAA,GAAA,EAAM,CAAA,QAAA,EAChC,CAAC,CAGK2H,CAAAA,EAAAA,CAA8B3H,KAAE,CAAA,MAAA,CAAO,CAC3C,OAASA,CAAAA,KAAAA,CAAE,MAAO,CAAA,CAChB,MAAQ4G,CAAAA,YAAAA,EACR,CAAA,QAAA,CAAU5G,MAAE,KAAM6G,CAAAA,aAAAA,EAAS,CAAA,CAC3B,KAAO7G,CAAAA,KAAAA,CAAE,KAAM8G,CAAAA,UAAAA,EAAM,CAAE,CAAA,QAAA,EACzB,CAAC,CACD,CAAA,QAAA,CAAUc,kBACV,CAAA,MAAA,CAAQ5H,KAAE,CAAA,OAAA,EACV,CAAA,WAAA,CAAaA,KAAE,CAAA,MAAA,EAAS,CAAA,GAAA,GAAM,QAAS,EAAA,CACvC,oBAAsBA,CAAAA,KAAAA,CAAE,GAAI,EAAA,CAAE,QAAS,EAAA,CACvC,SAAUA,KAAE,CAAA,MAAA,CAAO,CACjB,OAAA,CAASA,KAAE,CAAA,GAAA,EACX,CAAA,QAAA,CAAUA,MAAE,GAAI,EAClB,CAAC,CACH,CAAC,EDvBD,SAAe6H,EAAAA,CACbC,CACAC,CAAAA,CAAAA,CACAlH,CAC0C,CAAA,CAAA,OAAAN,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAC1C,IAAML,CAAAA,CAASC,EAAc,SAAU,EAAA,CACjC6H,CAA6BjH,CAAAA,CAAAA,EAAgBR,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CACjDL,CAAA,EAAA,IAAA,EAAAA,EAAQ,KAAM,CAAA,4BAAA,CAAA,CACdA,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,8BAAgC,CAAA,CAAE,QAAA4H,CAAQ,CAAA,CAAA,CACxD,IAAMjK,CAAAA,CAAO6J,EAA2B,CAAA,KAAA,CAAMI,CAAO,CAAA,CAC/C1D,CAAY0D,CAAAA,CAAAA,CAAQ,SAAa,EAAA,EACjCG,CAAAA,CAAAA,CAA0BrG,WAAQ,CAAA,MAAA,GAExC,GAAI,CACFuC,CACEC,CAAAA,CAAAA,CACA,aACA0D,CAAAA,CAAAA,CAAQ,oBACV,CAAA,CAEA,IAAMI,CAAAA,CAAe,CACnB,MAAA,CAAQrK,CAAK,CAAA,MAAA,CACb,QAAUA,CAAAA,CAAAA,CAAK,SACf,KAAOA,CAAAA,CAAAA,CAAK,KACd,CAAA,CAEMsK,CAAkB,CAAA,CACtB,GAAK,CAAA,MAAMtK,CAAK,CAAA,KAAA,CAAM,kBAAmBA,CAAAA,CAAAA,CAAK,MAAQA,CAAAA,CAAAA,CAAK,QAAUA,CAAAA,CAAAA,CAAK,KAAK,CAC/E,CAAA,OAAA,CAAS,MAAMA,CAAAA,CAAK,KAAM,CAAA,sBAAA,CAAuBA,CAAK,CAAA,MAAA,CAAQA,EAAK,QAAUA,CAAAA,CAAAA,CAAK,KAAK,CAAA,CACvF,IAAM,CAAA,MAAMA,CAAK,CAAA,KAAA,CAAM,oBAAoBA,CAAK,CAAA,MAAA,CAAQA,CAAK,CAAA,QAAA,CAAUA,CAAK,CAAA,KAAK,CACnF,CAAA,CAEK+F,CAAmB,EAAA,GACtBuE,CAAgB,CAAA,OAAA,CAAUjH,CAAAD,CAAAA,CAAAA,CAAA,EACrBkH,CAAAA,CAAAA,CAAgB,SADK,CAExB,MAAA,CAAQ,YACV,CAAA,CAAA,CAAA,CAEEtK,CAAK,CAAA,aAAA,GACPsK,CAAgB,CAAA,OAAA,CAAUlH,IAAA,EACrBkH,CAAAA,CAAAA,CAAgB,OAChBtK,CAAAA,CAAAA,CAAAA,CAAK,aAIZqC,CAAAA,CAAAA,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,MAAM,sCAAwC,CAAA,CAAE,eAAAiI,CAAAA,CAAgB,CACxE,CAAA,CAAA,IAAMC,CAAW9E,CAAAA,EAAAA,CAAgB,CAAiB6E,cAAAA,EAAAA,CAAAA,CAAgB,GAAG,CAAA,CAAA,EAAItK,CAAK,CAAA,KAAA,CAAM,WAAY,CAAA,IAAI,GAAIqK,CAAY,CAAA,CACpH,GAAIrK,CAAAA,CAAK,WAAa,CAAA,CACpBqC,CAAA,EAAA,IAAA,EAAAA,EAAQ,KAAM,CAAA,mCAAA,CAAA,CACd,IAAMmI,CAAAA,CAAiB,MAAMP,CAAAA,CAAQ,KAAM,CAAA,GAAA,CAAIM,CAAQ,CACvD,CAAA,GAAIC,CACF,CAAA,OAAAA,CAAe,CAAA,MAAA,CAAS,CACxBnI,CAAAA,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,+BAAA,CAAA,CACda,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,YAAA,CAAa,SAAU,CAC7BA,CAAAA,CAAAA,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAM,SAAU,CAAA,CAAE,IAAMO,CAAAA,kBAAAA,CAAe,EAAG,CAC1C6C,CAAAA,CAAAA,CAAAA,CACEC,CACA,CAAA,cAAA,CACA0D,CAAQ,CAAA,oBAAA,CACRO,CACF,CAAA,CACAnI,GAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,sCAAA,CAAwC,CAAE,cAAA,CAAAmI,CAAe,CAAA,CAAA,CAChEA,CAEX,CAEAnI,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,+BACd,CAAA,CAAA,IAAMoI,EAAM,IAAK,CAAA,GAAA,EACXC,CAAAA,CAAAA,CAAmB,MAAMR,CAAAA,CAAO,IACpCI,CAAAA,CAAAA,CAAgB,IAChBA,CAAgB,CAAA,IAAA,CAChBA,CAAgB,CAAA,OAAA,CAChB,KACAF,CAAAA,CAAAA,CACF,CACMO,CAAAA,CAAAA,CAAc,KAAK,GAAI,EAAA,CAAIF,CACjCpI,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,uCAAA,CAAyC,CAAE,gBAAA,CAAAqI,CAAiB,CAAA,CAAA,CAE1E,IAAMnH,CAAAA,CAA4C,CAChD,OAAA,CAAS8G,EACT,QAAUrK,CAAAA,CAAAA,CAAK,KAAM,CAAA,6BAAA,CAA8B0K,CAAiB,CAAA,IAAI,CACxE,CAAA,MAAA,CAAQ,GACR,WAAAC,CAAAA,CAAAA,CACA,oBAAsBV,CAAAA,CAAAA,CAAQ,oBAC9B,CAAA,QAAA,CAAU,CACR,OAAA,CAASK,EACT,QAAUI,CAAAA,CACZ,CACF,CAAA,CAEA,OAAArI,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,+BAAA,CAAiC,CAAE,QAAA,CAAAkB,CAAS,CAAA,CAAA,CACtDvD,CAAK,CAAA,WAAA,GACP,MAAMiK,CAAQ,CAAA,KAAA,CAAM,GAAIM,CAAAA,CAAAA,CAAUhH,CAAQ,CAAA,CAC1ClB,CAAA,EAAA,IAAA,EAAAA,EAAQ,KAAM,CAAA,oCAAA,CAAA,CAAA,CAGhBa,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,YAAA,CAAa,QAAU,CAAA,CAAA,CAAA,CAAA,CAC7BA,GAAA,IAAAA,EAAAA,CAAAA,CAAM,SAAU,CAAA,CAAE,IAAMO,CAAAA,kBAAAA,CAAe,EAAG,CAAA,CAAA,CAC1C6C,CACEC,CAAAA,CAAAA,CACA,gBACA0D,CAAAA,CAAAA,CAAQ,oBACR1G,CAAAA,CACF,CAEOA,CAAAA,CACT,OAAShD,CAAO,CAAA,CACd8B,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,IAAA,CAAK,4BAA8B,CAAA,CAAE,KAAA9B,CAAAA,CAAM,CACnD,CAAA,CAAA,IAAIqK,CAEJ,CAAA,MAAIhK,CAAiB,CAAA,kBAAA,CAAmBL,CAAK,CAElCA,EAAAA,CAAAA,YAAiBX,CAD1BgL,CAAAA,CAAAA,CAAYrK,CAIZqK,CAAAA,CAAAA,CAAY/E,CAAYtF,CAAAA,CAAK,CAK/B+F,CAAAA,CAAAA,CACEC,CACA,CAAA,aAAA,CACA0D,CAAQ,CAAA,oBAAA,CACRW,CACF,CAAA,CAEMA,CACR,CAAE,OAAA,CACA1H,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,GAAA,GACR,CACF,CAAA,CAAA,CAEA,OAAKF,CAIE,CAAA,MAAMe,WAAQ,CAAA,IAAA,CAAKf,CAAkB,CAAA,IAAYN,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAEtD,OAAO,MADQ3B,CAAAA,CAAiB,SAAU,EAAA,CACtB,eAAgB,CAAA,uBAAA,CAAgCmC,CAAeR,EAAAA,CAAAA,CAAA,IACjF,CAAA,IAAA,CAAA,WAAA,CAAA,OAAO,MAAMyH,CAAAA,CAAoBjH,CAAI,CACvC,CAAC,CAAA,CACH,EAAC,CARQ,CAAA,MAAMiH,CAAoB,EASrC,CEtJA,CAAA,CAAA,SAASU,EAAuBZ,CAAAA,CAAAA,CAAkF,CAChH,GAAM,CAAE,YAAAa,CAAAA,CAAAA,CAAc,gBAAAC,CAAAA,CAAiB,CAAId,CAAAA,CAAAA,CAAQ,UAC/Ce,CACJ,CAAA,GAAIf,CAAQ,CAAA,cAAA,CACVe,CAAcf,CAAAA,CAAAA,CAAQ,cACbA,CAAAA,KAAAA,GAAAA,CAAAA,CAAQ,KACjBe,CAAAA,CAAAA,CAAcf,CAAQ,CAAA,KAAA,CAAM,eAAgB,EAAA,CAAA,KAEtC,MAAA,IAAIrK,EAAa,qCAAqC,CAAA,CAI9D,SAASqL,CAAAA,CAAQC,CAAgBC,CAAAA,CAAAA,CAAgE,CAjBnG,IAAA1J,EAAAC,CAkBI,CAAA,IAAM0J,CAAaJ,CAAAA,CAAAA,CAAY,WAAY,CAAA,IAAA,CACxCK,CAAMH,EAAAA,CAAAA,EAAUG,EAAE,SAAcA,GAAAA,CAAAA,CAAE,SAAc,GAAA,IAAA,EAAQA,CAAE,CAAA,SAAA,GAAc,KAAaH,CAAAA,EAAAA,CAAAA,CAASG,CAAE,CAAA,SAAA,CACnG,CACA,CAAA,GAAI,CAACD,CAAAA,CACH,MAAM,IAAIxL,EAAa,yGAAyG,CAAA,CAElI,IAAM0L,CAAAA,CAAAA,CAAO5J,CAAAD,CAAAA,CAAAA,CAAAA,CAAA2J,CAAW,CAAA,MAAA,GAAX,YAAA3J,CAAmB,CAAA,IAAA,GAAnB,IAAAC,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAA0ByJ,CACvC,CAAA,CAAA,GAAIG,CAAS,GAAA,KAAA,CAAA,CACX,MAAM,IAAI1L,CAAAA,CAAa,yGAAyG,CAAA,CAElI,OAAO0L,CACT,CAEA,IAAMC,CAAsBN,CAAAA,CAAAA,CAAQH,CAAc,CAAA,sBAAsB,CAClEU,CAAAA,CAAAA,CAAuBP,CAAQH,CAAAA,CAAAA,CAAc,uBAAuB,CAGpEW,CAAAA,CAAAA,CAAY,MAASX,CAAAA,CAAAA,CAAAA,CAAe,GAAaS,CAAAA,CAAAA,EAAqB,OAAQ,CAAA,CAAC,CAAC,CAChFG,CAAAA,CAAAA,CAAa,MAASX,CAAAA,CAAAA,CAAAA,CAAmB,GAAaS,CAAAA,CAAAA,EAAsB,OAAQ,CAAA,CAAC,CAAC,CAE5F,CAAA,OAAO,CACL,IAAA,CAFgBC,CAAYC,CAAAA,CAAAA,CAG5B,QAAUV,CAAAA,CAAAA,CAAY,QAAY,EAAA,KAAA,CAClC,YAAcA,CAAAA,CAAAA,CACd,WAAaf,CAAAA,CAAAA,CAAQ,SACvB,CACF,CCpCM0B,IAAAA,EAAAA,CAA8BxJ,KAAE,CAAA,MAAA,CAAO,CAC3C,KAAA,CAAOA,KAAE,CAAA,MAAA,EACT,CAAA,KAAA,CAAOA,KAAE,CAAA,MAAA,EACT,CAAA,MAAA,CAAQ4G,YAAO,EAAA,CACf,kBAAmBO,uBAAkB,EAAA,CACrC,WAAanH,CAAAA,KAAAA,CAAE,OAAQ,EAAA,CACvB,aAAeA,CAAAA,KAAAA,CAAE,OAAOA,KAAE,CAAA,MAAA,EAAQ,CAAA,CAAE,QAAS,EAAA,CAC7C,SAAWA,CAAAA,KAAAA,CAAE,MAAMA,KAAE,CAAA,MAAA,EAAmC,CAAA,CAAE,QAAS,EAAA,CAAE,QAAS,EAAA,CAC9E,oBAAsBA,CAAAA,KAAAA,CAAE,GAAI,EAAA,CAAE,QAAS,EACzC,CAAC,CAAA,CAGKyJ,GAA+BzJ,KAAE,CAAA,MAAA,CAAO,CAC5C,OAAA,CAASA,KAAE,CAAA,MAAA,CAAO,CAChB,MAAA,CAAQ4G,YAAO,EAAA,CACf,iBAAmBO,CAAAA,uBAAAA,EACrB,CAAC,CACD,CAAA,QAAA,CAAUuC,wBACV,MAAQ1J,CAAAA,KAAAA,CAAE,OAAQ,EAAA,CAClB,WAAaA,CAAAA,KAAAA,CAAE,MAAO,EAAA,CAAE,GAAI,EAAA,CAAE,QAAS,EAAA,CACvC,oBAAsBA,CAAAA,KAAAA,CAAE,GAAI,EAAA,CAAE,UAC9B,CAAA,QAAA,CAAUA,KAAE,CAAA,MAAA,CAAO,CACjB,OAAA,CAASA,KAAE,CAAA,GAAA,GACX,QAAUA,CAAAA,KAAAA,CAAE,GAAI,EAClB,CAAC,CACH,CAAC,ECrBD,SAAe2J,EACb7B,CAAAA,CAAAA,CACAC,CACAlH,CAAAA,CAAAA,CAC2C,CAAAN,OAAAA,CAAAA,CAAA,IAC3C,CAAA,IAAA,CAAA,WAAA,CAAA,IAAML,CAASC,CAAAA,CAAAA,CAAc,SAAU,EAAA,CACjCyJ,CAA8B7I,CAAAA,CAAAA,EAAgBR,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAClDL,GAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,6BAAA,CAAA,CACdA,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,gCAAiC,CAAE,OAAA,CAAA4H,CAAQ,CAAA,CAAA,CACzD,IAAMjK,CAAAA,CAAO2L,EAA4B,CAAA,KAAA,CAAM1B,CAAO,CAChD1D,CAAAA,CAAAA,CAAY0D,CAAQ,CAAA,SAAA,EAAa,EAAC,CAClCG,CAA0BrG,CAAAA,WAAAA,CAAQ,MAAO,EAAA,CAE/C,GAAI,CACFuC,CACEC,CAAAA,CAAAA,CACA,sBACA0D,CAAAA,CAAAA,CAAQ,oBACV,CAEA,CAAA,IAAMI,CAAe,CAAA,CACnB,MAAQrK,CAAAA,CAAAA,CAAK,MACb,CAAA,iBAAA,CAAmBA,EAAK,iBAC1B,CAAA,CAEMsK,CAAkB,CAAA,CACtB,GAAK,CAAA,MAAMtK,CAAK,CAAA,KAAA,CAAM,oBAAoBA,CAAK,CAAA,MAAA,CAAQA,CAAK,CAAA,iBAAiB,CAC7E,CAAA,OAAA,CAAS,MAAMA,CAAAA,CAAK,KAAM,CAAA,uBAAA,CAAwBA,CAAK,CAAA,MAAA,CAAQA,CAAK,CAAA,iBAAiB,CACrF,CAAA,IAAA,CAAM,MAAMA,CAAK,CAAA,KAAA,CAAM,oBAAqBA,CAAAA,CAAAA,CAAK,MAAQA,CAAAA,CAAAA,CAAK,iBAAiB,CACjF,CAEK+F,CAAAA,CAAAA,EACHuE,GAAAA,CAAAA,CAAgB,OAAUjH,CAAAA,CAAAA,CAAAD,CAAA,CAAA,EAAA,CACrBkH,EAAgB,OADK,CAAA,CAAA,CAExB,MAAQ,CAAA,YACV,CAGEtK,CAAAA,CAAAA,CAAAA,CAAAA,CAAK,aACPsK,GAAAA,CAAAA,CAAgB,OAAUlH,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,EACrBkH,CAAAA,CAAAA,CAAgB,OAChBtK,CAAAA,CAAAA,CAAAA,CAAK,aAIZqC,CAAAA,CAAAA,CAAAA,CAAAA,EAAA,MAAAA,CAAQ,CAAA,KAAA,CAAM,uCAAyC,CAAA,CAAE,eAAAiI,CAAAA,CAAgB,CACzE,CAAA,CAAA,IAAMC,EAAW9E,EAAgB,CAAA,CAAA,eAAA,EAAkB6E,CAAgB,CAAA,GAAG,CAAItK,CAAAA,EAAAA,CAAAA,CAAK,KAAM,CAAA,WAAA,CAAY,IAAI,CAAIqK,CAAAA,CAAAA,CAAY,CACrH,CAAA,GAAIrK,CAAK,CAAA,WAAA,CAAa,CACpBqC,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,oCAAA,CAAA,CACd,IAAMmI,CAAAA,CAAiB,MAAMP,CAAAA,CAAQ,MAAM,GAAIM,CAAAA,CAAQ,CACvD,CAAA,GAAIC,CACF,CAAA,OAAAA,CAAe,CAAA,MAAA,CAAS,GACxBnI,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,gCACda,CAAAA,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAM,aAAa,QAAU,CAAA,CAAA,CAAA,CAAA,CAC7BA,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,SAAA,CAAU,CAAE,IAAA,CAAMO,kBAAe,CAAA,EAAG,CAC1C6C,CAAAA,CAAAA,CAAAA,CACEC,CACA,CAAA,uBAAA,CACA0D,CAAQ,CAAA,oBAAA,CACRO,CACF,CACAnI,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,uCAAA,CAAyC,CAAE,cAAA,CAAAmI,CAAe,CACjEA,CAAAA,CAAAA,CAEX,CAEAnI,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,gCAAA,CAAA,CACd,IAAMoI,CAAM,CAAA,IAAA,CAAK,GAAI,EAAA,CACfC,CAAmB,CAAA,MAAMR,CAAO,CAAA,IAAA,CACpCI,CAAgB,CAAA,GAAA,CAChBA,CAAgB,CAAA,IAAA,CAChBA,CAAgB,CAAA,OAAA,CAChB,KACAF,CAAAA,CAAAA,CACF,EACMO,CAAc,CAAA,IAAA,CAAK,GAAI,EAAA,CAAIF,CACjCpI,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,wCAAA,CAA0C,CAAE,gBAAA,CAAAqI,CAAiB,CAAA,CAAA,CAE3E,IAAMnH,CAAAA,CAA6C,CACjD,OAAS8G,CAAAA,CAAAA,CACT,QAAUrK,CAAAA,CAAAA,CAAK,KAAM,CAAA,8BAAA,CAA+B0K,CAAiB,CAAA,IAAI,CACzE,CAAA,MAAA,CAAQ,CACR,CAAA,CAAA,WAAA,CAAAC,CACA,CAAA,oBAAA,CAAsBV,CAAQ,CAAA,oBAAA,CAC9B,SAAU,CACR,OAAA,CAASK,CACT,CAAA,QAAA,CAAUI,CACZ,CACF,CAEA,CAAA,OAAArI,GAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,gCAAA,CAAkC,CAAE,QAAA,CAAAkB,CAAS,CAAA,CAAA,CACvDvD,EAAK,WACP,GAAA,MAAMiK,CAAQ,CAAA,KAAA,CAAM,GAAIM,CAAAA,CAAAA,CAAUhH,CAAQ,CAAA,CAC1ClB,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,qCAGhBa,CAAAA,CAAAA,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAM,aAAa,QAAU,CAAA,CAAA,CAAA,CAAA,CAC7BA,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,SAAA,CAAU,CAAE,IAAA,CAAMO,mBAAe,EAAG,CAAA,CAAA,CAC1C6C,CACEC,CAAAA,CAAAA,CACA,yBACA0D,CAAAA,CAAAA,CAAQ,oBACR1G,CAAAA,CACF,EAEOA,CACT,CAAA,MAAShD,CAAO,CAAA,CACd8B,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,IAAA,CAAK,6BAA+B,CAAA,CAAE,KAAA9B,CAAAA,CAAM,CACpD,CAAA,CAAA,IAAIqK,CAEJ,CAAA,MAAIhK,EAAiB,kBAAmBL,CAAAA,CAAK,CAElCA,EAAAA,CAAAA,YAAiBX,CAD1BgL,CAAAA,CAAAA,CAAYrK,CAIZqK,CAAAA,CAAAA,CAAY/E,EAAYtF,CAAK,CAAA,CAI/B+F,CACEC,CAAAA,CAAAA,CACA,sBACA0D,CAAAA,CAAAA,CAAQ,oBACRW,CAAAA,CACF,EAEMA,CACR,CAAA,OAAE,CACA1H,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAM,GACR,GAAA,CACF,CAEA,CAAA,CAAA,OAAKF,CAIE,CAAA,MAAMe,WAAQ,CAAA,IAAA,CAAKf,CAAkB,CAAA,IAAYN,EAAA,IAEtD,CAAA,IAAA,CAAA,WAAA,CAAA,OAAO,MADQ3B,CAAAA,CAAiB,SAAU,EAAA,CACtB,eAAgB,CAAA,wBAAA,CAAiCmC,GAAeR,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAClF,OAAO,MAAMqJ,CAAqB7I,CAAAA,CAAI,CACxC,CAAA,CAAC,CACH,CAAC,CAAA,CAAA,CARQ,MAAM6I,CAAAA,EASjB,CAAA,CAAA,CCpJMC,IAAAA,EAAAA,CAAiC7J,MAAE,MAAO,CAAA,CAC9C,QAAU,CAAAA,KAAA,CAAE,KAAM6G,CAAAA,aAAAA,EAAS,CAAA,CAC3B,MAAO7G,KAAE,CAAA,KAAA,CAAM8G,UAAK,EAAC,CACrB,CAAA,aAAA,CAAe9G,KAAE,CAAA,MAAA,CAAOA,KAAE,CAAA,MAAA,EAAQ,CAAA,CAAE,QAAS,EAAA,CAC7C,SAAW,CAAAA,KAAA,CAAE,MAAMA,KAAE,CAAA,MAAA,EAAsC,CAAA,CAAE,QAAS,EAAA,CAAE,QAAS,EAAA,CACjF,qBAAsBA,KAAE,CAAA,GAAA,EAAM,CAAA,QAAA,EAC9B,CAAA,WAAA,CAAaA,KAAE,CAAA,UAAA,CAAW,WAAW,CAAE,CAAA,QAAA,EACzC,CAAC,CAGK8J,CAAAA,EAAAA,CAAkC9J,KAAE,CAAA,MAAA,CAAO,CAC/C,aAAA,CAAeA,KAAE,CAAA,MAAA,CAAOA,KAAE,CAAA,MAAA,EAAU+J,CAAAA,yBAAAA,EAAqB,CACzD,CAAA,MAAA,CAAQ/J,KAAE,CAAA,OAAA,EACV,CAAA,WAAA,CAAaA,KAAE,CAAA,MAAA,GAAS,GAAI,EAAA,CAAE,QAAS,EAAA,CACvC,oBAAsB,CAAAA,KAAA,CAAE,GAAI,EAAA,CAAE,UAChC,CAAC,ECRD,SAAegK,EACblC,CAAAA,CAAAA,CACAC,CACAlH,CAAAA,CAAAA,CAC8C,CAAAN,OAAAA,CAAAA,CAAA,IAC9C,CAAA,IAAA,CAAA,WAAA,CAAA,IAAML,CAASC,CAAAA,CAAAA,CAAc,SAAU,EAAA,CACjC8J,EAAiClJ,CAAgBR,EAAAA,CAAAA,CAAA,IACrDL,CAAAA,IAAAA,CAAAA,WAAAA,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,gCAAA,CAAA,CACdA,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,kCAAoC,CAAA,CAAE,OAAA4H,CAAAA,CAAQ,GAC5D,IAAMjK,CAAAA,CAAOgM,EAA+B,CAAA,KAAA,CAAM/B,CAAO,CAAA,CACnDoC,CAAQrM,CAAAA,CAAAA,CAAK,KAGbsM,CAAAA,CAAAA,CAFWtM,CAAK,CAAA,QAAA,CAEK,MAAO,CAAA,CAACuM,CAAKzM,CAAAA,CAAAA,GAAY,CAClD,IAAM0M,CAAAA,CAAmB1M,CAAQ,CAAA,OAAA,CAAQ,MAAO,CAAA,CAAC2M,CAAMC,CAAAA,CAAAA,IACjDA,EAAQ,QAAa,GAAA,WAAA,EACvBD,CAAK,CAAA,IAAA,CAAKC,CAAO,CAAA,CAEZD,CACN,CAAA,CAAA,EAA2B,CAC9B,CAAA,OAAO,CAAC,GAAGF,CAAK,CAAA,GAAGC,CAAgB,CACrC,CAAG,CAAA,EAA2B,CAAA,CAExBjG,CAAY0D,CAAAA,CAAAA,CAAQ,SAAa,EAAA,GACjCG,CAA0BrG,CAAAA,WAAAA,CAAQ,MAAO,EAAA,CAE/C,GAAI,CACF,IAAM0G,CAAAA,CAAM,KAAK,GAAI,EAAA,CAEfkC,CAAmBL,CAAAA,CAAAA,CAAU,GAAWM,CAAAA,CAAAA,EAAalK,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CACzD,IAAMmK,CAAOR,CAAAA,CAAAA,CAAM,IAAMhB,CAAAA,CAAAA,EAAMA,CAAE,CAAA,UAAA,CAAW,MAAO,CAAA,IAAA,GAASuB,CAAS,CAAA,IAAI,CACzE,CAAA,GAAI,EAACC,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAM,UAAWA,CAAK,CAAA,OAAA,CAAQ,IAAS,GAAA,MAAA,CAC1C,OAAO,IAAA,CAGT,IAAMC,CAAAA,CAAkBD,EAAK,OACvBE,CAAAA,CAAAA,CAAgBD,CAAgB,CAAA,MAAA,CAAO,WAAY,EAAA,CACnDE,CAAgBF,CAAAA,CAAAA,CAAgB,OAAS,CAC7C,WAAA,CAAa,CACb,CAAA,YAAA,CAAc,GACd,CAAA,iBAAA,CAAmB,CACrB,CAAA,CAEA,OAAO,MAAM/I,WAAQ,CAAA,IAAA,CAAKqG,CAAyB,CAAA,IAAY1H,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAE7D,OAAO,MADQ3B,CAAAA,CAAiB,SAAU,EAAA,CACtB,eAAgB,CAAA,CAAA,UAAA,EAAa6L,CAAS,CAAA,IAAI,CAAW1J,CAAAA,CAAAA,CAAAA,EAAeR,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CACtF,GAAI,CACFQ,CAAK,CAAA,YAAA,CAAa,YAAa0J,CAAS,CAAA,IAAI,CAC5C1J,CAAAA,CAAAA,CAAK,YAAa,CAAA,SAAA,CAAW0J,CAAS,CAAA,EAAE,CAEpCrG,CAAAA,CAAAA,GACF,MAAMD,CAAAA,CAAsBC,CAAW,CAAA,wBAAA,CAA0BqG,CAAU3C,CAAAA,CAAAA,CAAQ,oBAAoB,CAGzG,CAAA,CAAA,IAAIgD,CACAC,CAAAA,CAAAA,CACJ,GAAI,CACF,IAAMC,EAAAA,CAAc,KAAK,KAAMP,CAAAA,CAAAA,CAAS,SAAS,CAAA,CAC7CG,CAAkB,GAAA,KAAA,CACpBE,CAAcE,CAAAA,EAAAA,CAEdD,EAAOC,GAEX,CAAA,MAAS5M,EAAO,CAAA,CACd,IAAM6M,EAAAA,CACJ,CAA4DR,yDAAAA,EAAAA,CAAAA,CAAS,IAAI,CAAA,aAAA,EAC1DA,CAAS,CAAA,SAAS,CAAYrM,SAAAA,EAAAA,EAAAA,YAAiB,KAAQA,CAAAA,EAAAA,CAAM,QAAU,MAAOA,CAAAA,EAAK,CAAC,CAAA,CAAA,CACrG8B,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,IAAA,CAAK+K,IACf,CAEA,IAAI7J,CACEX,CAAAA,CAAAA,CAAMkK,CAAgB,CAAA,GAAA,CACtBhM,EAAUuC,CAAAA,CAAAA,CAAAD,EAAA,EACX0J,CAAAA,CAAAA,CAAgB,OADL,CAAA,CAAA,CAEd,cAAgB,CAAA,kBAClB,CAEA,CAAA,CAAA,GAAIA,CAAgB,CAAA,QAAA,CAElBvJ,CAAW,CAAA,MAAM2G,CAAO,CAAA,IAAA,CACtB4C,CAAgB,CAAA,QAAA,CAChB1J,IAAA,CACE,MAAA,CAAQ2J,CACR,CAAA,GAAA,CAAAnK,CACA,CAAA,OAAA,CAAA9B,EACIiM,CAAAA,CAAAA,CAAAA,GAAkB,MAAQ,CAAE,KAAA,CAAOE,CAAY,CAAA,CAAI,EAAC,CAAA,CACpDF,CAAkB,GAAA,MAAA,CAAS,CAAE,IAAAG,CAAAA,CAAK,CAAI,CAAA,EAE5CJ,CAAAA,CAAAA,CAAAA,CAAgB,YAChB,CAAA,CAAE,KAAOE,CAAAA,CAAc,CACvB5C,CAAAA,CACF,CAEI2C,CAAAA,KAAAA,GAAAA,CAAAA,GAAkB,KACpBxJ,CAAAA,CAAAA,CAAW,MAAM2G,CAAO,CAAA,GAAA,CACtBtH,CACAqK,CAAAA,CAAAA,CACAnM,EACA,CAAA,CAAE,KAAOkM,CAAAA,CAAc,CACvB5C,CAAAA,CACF,CACS2C,CAAAA,KAAAA,GAAAA,CAAAA,GAAkB,MAC3BxJ,CAAAA,CAAAA,CAAW,MAAM2G,CAAAA,CAAO,KACtBtH,CACAsK,CAAAA,CAAAA,CACApM,EACA,CAAA,CAAE,KAAOkM,CAAAA,CAAc,CACvB5C,CAAAA,CACF,CAEA,CAAA,KAAA,MAAM,IAAIxK,CAAAA,CAAa,CAA4BkN,yBAAAA,EAAAA,CAAAA,CAAgB,MAAM,CAAA,CAAA,CAAI,GAAG,CAGpF5J,CAAAA,CAAAA,CAAK,SAAU,CAAA,CAAE,IAAMO,CAAAA,kBAAAA,CAAe,EAAG,CAAC,EAE1C,IAAM4J,EAAAA,CAAe,CACnB,QAAA,CAAU,eACV,CAAA,KAAA,CAAOT,CAAS,CAAA,KAAA,CAChB,GAAIA,CAAS,CAAA,EAAA,CACb,IAAMA,CAAAA,CAAAA,CAAS,IACf,CAAA,IAAA,CAAM,IAAK,CAAA,SAAA,CAAUrJ,CAAS,CAAA,IAAI,CAClC,CAAA,WAAA,CAAa,CACX,UAAA,CAAYA,CAAS,CAAA,MAAA,CAAO,IAC9B,CACF,CAAA,CAEA,OAAIgD,CAAAA,GACF,MAAMD,CAAAA,CACJC,CACA,CAAA,2BAAA,CACAqG,EACAS,EACApD,CAAAA,CAAAA,CAAQ,oBACV,CAAA,CAAA,CAGKoD,EACT,CAAA,MAAS9M,CAAO,CAAA,CACd,IAAMqK,CAAY/E,CAAAA,CAAAA,CAAYtF,CAAK,CAAA,CAC/BgG,CACF,GAAA,MAAMD,CAAsBC,CAAAA,CAAAA,CAAW,wBAA0BqG,CAAAA,CAAAA,CAAU3C,CAAQ,CAAA,oBAAA,CAAsBW,CAAS,CAAA,CAAA,CAGpH1H,CAAK,CAAA,SAAA,CAAU,CAAE,IAAMO,CAAAA,kBAAAA,CAAe,KAAO,CAAA,OAAA,CAASmH,CAAU,CAAA,OAAQ,CAAC,CAAA,CACzEvI,GAAA,IAAAA,EAAAA,CAAAA,CAAQ,IAAK,CAAA,CAAA,UAAA,EAAauK,CAAS,CAAA,IAAI,CAAYrM,QAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAEnD,IAAM8M,CAAe,CAAA,CACnB,QAAU,CAAA,eAAA,CACV,KAAOT,CAAAA,CAAAA,CAAS,KAChB,CAAA,EAAA,CAAIA,CAAS,CAAA,EAAA,CACb,IAAMA,CAAAA,CAAAA,CAAS,IACf,CAAA,IAAA,CAAMhC,CAAU,CAAA,OAAA,CAChB,YAAa,CACX,UAAA,CAAYA,CAAU,CAAA,MACxB,CACF,CAAA,CAEA,OAAIrE,CAAAA,GACF,MAAMD,CACJC,CAAAA,CAAAA,CACA,wBACAqG,CAAAA,CAAAA,CACAS,CACApD,CAAAA,CAAAA,CAAQ,oBACRW,CAAAA,CACF,GAGKyC,CACT,CAAA,OAAE,CACAnK,CAAAA,CAAK,GAAI,GACX,CACF,CAAA,CAAC,CACH,CAAA,CAAC,CACH,CAAA,CAAC,CAGKoK,CAAAA,CAAAA,CAAAA,CADmB,MAAM,OAAA,CAAQ,IAAIX,CAAgB,CAAA,EAExD,MAAQnJ,CAAAA,CAAAA,EAAWA,CAAW,GAAA,IAAI,CAClC,CAAA,MAAA,CACC,CAAC+I,CAAK/I,CAAAA,CAAAA,IACJ+I,CAAI/I,CAAAA,CAAAA,CAAO,EAAE,CAAA,CAAIA,CACV+I,CAAAA,CAAAA,CAAAA,CAET,EACF,CAAA,CAEI5B,CAAc,CAAA,IAAA,CAAK,GAAI,EAAA,CAAIF,CACjCpI,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,wCAAA,CAA0C,CAAE,aAAA,CAAAiL,CAAc,CAAA,CAAA,CAExE,IAAM/J,CAAgD,CAAA,CACpD,aAAA+J,CAAAA,CAAAA,CACA,MAAQ,CAAA,CAAA,CAAA,CACR,WAAA3C,CAAAA,CAAAA,CACA,qBAAsBV,CAAQ,CAAA,oBAChC,CAEA,CAAA,OAAA5H,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,oCAAqC,CAAE,QAAA,CAAAkB,CAAS,CAAA,CAAA,CAC9DL,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,SAAA,CAAU,CAAE,IAAA,CAAMO,kBAAe,CAAA,EAAG,CAEnCF,CAAAA,CAAAA,CACT,CAAShD,MAAAA,CAAAA,CAAO,CACd8B,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,IAAA,CAAK,gCAAkC,CAAA,CAAE,KAAA9B,CAAAA,CAAM,GACvD,IAAIqK,CAAAA,CAEJ,MAAIhK,CAAAA,CAAiB,kBAAmBL,CAAAA,CAAK,CAElCA,EAAAA,CAAAA,YAAiBX,EAD1BgL,CAAYrK,CAAAA,CAAAA,CAIZqK,CAAY/E,CAAAA,CAAAA,CAAYtF,CAAK,CAAA,CAG/B2C,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,SAAA,CAAU,CAAE,IAAA,CAAMO,kBAAe,CAAA,KAAA,CAAO,OAASmH,CAAAA,CAAAA,CAAU,OAAQ,CACnEA,CAAAA,CAAAA,CACR,CAAE,OAAA,CACA1H,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,GAAA,GACR,CACF,CAAA,CAAA,CAEA,OAAKF,CAAAA,CAIE,MAAMe,WAAAA,CAAQ,IAAKf,CAAAA,CAAAA,CAAkB,IAAYN,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAEtD,OAAO,MADQ3B,CAAiB,CAAA,SAAA,EACZ,CAAA,eAAA,CAAgB,4BAAqCmC,CAAAA,CAAAA,EAAeR,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CACtF,OAAO,MAAM0J,CAAwBlJ,CAAAA,CAAI,CAC3C,CAAC,CAAA,CACH,CAAC,CAAA,CAAA,CARQ,MAAMkJ,CAAAA,EASjB,CAAA,CAAA,CC9OMmB,IAAAA,EAAAA,CAAkCpL,KAAE,CAAA,MAAA,CAAO,CAC/C,KAAA,CAAOA,KAAE,CAAA,MAAA,EACT,CAAA,IAAA,CAAMA,KAAE,CAAA,GAAA,GACR,OAASA,CAAAA,KAAAA,CAAE,MAAOA,CAAAA,KAAAA,CAAE,MAAO,EAAC,CAC5B,CAAA,KAAA,CAAOA,MAAE,MAAOA,CAAAA,KAAAA,CAAE,MAAO,EAAC,CAAE,CAAA,QAAA,EAC9B,CAAC,EAIKqL,EAAmCrL,CAAAA,KAAAA,CAAE,MAAO,CAAA,CAChD,OAASA,CAAAA,KAAAA,CAAE,GAAI,EAAA,CACf,eAAiBA,CAAAA,KAAAA,CAAE,MAAO,CAAA,CACxB,GAAKA,CAAAA,KAAAA,CAAE,MAAO,EAAA,CAAE,KAChB,CAAA,OAAA,CAASA,KAAE,CAAA,MAAA,CAAOA,KAAE,CAAA,MAAA,EAAQ,CAAA,CAC5B,KAAMA,KAAE,CAAA,GAAA,EACV,CAAC,CACD,CAAA,gBAAA,CAAkBA,KAAE,CAAA,GAAA,GACpB,mBAAqBA,CAAAA,KAAAA,CAAE,QAAS4H,CAAAA,kBAAY,CAC9C,CAAC,ECfD,SAAe0D,EACbxD,CAAAA,CAAAA,CACAC,CACAlH,CAAAA,CAAAA,CAC+C,CAAAN,OAAAA,CAAAA,CAAA,IAC/C,CAAA,IAAA,CAAA,WAAA,CAAA,IAAML,EAASC,CAAc,CAAA,SAAA,EACvBoL,CAAAA,CAAAA,CAAkCxK,CAAgBR,EAAAA,CAAAA,CAAA,IACtDL,CAAAA,IAAAA,CAAAA,WAAAA,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,iCAAA,CAAA,CACdA,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,oCAAqC,CAAE,OAAA,CAAA4H,CAAQ,CAAA,CAAA,CAC7D,IAAMjK,CAAAA,CAAOuN,EAAgC,CAAA,KAAA,CAAMtD,CAAO,CAAA,CACpDG,CAA0BrG,CAAAA,WAAAA,CAAQ,MAAO,EAAA,CAE/C,GAAI,CACF/D,EAAK,OAAUqD,CAAAA,CAAAA,CAAAD,CAAA,CAAA,EAAA,CAAKpD,CAAK,CAAA,OAAA,CAAA,CAAV,CAAmB,MAAA,CAAQ,YAAa,CAEvD,CAAA,CAAA,IAAMsK,CAAkB,CAAA,CACtB,GAAK,CAAA,MAAMtK,CAAK,CAAA,KAAA,CAAM,wBAAwBA,CAAK,CAAA,IAAA,CAAMA,CAAK,CAAA,OAAA,CAASA,CAAK,CAAA,KAAK,CACjF,CAAA,OAAA,CAAS,MAAMA,CAAAA,CAAK,KAAM,CAAA,2BAAA,CAA4BA,CAAK,CAAA,IAAA,CAAMA,CAAK,CAAA,OAAA,CAASA,EAAK,KAAK,CAAA,CACzF,IAAMA,CAAAA,CAAAA,CAAK,IACb,CAAA,CACAqC,CAAA,EAAA,IAAA,EAAAA,EAAQ,KAAM,CAAA,2CAAA,CAA6C,CAAE,eAAA,CAAAiI,CAAgB,CAAA,CAAA,CAE7E,IAAMI,CAAAA,CAAmB,MAAMR,CAAO,CAAA,IAAA,CACpCI,CAAgB,CAAA,GAAA,CAChBA,CAAgB,CAAA,IAAA,CAChBA,CAAgB,CAAA,OAAA,CAChB,KACAF,CAAAA,CAAAA,CACF,CACA/H,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,4CAAA,CAA8C,CAAE,gBAAAqI,CAAAA,CAAiB,CAE/E,CAAA,CAAA,IAAIiD,CACJ,CAAA,GAAI,CACFA,CAAAA,CAAsB3N,EAAK,KAAM,CAAA,6BAAA,CAA8B0K,CAAiB,CAAA,IAAI,EACtF,CAAA,MAASkD,CAAqB,CAAA,CAC5BvL,GAAA,IAAAA,EAAAA,CAAAA,CAAQ,IAAK,CAAA,gDAAA,CAAkD,CAAE,mBAAA,CAAAuL,CAAoB,CAAA,EACvF,CAEA,IAAMrK,CAAiD,CAAA,CACrD,OAAS,CAAA,CAAE,MAAQvD,CAAAA,CAAAA,CAAK,QAAS,IAAMA,CAAAA,CAAAA,CAAK,IAAM,CAAA,KAAA,CAAOA,CAAK,CAAA,KAAM,CACpE,CAAA,eAAA,CAAiBsK,CACjB,CAAA,gBAAA,CAAkBI,CAClB,CAAA,mBAAA,CAAqBiD,CACvB,CAAA,CAEA,OAAAtL,CAAAA,EAAA,MAAAA,CAAQ,CAAA,KAAA,CAAM,oCAAsC,CAAA,CAAE,QAAAkB,CAAAA,CAAS,CAE/DL,CAAAA,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAM,SAAU,CAAA,CAAE,IAAMO,CAAAA,kBAAAA,CAAe,EAAG,CAAA,CAAA,CAEnCF,CACT,CAAShD,MAAAA,CAAAA,CAAO,CACd8B,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,IAAK,CAAA,iCAAA,CAAmC,CAAE,KAAA9B,CAAAA,CAAM,CACxD,CAAA,CAAA,IAAIqK,CAEJ,CAAA,MAAIhK,CAAiB,CAAA,kBAAA,CAAmBL,CAAK,CAElCA,EAAAA,CAAAA,YAAiBX,CAD1BgL,CAAAA,CAAAA,CAAYrK,CAIZqK,CAAAA,CAAAA,CAAY/E,CAAYtF,CAAAA,CAAK,CAGzBqK,CAAAA,CACR,CAAE,OAAA,CACA1H,CAAA,EAAA,IAAA,EAAAA,CAAM,CAAA,GAAA,GACR,CACF,CAEA,CAAA,CAAA,OAAKF,CAIE,CAAA,MAAMe,WAAQ,CAAA,IAAA,CAAKf,CAAkB,CAAA,IAAYN,EAAA,IAEtD,CAAA,IAAA,CAAA,WAAA,CAAA,OAAO,MADQ3B,CAAAA,CAAiB,SAAU,EAAA,CACtB,eAAgB,CAAA,6BAAA,CAAsCmC,GAAeR,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CACvF,OAAO,MAAMgL,CAAyBxK,CAAAA,CAAI,CAC5C,CAAA,CAAC,CACH,CAAA,CAAC,CARQ,CAAA,MAAMwK,CAAyB,EAS1C,CCtFA,CAAA,CCKA,IAAMG,EAAmC1L,CAAAA,KAAAA,CAAE,MAAO,CAAA,CAChD,MAAOA,KAAE,CAAA,MAAA,EACT,CAAA,IAAA,CAAMA,KAAE,CAAA,GAAA,EACR,CAAA,OAAA,CAASA,KAAE,CAAA,MAAA,CAAOA,KAAE,CAAA,MAAA,EAAQ,CAAA,CAC5B,KAAOA,CAAAA,KAAAA,CAAE,OAAOA,KAAE,CAAA,MAAA,EAAQ,CAAA,CAAE,QAAS,EACvC,CAAC,CAAA,CAIK2L,GAAoC3L,KAAE,CAAA,MAAA,CAAO,CACjD,OAAA,CAASA,KAAE,CAAA,GAAA,EACX,CAAA,eAAA,CAAiBA,MAAE,MAAO,CAAA,CACxB,GAAKA,CAAAA,KAAAA,CAAE,MAAO,EAAA,CAAE,GAAI,EAAA,CACpB,OAASA,CAAAA,KAAAA,CAAE,MAAOA,CAAAA,KAAAA,CAAE,MAAO,EAAC,CAC5B,CAAA,IAAA,CAAMA,MAAE,GAAI,EACd,CAAC,CAAA,CACD,gBAAkBA,CAAAA,KAAAA,CAAE,GAAI,EAAA,CACxB,oBAAqBA,KAAE,CAAA,QAAA,CAAS0J,uBAAiB,CACnD,CAAC,EDfD,SAAekC,EAAAA,CACb9D,EACAC,CACAlH,CAAAA,CAAAA,CACgD,CAAAN,OAAAA,CAAAA,CAAA,IAChD,CAAA,IAAA,CAAA,WAAA,CAAA,IAAML,CAASC,CAAAA,CAAAA,CAAc,SAAU,EAAA,CACjC0L,CAAmC9K,CAAAA,CAAAA,EAAgBR,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CACvDL,CAAA,EAAA,IAAA,EAAAA,EAAQ,KAAM,CAAA,kCAAA,CAAA,CACdA,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,oCAAsC,CAAA,CAAE,QAAA4H,CAAQ,CAAA,CAAA,CAC9D,IAAMjK,CAAAA,CAAO6N,EAAiC,CAAA,KAAA,CAAM5D,CAAO,CAAA,CACrDG,EAA0BrG,WAAQ,CAAA,MAAA,EAExC,CAAA,GAAI,CACF,IAAMuG,CAAkB,CAAA,CACtB,GAAK,CAAA,MAAMtK,CAAK,CAAA,KAAA,CAAM,mBAAoB,EAAA,CAC1C,OAASA,CAAAA,CAAAA,CAAK,QACd,IAAMA,CAAAA,CAAAA,CAAK,IACb,CAAA,CAEAsK,CAAgB,CAAA,OAAA,CAAUjH,CAAAD,CAAAA,CAAAA,CAAA,GACrBkH,CAAgB,CAAA,OAAA,CAAA,CADK,CAExB,MAAA,CAAQ,YACV,CAAA,CAAA,CAEA,IAAM2D,CAAAA,CAA2B7K,EAAA,EAAKkH,CAAAA,CAAAA,CAAAA,CACtC,OAAO2D,CAAAA,CAAyB,OAAQ,CAAA,IAAA,CACxC,OAAOA,CAAAA,CAAyB,OAAQ,CAAA,gBAAgB,CAExD5L,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,4CAAA,CAA8C,CAAE,eAAAiI,CAAAA,CAAgB,CAE9E,CAAA,CAAA,IAAMI,CAAmB,CAAA,MAAMR,CAAO,CAAA,IAAA,CACpC+D,CAAyB,CAAA,GAAA,CACzBA,CAAyB,CAAA,IAAA,CACzBA,CAAyB,CAAA,OAAA,CACzB,KACA7D,CAAAA,CAAAA,CACF,EACA/H,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,6CAA+C,CAAA,CAAE,gBAAAqI,CAAAA,CAAiB,CAEhF,CAAA,CAAA,IAAIiD,CACJ,CAAA,GAAI,CACFA,CAAAA,CAAsB3N,CAAK,CAAA,KAAA,CAAM,+BAA+B0K,CAAiB,CAAA,IAAI,EACvF,CAAA,MAASkD,CAAqB,CAAA,CAC5BvL,CAAA,EAAA,IAAA,EAAAA,EAAQ,IAAK,CAAA,iDAAA,CAAmD,CAAE,mBAAA,CAAAuL,CAAoB,CAAA,EACxF,CAEA,IAAMrK,EAAkD,CACtD,OAAA,CAAS+G,CACT,CAAA,eAAA,CAAiB2D,CACjB,CAAA,gBAAA,CAAkBvD,CAClB,CAAA,mBAAA,CAAqBiD,CACvB,CAAA,CAEA,OAAAtL,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,qCAAA,CAAuC,CAAE,QAAAkB,CAAAA,CAAS,CAEhEL,CAAAA,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAM,SAAU,CAAA,CAAE,KAAMO,kBAAe,CAAA,EAAG,CAEnCF,CAAAA,CAAAA,CACT,CAAShD,MAAAA,CAAAA,CAAO,CACd8B,CAAAA,EAAA,MAAAA,CAAQ,CAAA,IAAA,CAAK,kCAAoC,CAAA,CAAE,KAAA9B,CAAAA,CAAM,CACzD,CAAA,CAAA,IAAIqK,CAEJ,CAAA,MAAIhK,CAAiB,CAAA,kBAAA,CAAmBL,CAAK,CAAA,EAElCA,CAAiBX,YAAAA,CAAAA,CAD1BgL,EAAYrK,CAIZqK,CAAAA,CAAAA,CAAY/E,CAAYtF,CAAAA,CAAK,CAGzBqK,CAAAA,CACR,CAAE,OAAA,CACA1H,GAAA,IAAAA,EAAAA,CAAAA,CAAM,GACR,GAAA,CACF,CAEA,CAAA,CAAA,OAAKF,CAIE,CAAA,MAAMe,YAAQ,IAAKf,CAAAA,CAAAA,CAAkB,IAAYN,CAAAA,CAAA,IAEtD,CAAA,IAAA,CAAA,WAAA,CAAA,OAAO,MADQ3B,CAAAA,CAAiB,SAAU,EAAA,CACtB,eAAgB,CAAA,8BAAA,CAAuCmC,CAAeR,EAAAA,CAAAA,CAAA,IACxF,CAAA,IAAA,CAAA,WAAA,CAAA,OAAO,MAAMsL,CAA0B9K,CAAAA,CAAI,CAC7C,CAAA,CAAC,CACH,CAAA,CAAC,CARQ,CAAA,MAAM8K,GASjB,CAAA,CAAA,CEzFA,IAAME,EAAgC/L,CAAAA,KAAAA,CAAE,MAAO,CAAA,CAC7C,KAAOA,CAAAA,KAAAA,CAAE,MAAoB,EAAA,CAC7B,KAAMA,KAAE,CAAA,GAAA,EACR,CAAA,OAAA,CAASA,KAAE,CAAA,MAAA,CAAOA,KAAE,CAAA,MAAA,EAAQ,CAC5B,CAAA,KAAA,CAAOA,KAAE,CAAA,MAAA,CAAOA,KAAE,CAAA,MAAA,EAAQ,CAAA,CAAE,UAC9B,CAAC,CAIKgM,CAAAA,EAAAA,CAAiChM,KAAE,CAAA,MAAA,CAAO,CAC9C,OAAA,CAASA,KAAE,CAAA,GAAA,EACX,CAAA,eAAA,CAAiBA,KAAE,CAAA,MAAA,CAAO,CACxB,GAAA,CAAKA,MAAE,MAAO,EAAA,CAAE,GAAI,EAAA,CACpB,OAASA,CAAAA,KAAAA,CAAE,MAAOA,CAAAA,KAAAA,CAAE,QAAQ,CAAA,CAC5B,IAAMA,CAAAA,KAAAA,CAAE,GAAI,EACd,CAAC,CAAA,CACD,iBAAkBA,KAAE,CAAA,GAAA,EACpB,CAAA,mBAAA,CAAqBA,KAAE,CAAA,KAAA,CAAMiM,yBAAmB,CAAA,CAAE,QAAS,EAC7D,CAAC,ECbD,SAAgBC,EAAAA,CACdpE,CACAC,CAAAA,CAAAA,CACAlH,EACmE,CAAAkB,OAAAA,CAAAA,CAAA,IACnE,CAAA,IAAA,CAAA,WAAA,CAAA,IAAM7B,CAASC,CAAAA,CAAAA,CAAc,SAAU,EAAA,CACjCgM,EAAyB,SAAiBpL,CAAAA,CAAgF,CAAAgB,OAAAA,CAAAA,CAAA,IAhBlI,CAAA,IAAA,CAAA,WAAA,CAAA,IAAAzC,CAAAC,CAAAA,CAAAA,CAAAC,EAiBIU,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,+BACdA,CAAAA,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,iCAAA,CAAmC,CAAE,OAAA,CAAA4H,CAAQ,CAAA,CAAA,CAC3D,IAAMG,CAAAA,CAA0BrG,YAAQ,MAAO,EAAA,CAEzC/D,CAAOkO,CAAAA,EAAAA,CAA8B,KAAMjE,CAAAA,CAAO,CAExD,CAAA,GAAI,CACFjK,CAAAA,CAAK,OAAUqD,CAAAA,CAAAA,CAAAD,CAAA,CAAA,EAAA,CAAKpD,CAAK,CAAA,OAAA,CAAA,CAAV,CAAmB,MAAQ,CAAA,YAAa,CACvD,CAAA,CAAA,IAAMsK,CAAkB,CAAA,CACtB,GAAK,CAAA,MAAA,IAAAhG,CAAMtE,CAAAA,CAAAA,CAAK,KAAM,CAAA,qBAAA,CAAsBA,CAAK,CAAA,IAAA,CAAMA,CAAK,CAAA,OAAA,CAASA,EAAK,KAAK,CAAA,CAAA,CAC/E,OAAS,CAAA,MAAA,IAAAsE,CAAMtE,CAAAA,CAAAA,CAAK,KAAM,CAAA,yBAAA,CAA0BA,EAAK,IAAMA,CAAAA,CAAAA,CAAK,OAASA,CAAAA,CAAAA,CAAK,KAAK,CAAA,CAAA,CACvF,IAAMA,CAAAA,CAAAA,CAAK,IACb,CAEAqC,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,yCAAA,CAA2C,CAAE,eAAA,CAAAiI,CAAgB,CAAA,CAAA,CAE3E,IAAIiE,CAAAA,CAAS,EACb,CAAA,GAAA,CAAA,IAAA,IAAAhK,CAAAC,CAAAA,CAAAA,CAA0B0F,EAAO,MAC/BI,CAAAA,CAAAA,CAAgB,GAChB,CAAA,MAAA,CACAA,CAAgB,CAAA,IAAA,CAChBA,CAAgB,CAAA,OAAA,CAChB,OACAF,CACF,CAAA,CAAA,CAPA3F,CAAAC,CAAAA,CAAAA,CAAAnE,CAAAkE,CAAAA,CAAAA,CAAA,CAAAC,CAAAA,CAAAA,CAAA,UAAAJ,CAAAC,CAAAA,CAAAA,CAAA,IAAAE,EAAAA,CAAAA,EAAAA,IAAAA,CAAAA,CAAAA,CAAA,CAOG,CAAA,CAAA,CAPQ,IAAME,CAAAA,CAAjBD,CAAA,CAAA,KAAA,CAQE,IAAI8J,CAAAA,CAAoE,EAAC,CACzE,GAAI,CACF,YAAAjK,CAAAC,CAAAA,CAAAA,CAAgCxE,CAAK,CAAA,KAAA,CAAM,qCACzC2E,CAAAA,CAAAA,CACA4J,CACAvO,CAAAA,CAAAA,CAAK,KACLA,CAAK,CAAA,OAAA,CACLA,CAAK,CAAA,KACP,CANAyE,CAAAA,CAAAA,CAAAA,CAAAC,CAAAnE,CAAAA,CAAAA,CAAAkE,EAAA,CAAAC,CAAAA,CAAAA,CAAA,MAAAJ,IAAAA,CAAAA,CAAAC,CAAA,CAAA,IAAA,EAAA,CAAA,EAAA,IAAA,CAAAE,CAAA,CAAA,CAAA,CAAA,CAMG,CANQ,IAAMgK,CAAjB/J,CAAAA,CAAAA,CAAA,KAOE6J,CAAAA,CAAAA,CAASE,CAAY,CAAA,MAAA,CAGrB,IAAMC,CAAchN,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAD,CAAAgN,CAAAA,CAAAA,CAAY,eAAZ,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAhN,CAA6B,CAAA,eAAA,GAA7B,YAAAC,CAA8C,CAAA,MAAA,EAAS,CAErEiN,CAAAA,CAAAA,CAAAA,CAAAA,CAAWhN,CAAA8M,CAAAA,CAAAA,CAAY,eAAZ,GAAA,IAAA,CAAA,KAAA,CAAA,CAAA9M,EAA6B,KAAS,GAAA,IAAA,CAAA,CAEnD+M,CAAeC,EAAAA,CAAAA,GACjBH,CAA2B,CAAA,IAAA,CAAKC,CAAY,CAAA,eAAe,EAE/D,CAAA,CAAA,MAjBA/J,CA5CV,CAAA,CA4CUnE,CAAA,CAAA,CAAAmE,CAAA,EAAA,CAAA,OAAA,CAAA,GAAA,CAAAD,IAAAC,CAAAH,CAAAA,CAAAA,CAAA,MAAAD,CAAAA,GAAAA,MAAAA,IAAAA,CAAAA,CAAAI,CAAA,CAAA,IAAA,CAAAH,CAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA,GAAAhE,EAAA,MAAAA,CAAAA,CAAA,CAkBF,CAAA,CAAA,CAAA,CAAA,MAASqN,CAAqB,CAAA,CAC5BvL,CAAA,EAAA,IAAA,EAAAA,EAAQ,IAAK,CAAA,4CAAA,CAA8C,CAAE,mBAAA,CAAAuL,CAAoB,CAAA,CAAA,CACjFY,CAA6B,CAAA,KAAA,EAC/B,CACA,IAAMI,CAAqD,CAAA,CACzD,OAAS,CAAA,CAAE,MAAQ5O,CAAAA,CAAAA,CAAK,QAAS,IAAMA,CAAAA,CAAAA,CAAK,IAAM,CAAA,KAAA,CAAOA,CAAK,CAAA,KAAM,CACpE,CAAA,eAAA,CAAiBsK,EACjB,gBAAkB3F,CAAAA,CAAAA,CAClB,mBAAqB6J,CAAAA,CACvB,CAEAnM,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,MAAM,wCAA0C,CAAA,CAAE,cAAAuM,CAAAA,CAAe,CACzE,CAAA,CAAA,MAAMA,EACR,CAAA,CAAA,MAzCAlK,CAlCN,CAAA,CAkCMnE,CAAA,CAAA,CAAAmE,CAAA,EAAA,CAAA,OAAA,CAAA,GAAA,CAAAD,CAAAC,GAAAA,CAAAA,CAAAH,EAAA,MAAAD,CAAAA,GAAAA,MAAAA,IAAAA,CAAAA,CAAAI,CAAA,CAAA,IAAA,CAAAH,CAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA,GAAAhE,CAAA,CAAA,MAAAA,EAAA,CA2CA2C,CAAAA,CAAAA,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAM,SAAU,CAAA,CAAE,IAAMO,CAAAA,kBAAAA,CAAe,EAAG,CAC5C,EAAA,CAAA,MAASlD,CAAO,CAAA,CACd8B,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,IAAA,CAAK,+BAAiC,CAAA,CAAE,KAAA9B,CAAAA,CAAM,CACtD,CAAA,CAAA,IAAIqK,CAEJ,CAAA,MAAIhK,EAAiB,kBAAmBL,CAAAA,CAAK,CAElCA,EAAAA,CAAAA,YAAiBX,CAD1BgL,CAAAA,CAAAA,CAAYrK,CAIZqK,CAAAA,CAAAA,CAAY/E,CAAYtF,CAAAA,CAAK,CAGzBqK,CAAAA,CACR,CAAE,OAAA,CACA1H,CAAA,EAAA,IAAA,EAAAA,EAAM,GACR,GAAA,CACF,CAEA,CAAA,CAAA,CAAA,OAAKF,CAIE,CAAA,MAAAmC,CAAO,CAAA,MAAA,IAAAb,CAAMP,CAAAA,WAAAA,CAAQ,IAAKf,CAAAA,CAAAA,CAAkB,IAAYN,CAAAA,CAAA,IAE7D,CAAA,IAAA,CAAA,WAAA,CAAA,OAAO,MADQ3B,CAAiB,CAAA,SAAA,EACZ,CAAA,eAAA,CAAgB,2BAAoCmC,CAAAA,CAAAA,EAAeR,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CACrF,OAAO,MAAM4L,CAAAA,CAAuBpL,CAAI,CAC1C,CAAC,CAAA,CACH,CAAC,CAAA,CAAA,CAAA,CAAA,CARQ,MAAAiC,CAAOmJ,CAAAA,CAAAA,EASlB,CAAA,CAAA,CAAA,CClGA,IAAMO,GAA2B1M,KAAE,CAAA,MAAA,CAAO,CACxC,KAAA,CAAOA,KAAE,CAAA,MAAA,EACT,CAAA,MAAA,CAAQ4G,cACR,CAAA,QAAA,CAAU5G,KAAE,CAAA,KAAA,CAAM6G,aAAQ,EAAC,CAC3B,CAAA,KAAA,CAAO7G,KAAE,CAAA,KAAA,CAAM8G,UAAK,EAAC,CAAE,CAAA,QAAA,EACvB,CAAA,aAAA,CAAe9G,MAAE,MAAOA,CAAAA,KAAAA,CAAE,MAAO,EAAC,CAAE,CAAA,QAAA,EACpC,CAAA,SAAA,CAAWA,MAAE,KAAMA,CAAAA,KAAAA,CAAE,MAA+B,EAAC,CAAE,CAAA,QAAA,EAAW,CAAA,QAAA,GAClE,oBAAsBA,CAAAA,KAAAA,CAAE,GAAI,EAAA,CAAE,QAAS,EAAA,CACvC,WAAaA,CAAAA,KAAAA,CAAE,UAAW,CAAA,WAAW,CAAE,CAAA,QAAA,EACzC,CAAC,CAGK2M,CAAAA,EAAAA,CAA4B3M,MAAE,MAAO,CAAA,CACzC,OAASA,CAAAA,KAAAA,CAAE,MAAO,CAAA,CAChB,MAAQ4G,CAAAA,YAAAA,EACR,CAAA,QAAA,CAAU5G,KAAE,CAAA,KAAA,CAAM6G,aAAQ,EAAC,CAC3B,CAAA,KAAA,CAAO7G,MAAE,KAAM8G,CAAAA,UAAAA,EAAM,CAAA,CAAE,QAAS,EAClC,CAAC,CAAA,CACD,QAAUmF,CAAAA,yBAAAA,CACV,oBAAsBjM,CAAAA,KAAAA,CAAE,GAAI,EAAA,CAAE,QAAS,EAAA,CACvC,SAAUA,KAAE,CAAA,MAAA,CAAO,CACjB,OAAA,CAASA,KAAE,CAAA,GAAA,EACX,CAAA,QAAA,CAAUA,MAAE,GAAI,EAClB,CAAC,CACH,CAAC,ECpBD,SAAgB4M,EAAAA,CACd9E,EACAC,CACAlH,CAAAA,CAAAA,CAC8D,CAAAkB,OAAAA,CAAAA,CAAA,IAC9D,CAAA,IAAA,CAAA,WAAA,CAAA,IAAM7B,CAASC,CAAAA,CAAAA,CAAc,SAAU,EAAA,CACjC0M,CAAoB,CAAA,SAAiB9L,CAA2E,CAAA,CAAA,OAAAgB,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAlBxH,IAAAzC,CAAAC,CAAAA,CAAAA,CAAAC,CAmBIU,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,0BAAA,CAAA,CACdA,GAAA,IAAAA,EAAAA,CAAAA,CAAQ,KAAM,CAAA,4BAAA,CAA8B,CAAE,OAAA,CAAA4H,CAAQ,CAAA,CAAA,CACtD,IAAMjK,CAAO6O,CAAAA,EAAAA,CAAyB,KAAM5E,CAAAA,CAAO,CAC7C1D,CAAAA,CAAAA,CAAY0D,CAAQ,CAAA,SAAA,EAAa,EAAC,CAClCG,CAA0BrG,CAAAA,WAAAA,CAAQ,MAAO,EAAA,CAEzCkL,CAAS,CAAA,CACb,OAAQjP,CAAK,CAAA,MAAA,CACb,QAAUA,CAAAA,CAAAA,CAAK,QACf,CAAA,KAAA,CAAOA,CAAK,CAAA,KACd,EAEA,GAAI,CACFsG,CAA4EC,CAAAA,CAAAA,CAAW,eAAiB0D,CAAAA,CAAAA,CAAQ,oBAAoB,CAAA,CAEpI,IAAMK,CAAkB,CAAA,CACtB,GAAK,CAAA,MAAA,IAAAhG,CAAMtE,CAAAA,CAAAA,CAAK,KAAM,CAAA,gBAAA,CAAiBA,CAAK,CAAA,MAAA,CAAQA,CAAK,CAAA,QAAA,CAAUA,CAAK,CAAA,KAAK,CAC7E,CAAA,CAAA,OAAA,CAAS,UAAAsE,CAAMtE,CAAAA,CAAAA,CAAK,KAAM,CAAA,oBAAA,CAAqBA,CAAK,CAAA,MAAA,CAAQA,CAAK,CAAA,QAAA,CAAUA,CAAK,CAAA,KAAK,CACrF,CAAA,CAAA,IAAA,CAAM,MAAAsE,IAAAA,CAAAA,CAAMtE,CAAK,CAAA,KAAA,CAAM,kBAAkBA,CAAK,CAAA,MAAA,CAAQA,CAAK,CAAA,QAAA,CAAUA,CAAK,CAAA,KAAK,CACjF,CAAA,CAAA,CAEK+F,CAAmB,EAAA,GACtBuE,CAAgB,CAAA,OAAA,CAAUjH,CAAAD,CAAAA,CAAAA,CAAA,EACrBkH,CAAAA,CAAAA,CAAgB,SADK,CAExB,MAAA,CAAQ,YACV,CAAA,CAAA,CAAA,CAGEtK,CAAK,CAAA,aAAA,GACPsK,CAAgB,CAAA,OAAA,CAAUlH,IAAA,EACrBkH,CAAAA,CAAAA,CAAgB,OAChBtK,CAAAA,CAAAA,CAAAA,CAAK,aAGZqC,CAAAA,CAAAA,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAQ,MAAM,oCAAsC,CAAA,CAAE,eAAAiI,CAAAA,CAAgB,CAEtE,CAAA,CAAA,IAAIiE,CAAS,CAAA,EAAA,CACTW,CAAkB,CAAA,CAAA,CAAA,CACtB,GAAA3K,CAAAA,IAAAA,IAAAA,CAAAA,CAAAC,CAA0B0F,CAAAA,CAAAA,CAAO,MAC/BI,CAAAA,CAAAA,CAAgB,IAChB,MACAA,CAAAA,CAAAA,CAAgB,IAChBA,CAAAA,CAAAA,CAAgB,OAChB,CAAA,CACE,WAAaL,CAAAA,CAAAA,CAAQ,WACvB,CACAG,CAAAA,CACF,CATA3F,CAAAA,CAAAA,CAAAA,CAAAC,CAAAnE,CAAAA,CAAAA,CAAAkE,CAAA,CAAA,CAAA,CAAAC,EAAA,MAAAJ,IAAAA,CAAAA,CAAAC,CAAA,CAAA,IAAA,EAAA,CAAA,EAAA,IAAA,CAAAE,CAAA,CAAA,CAAA,CAAA,CAUE,CAVS,IAAME,CAAjBD,CAAAA,CAAAA,CAAA,KAUE,CAAA,GAAA,CAAA,IAAA,IAAAH,CAAAC,CAAAA,CAAAA,CAAgCxE,CAAK,CAAA,KAAA,CAAM,iCAAiC2E,CAAiB4J,CAAAA,CAAM,CAAnG9J,CAAAA,CAAAA,CAAAA,CAAAC,CAAAnE,CAAAA,CAAAA,CAAAkE,CAAA,CAAA,CAAA,CAAAC,EAAA,MAAAJ,IAAAA,CAAAA,CAAAC,CAAA,CAAA,IAAA,EAAA,CAAA,EAAA,IAAA,CAAAE,CAAA,CAAA,CAAA,CAAA,CAAsG,CAA3F,IAAMgK,EAAjB/J,CAAA,CAAA,KAAA,CAEE6J,CAASE,CAAAA,CAAAA,CAAY,MAGrB,CAAA,IAAMC,CAAchN,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAD,CAAAgN,CAAAA,CAAAA,CAAY,eAAZ,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAhN,CAA6B,CAAA,eAAA,GAA7B,IAAAC,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAA8C,QAAS,CAErEiN,CAAAA,CAAAA,CAAAA,CAAAA,CAAWhN,CAAA8M,CAAAA,CAAAA,CAAY,eAAZ,GAAA,IAAA,CAAA,KAAA,CAAA,CAAA9M,CAA6B,CAAA,KAAA,GAAS,KAGvD,GAAI+M,CAAAA,EAAeC,CAAU,CAAA,CAC3B,IAAMC,CAAAA,CAAiB,CACrB,OAAA,CAASK,EACT,QAAUR,CAAAA,CAAAA,CAAY,eACtB,CAAA,oBAAA,CAAsBxE,CAAQ,CAAA,oBAAA,CAC9B,QAAU,CAAA,CACR,OAASK,CAAAA,CAAAA,CACT,QAAU3F,CAAAA,CACZ,CACF,CAAA,CAEA2B,CACEC,CAAAA,CAAAA,CACA2I,EAAkB,uBAA0B,CAAA,qBAAA,CAC5CjF,CAAQ,CAAA,oBAAA,CACR2E,CACF,CAAA,CAEIM,CACFA,GAAAA,CAAAA,CAAkB,IAGpB7M,CAAA,EAAA,IAAA,EAAAA,CAAQ,CAAA,KAAA,CAAM,mCAAqC,CAAA,CAAE,cAAAuM,CAAAA,CAAe,GACpE,MAAMA,EACR,CAGF,CAAA,CAAA,MArCAlK,CAnER,CAAA,CAmEQnE,CAAA,CAAA,CAAAmE,CAAA,EAAA,CAAA,OAAA,CAAA,GAAA,CAAAD,CAAAC,GAAAA,CAAAA,CAAAH,CAAA,CAAA,MAAA,CAAA,GAAA,MAAA,IAAAD,CAAAI,CAAAA,CAAAA,CAAA,KAAAH,CAAA,CAAA,CAAA,EAAA,CAAA,OAAA,CAAA,GAAAhE,CAAA,CAAA,MAAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,MAVFmE,CAzDN,CAAA,CAyDMnE,EAAA,CAAAmE,CAAAA,EAAAA,CAAAA,OAAA,CAAAD,GAAAA,CAAAA,CAAAA,GAAAC,CAAAH,CAAAA,CAAAA,CAAA,MAAAD,CAAAA,GAAAA,MAAAA,IAAAA,CAAAA,CAAAI,EAAA,IAAAH,CAAAA,CAAAA,CAAAA,CAAAA,EAAAA,CAAAA,OAAA,CAAAhE,GAAAA,CAAAA,CAAA,MAAAA,CAAAA,CAAA,CAkDA2C,CAAAA,CAAAA,CAAAA,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAM,SAAU,CAAA,CAAE,IAAMO,CAAAA,kBAAAA,CAAe,EAAG,CAAA,CAAA,CAC1C6C,EACEC,CACA,CAAA,aAAA,CACA0D,CAAQ,CAAA,oBACV,EACF,CAAA,MAAS1J,CAAO,CAAA,CACd8B,GAAA,IAAAA,EAAAA,CAAAA,CAAQ,IAAK,CAAA,0BAAA,CAA4B,CAAE,KAAA,CAAA9B,CAAM,CAAA,CAAA,CACjD,IAAIqK,CAEJ,CAAA,MAAIhK,CAAiB,CAAA,kBAAA,CAAmBL,CAAK,CAAA,EAElCA,CAAiBX,YAAAA,CAAAA,CAD1BgL,CAAYrK,CAAAA,CAAAA,CAIZqK,CAAY/E,CAAAA,CAAAA,CAAYtF,CAAK,CAAA,CAI/B+F,CACEC,CAAAA,CAAAA,CACA,gBACA0D,CAAQ,CAAA,oBAAA,CACRW,CACF,CAAA,CAEMA,CACR,CAAA,OAAE,CACA1H,CAAAA,EAAA,IAAAA,EAAAA,CAAAA,CAAM,GACR,GAAA,CACF,CAEA,CAAA,CAAA,CAAA,OAAKF,CAIE,CAAA,MAAAmC,EAAO,MAAAb,IAAAA,CAAAA,CAAMP,WAAQ,CAAA,IAAA,CAAKf,CAAkB,CAAA,IAAYN,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAE7D,OAAO,MADQ3B,CAAiB,CAAA,SAAA,EACZ,CAAA,eAAA,CAAgB,qBAA8BmC,CAAAA,CAAAA,EAAeR,EAAA,IAC/E,CAAA,IAAA,CAAA,WAAA,CAAA,OAAO,MAAMsM,CAAAA,CAAkB9L,CAAI,CACrC,CAAC,CAAA,CACH,EAAC,CARQ,CAAA,CAAA,CAAA,MAAAiC,CAAO6J,CAAAA,CAAAA,EASlB,CAAA,CAAA,CAAA,CCrGMG,IAAAA,EAAAA,CAAN,KAAc,CAqBZ,WAAA,CAAYpM,CAA8B,CAAA,EAAI,CAAA,CArEhD,IAAAtB,CAAAA,CAAAC,CAAAC,CAAAA,CAAAA,CAAAyN,CAAAC,CAAAA,CAAAA,CAAAC,CAAAC,CAAAA,CAAAA,CAsEI,GAAI,CAACxM,EAAQ,uBAA2BgD,EAAAA,CAAAA,EACtC,CAAA,MAAM,IAAInG,CAAAA,CACR,6SAIF,CAAA,CAGF,KAAK,OAAUiJ,CAAAA,EAAAA,CAAe,KAAM9F,CAAAA,CAAO,CAE3CT,CAAAA,CAAAA,CAAc,SAAUS,CAAAA,CAAAA,CAAQ,MAAM,CACtC,CAAA,IAAA,CAAK,MAASA,CAAAA,CAAAA,CAAQ,MAEtB,CAAA,IAAA,CAAK,SAAY4F,CAAAA,EAAAA,CAAiB,oBAChC,CAAA,IAAA,CAAK,OAAQ,CAAA,eAAA,GAAoB,KAAY,CAAA,CAAA,CAAA,CAAA,CAAO,IAAK,CAAA,OAAA,CAAQ,eACnE,CAEA5H,CAAAA,CAAAA,CAAiB,SAAUU,CAAAA,CAAAA,CAAAA,CAAAsB,CAAQ,CAAA,SAAA,GAAR,IAAAtB,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAmB,MAAM,CACpD,CAAA,IAAA,CAAK,MAASV,CAAAA,CAAAA,CAAiB,SAAU,EAAA,CAEzCA,CAAiB,CAAA,QAAA,CAAA,CAASW,EAAAqB,CAAQ,CAAA,SAAA,GAAR,IAAArB,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAmB,KAAK,CAAA,CAClD,IAAK,CAAA,KAAA,CAAQX,CAAiB,CAAA,QAAA,EAE9B,CAAA,IAAMyO,CAAe,CAAA,CACnB,kBAAoB7N,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,KAAK,OAAQ,CAAA,YAAA,GAAb,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAA2B,kBAAsB,GAAA,CAAA,CACrE,UAAYyN,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,IAAK,CAAA,OAAA,CAAQ,YAAb,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAA2B,CAAA,UAAA,GAAc,CACrD,CAAA,KAAA,CAAA,CAAA,CAAOC,EAAA,IAAK,CAAA,OAAA,CAAQ,YAAb,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAA2B,CAAA,KAAA,GAAS,CACzC,YAAA,CAAc,GACd,CAAA,iBAAA,CAAmB,CACrB,CAAA,CACA,OAASC,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,IAAK,CAAA,OAAA,CAAQ,eAAb,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAA2B,OAAW,GAAA,IACjD,CAEA,CAAA,IAAA,CAAK,MAAS,CAAA,CACZ,aAAc,IAAIxI,EAAAA,CAAY0I,CAAY,CAAA,CAC1C,aAAe,CAAA,IAAI1I,EAAY0I,CAAAA,CAAY,EAC3C,iBAAmB,CAAA,IAAI1I,EAAY0I,CAAAA,CAAY,CAC/C,CAAA,kBAAA,CAAoB,IAAI1I,EAAAA,CAAY0I,CAAY,CAClD,CAEA,CAAA,IAAA,CAAK,OAAQ,CAAA,gBAAA,CAAmB,IAAK,CAAA,OAAA,CAAQ,mBAAqB,KAAY,CAAA,CAAA,CAAA,CAAA,CAAO,IAAK,CAAA,OAAA,CAAQ,gBAGlG,CAAA,IAAA,CAAK,UACHzM,CAAAA,CAAAA,CAAQ,YACR,IAAInB,EAAAA,CAAqB,CAAE,qBAAA,CAAuB4N,CAAa,CAAA,OAAA,CAAU,EAAK,CAAA,gBAAA,CAAkB,KAAK,OAAQ,CAAA,gBAAiB,CAAC,CAAA,CAEjI,IAAK,CAAA,MAAA,CAAS,CACZ,YAAA,CAAczM,CAAQ,CAAA,iBAAA,EAAqB,IAAI8E,EAAAA,CAC/C,aAAe9E,CAAAA,CAAAA,CAAQ,kBAAsB,EAAA,IAAI8E,GACjD,gBAAkB9E,CAAAA,CAAAA,CAAQ,qBAAyB,EAAA,IAAI8E,EACzD,CAAA,CAAA,CACA0H,CAAA,CAAA,IAAA,CAAK,SAAL,IAAAA,EAAAA,CAAAA,CAAa,KAAM,CAAA,qBAAA,EACrB,CAEM,YAAA,CAAatF,CAAmF,CAAA,CAAA,OAAAvH,EAAA,IA9HxG,CAAA,IAAA,CAAA,WAAA,CAAA,IAAAjB,CAAAC,CAAAA,CAAAA,CAAAA,CA+HID,CAAA,CAAA,IAAA,CAAK,MAAL,GAAA,IAAA,EAAAA,CAAa,CAAA,IAAA,CAAK,8BAClBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,IAAK,CAAA,MAAA,GAAL,IAAAA,EAAAA,CAAAA,CAAa,MAAM,WAAa,CAAA,CAAE,OAAAuI,CAAAA,CAAQ,CAC1C,CAAA,CAAA,IAAMjK,CAAOwH,CAAAA,EAAAA,CAA2B,KAAMyC,CAAAA,CAAO,CAC/CwF,CAAAA,CAAAA,CAAYzP,CAAK,CAAA,KAAA,CAAM,WAAY,CAAA,IAAA,CAGzC,OAAO,MAAM,IAAA,CAAK,MAAO,CAAA,eAAA,CAAgB,eAAwBkD,CAAAA,CAAAA,EAAeR,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAC9E,OAAAQ,CAAAA,CAAK,YAAa,CAAA,WAAA,CAAauM,CAAS,CAAA,CACjC,IAAI,OAAA,CAAyC,CAAC3L,CAASoD,CAAAA,CAAAA,GAAW,CAvI/E,IAAAzF,CAwIQ,CAAA,IAAMsF,CAAmF,CAAA,CACvF,GAAI2I,OAAO,EAAA,CACX,OAAS1P,CAAAA,CAAAA,CACT,KAAO,CAAA,IAAA,CAAK,MAAO,CAAA,YAAA,CACnB,QAAUuD,CAA8C,EAAA,CACtD,IAAK,CAAA,SAAA,CAAU,MAAO,CAAA,cAAA,CAAgB,SAAW,CAAA,CAAE,SAAAkM,CAAAA,CAAAA,CAAW,KAAOlM,CAAAA,CAAAA,CAAS,QAAS,CAAA,KAAA,EAAS,EAAG,CAAC,CACpGO,CAAAA,CAAAA,CAAQP,CAAQ,EAClB,CACA,CAAA,MAAA,CAAShD,CAAe,EAAA,CACtB,QAAQ,GAAI,CAAA,oBAAA,CAAsBA,CAAK,CAAA,CACvC,IAAK,CAAA,SAAA,CAAU,MAAO,CAAA,cAAA,CAAgB,QAAS,CAAE,SAAA,CAAAkP,CAAU,CAAC,CAC5DvI,CAAAA,CAAAA,CAAO3G,CAAK,EACd,CACA,CAAA,OAAA,CAAS,IAAK,CAAA,mBAAA,CAAoB,IAAK,CAAA,IAAI,CAC3C,CAAA,gBAAA,CAAkBwD,YAAQ,MAAO,EACnC,CACA,CAAA,IAAA,CAAK,MAAO,CAAA,YAAA,CAAa,OAAQgD,CAAAA,CAAI,GACrCtF,CAAA,CAAA,IAAA,CAAK,MAAL,GAAA,IAAA,EAAAA,CAAa,CAAA,KAAA,CAAM,CAA2CsF,wCAAAA,EAAAA,CAAAA,CAAK,EAAE,CACvE,CAAA,EAAA,CAAC,CACH,CAAA,CAAC,CACH,CAAA,CAAA,CAEc,mBACZkD,CAAAA,CAAAA,CACAjH,CAC0C,CAAA,CAAA,OAAAN,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAjK9C,IAAAjB,CAAAA,CAAAC,CAAAC,CAAAA,CAAAA,CAAAyN,GAkKI3N,CAAA,CAAA,IAAA,CAAK,MAAL,GAAA,IAAA,EAAAA,CAAa,CAAA,KAAA,CAAM,qCACnB,CAAA,CAAA,IAAMzB,EAAOwH,EAA2B,CAAA,KAAA,CAAMyC,CAAO,CAAA,CACrD,OAAOD,EAAAA,CACL,CACE,KAAA,CAAO,KAAK,MAAO,CAAA,YAAA,CACnB,KAAOhK,CAAAA,CAAAA,CAAK,KACZ,CAAA,MAAA,CAAQA,CAAK,CAAA,MAAA,CACb,QAAUA,CAAAA,CAAAA,CAAK,QACf,CAAA,KAAA,CAAOA,CAAK,CAAA,KAAA,CACZ,WAAa2B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAD,EAAA1B,CAAK,CAAA,OAAA,GAAL,IAAA0B,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAc,WAAd,GAAA,IAAA,CAAAC,CAA6B,CAAA,CAAA,CAAA,CAC1C,UAAW,IAAK,CAAA,OAAA,CAAQ,qBACxB,CAAA,oBAAA,CAAA,CAAsByN,CAAApP,CAAAA,CAAAA,CAAK,OAAL,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAoP,EAAc,oBACtC,CAAA,CACA,IAAK,CAAA,UAAA,CACLpM,CACF,CACF,CAEO,CAAA,CAAA,UAAA,CAAWiH,CAAqG,CAAA,CAAA,OAAA/F,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CApLzH,IAAAzC,CAAAA,CAAAC,CAAAC,CAAAA,CAAAA,CAAAyN,GAqLI3N,CAAA,CAAA,IAAA,CAAK,MAAL,GAAA,IAAA,EAAAA,CAAa,CAAA,IAAA,CAAK,4BAClBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,KAAK,MAAL,GAAA,IAAA,EAAAA,CAAa,CAAA,KAAA,CAAM,WAAa,CAAA,CAAE,OAAAuI,CAAAA,CAAQ,GAC1C,IAAMjK,CAAAA,CAAOmJ,EAAyB,CAAA,KAAA,CAAMc,CAAO,CAAA,CAC7CwF,CAAYzP,CAAAA,CAAAA,CAAK,KAAM,CAAA,WAAA,CAAY,IAErCD,CAAAA,CAAAA,CAAS,SACPmD,CAAAA,CAAAA,CAAO,IAAK,CAAA,MAAA,CAAO,UAAU,aAAa,CAAA,CAC1CyM,CAAgB1O,CAAAA,SAAAA,CAAM,OAAQ8C,CAAAA,WAAAA,CAAQ,MAAO,EAAA,CAAGb,CAAI,CAE1D,CAAA,GAAI,CACF,OAAAA,CAAK,CAAA,YAAA,CAAa,WAAauM,CAAAA,CAAS,EACjC,MAAAtK,CAAAA,CAAO,MAAAb,IAAAA,CAAAA,CAAMP,WAAQ,CAAA,IAAA,CAAK4L,CAAe,CAAA,IAAYjN,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAhMlE,IAAAjB,CAAAA,CAiMQ,OAAOsN,EAAAA,CACL,CACE,KAAA,CAAO/O,EAAK,KACZ,CAAA,MAAA,CAAQA,CAAK,CAAA,MAAA,CACb,QAAUA,CAAAA,CAAAA,CAAK,QACf,CAAA,KAAA,CAAOA,CAAK,CAAA,KAAA,CACZ,SAAW,CAAA,IAAA,CAAK,OAAQ,CAAA,mBAAA,CACxB,oBAAsByB,CAAAA,CAAAA,CAAAA,CAAAzB,EAAK,OAAL,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAyB,CAAc,CAAA,oBAAA,CACpC,WAAazB,CAAAA,CAAAA,CAAK,WACpB,CAAA,CACA,IAAK,CAAA,UAAA,CACL2P,CACF,CACF,CAAC,CAAA,CAAA,CAAA,CACH,CAASpP,MAAAA,CAAAA,CAAO,CAId,MAHAR,CAAAA,CAAS,OACTmD,CAAAA,CAAAA,CAAK,SAAU,CAAA,CAAE,IAAMO,CAAAA,kBAAAA,CAAe,MAAO,OAAS,CAAA,eAAgB,CAAC,CAAA,CAAA,CACvE9B,CAAA,CAAA,IAAA,CAAK,MAAL,GAAA,IAAA,EAAAA,EAAa,KAAM,CAAA,4BAAA,CAA8B,CAAE,KAAA,CAAApB,CAAM,CAAA,CAAA,CACrDA,CAAiBX,YAAAA,CAAAA,CAAoBW,CAC9B,CAAA,IAAIX,CAAcW,CAAAA,CAAAA,EAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAe,OAAS,CAAA,GAAA,CAAA,CAAM6O,EAAA7O,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAe,CAAA,QAAA,GAAf,IAAA6O,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAyB,IAAI,CAC1F,QAAE,CACA,IAAA,CAAK,SAAU,CAAA,MAAA,CAAO,YAAcrP,CAAAA,CAAAA,CAAQ,CAAE,SAAA,CAAA0P,CAAU,CAAC,CAAA,CACzDvM,CAAK,CAAA,GAAA,GACP,CACF,CAEM,CAAA,CAAA,aAAA,CAAc+G,CAAqF,CAAA,CAAA,OAAAvH,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CA3N3G,IAAAjB,CAAAA,CAAAC,CA4NID,CAAAA,CAAAA,CAAAA,CAAA,KAAK,MAAL,GAAA,IAAA,EAAAA,CAAa,CAAA,IAAA,CAAK,+BAClBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,IAAK,CAAA,MAAA,GAAL,MAAAA,CAAa,CAAA,KAAA,CAAM,WAAa,CAAA,CAAE,OAAAuI,CAAAA,CAAQ,CAC1C,CAAA,CAAA,IAAMjK,EAAOqJ,EAA4B,CAAA,KAAA,CAAMY,CAAO,CAAA,CAChDwF,CAAYzP,CAAAA,CAAAA,CAAK,KAAM,CAAA,WAAA,CAAY,IACzC,CAAA,OAAO,MAAM,IAAA,CAAK,MAAO,CAAA,eAAA,CAAgB,gBAAyBkD,CAAAA,CAAAA,EAAeR,EAAA,IAC/E,CAAA,IAAA,CAAA,WAAA,CAAA,OAAAQ,CAAK,CAAA,YAAA,CAAa,WAAauM,CAAAA,CAAS,CACjC,CAAA,IAAI,OAA0C,CAAA,CAAC3L,CAASoD,CAAAA,CAAAA,GAAW,CAlOhF,IAAAzF,CAmOQ,CAAA,IAAMsF,EAAqF,CACzF,EAAA,CAAI2I,OAAO,EAAA,CACX,OAAS1P,CAAAA,CAAAA,CACT,KAAO,CAAA,IAAA,CAAK,MAAO,CAAA,aAAA,CACnB,OAAUuD,CAAAA,CAAAA,EAA+C,CACvD,IAAA,CAAK,SAAU,CAAA,MAAA,CAAO,gBAAiB,SAAW,CAAA,CAAE,SAAAkM,CAAAA,CAAAA,CAAW,KAAOlM,CAAAA,CAAAA,CAAS,QAAS,CAAA,KAAA,EAAS,EAAG,CAAC,CACrGO,CAAAA,CAAAA,CAAQP,CAAQ,EAClB,CACA,CAAA,MAAA,CAAShD,GAAe,CACtB,IAAA,CAAK,SAAU,CAAA,MAAA,CAAO,eAAiB,CAAA,OAAA,CAAS,CAAE,SAAA,CAAAkP,CAAU,CAAC,CAC7DvI,CAAAA,CAAAA,CAAO3G,CAAK,EACd,CACA,CAAA,OAAA,CAAS,KAAK,oBAAqB,CAAA,IAAA,CAAK,IAAI,CAAA,CAC5C,gBAAkBwD,CAAAA,WAAAA,CAAQ,MAAO,EACnC,EACA,IAAK,CAAA,MAAA,CAAO,aAAc,CAAA,OAAA,CAAQgD,CAAI,CAAA,CAAA,CACtCtF,CAAA,CAAA,IAAA,CAAK,SAAL,IAAAA,EAAAA,CAAAA,CAAa,KAAM,CAAA,CAAA,yCAAA,EAA4CsF,CAAK,CAAA,EAAE,CACxE,CAAA,EAAA,CAAC,CACH,CAAA,CAAC,CACH,CAAA,CAAA,CAEc,oBACZkD,CAAAA,CAAAA,CACAjH,CAC2C,CAAA,CAAA,OAAAN,EAAA,IA3P/C,CAAA,IAAA,CAAA,WAAA,CAAA,IAAAjB,CAAAC,CAAAA,CAAAA,CAAAC,CAAAyN,CAAAA,CAAAA,CAAAA,CA4PI3N,CAAA,CAAA,IAAA,CAAK,SAAL,IAAAA,EAAAA,CAAAA,CAAa,KAAM,CAAA,sCAAA,CAAA,CACnB,IAAMzB,CAAAA,CAAOqJ,EAA4B,CAAA,KAAA,CAAMY,CAAO,CACtD,CAAA,OAAO6B,EACL,CAAA,CACE,KAAO,CAAA,IAAA,CAAK,MAAO,CAAA,aAAA,CACnB,KAAO9L,CAAAA,CAAAA,CAAK,KACZ,CAAA,MAAA,CAAQA,CAAK,CAAA,MAAA,CACb,iBAAmBA,CAAAA,CAAAA,CAAK,kBACxB,WAAa2B,CAAAA,CAAAA,CAAAA,CAAAA,CAAAD,CAAA1B,CAAAA,CAAAA,CAAK,OAAL,GAAA,IAAA,CAAA,KAAA,CAAA,CAAA0B,CAAc,CAAA,WAAA,GAAd,IAAAC,CAAAA,CAAAA,CAA6B,CAC1C,CAAA,CAAA,SAAA,CAAW,IAAK,CAAA,OAAA,CAAQ,sBACxB,CAAA,oBAAA,CAAA,CAAsByN,EAAApP,CAAK,CAAA,OAAA,GAAL,IAAAoP,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAc,oBACtC,CAAA,CACA,IAAK,CAAA,UAAA,CACLpM,CACF,CACF,CAEM,CAAA,CAAA,iBAAA,CAAkBiH,CAA6F,CAAA,CAAA,OAAAvH,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CA7QvH,IAAAjB,CAAAC,CAAAA,CAAAA,CAAAA,CA8QID,CAAA,CAAA,IAAA,CAAK,MAAL,GAAA,IAAA,EAAAA,CAAa,CAAA,IAAA,CAAK,sCAClBC,CAAA,CAAA,IAAA,CAAK,MAAL,GAAA,IAAA,EAAAA,CAAa,CAAA,KAAA,CAAM,WAAa,CAAA,CAAE,QAAAuI,CAAQ,CAAA,CAAA,CAC1C,IAAMjK,CAAAA,CAAOuJ,EAAgC,CAAA,KAAA,CAAMU,CAAO,CAAA,CACpDwF,CAAYzP,CAAAA,CAAAA,CAAK,KAAM,CAAA,WAAA,CAAY,IAGzC,CAAA,OAAO,MAAM,IAAA,CAAK,OAAO,eAAgB,CAAA,qBAAA,CAA8BkD,CAAeR,EAAAA,CAAAA,CAAA,IACpF,CAAA,IAAA,CAAA,WAAA,CAAA,OAAAQ,CAAK,CAAA,YAAA,CAAa,YAAauM,CAAS,CAAA,CACjC,IAAI,OAAA,CAA8C,CAAC3L,CAAAA,CAASoD,CAAW,GAAA,CAtRpF,IAAAzF,CAuRQ,CAAA,IAAMsF,CAA6F,CAAA,CACjG,EAAI2I,CAAAA,OAAAA,EACJ,CAAA,OAAA,CAAS1P,CACT,CAAA,OAAA,CAAUuD,CAAmD,EAAA,CA1RvE,IAAA9B,CAAAA,CA2RY,IAAK,CAAA,SAAA,CAAU,OAAO,mBAAqB,CAAA,SAAA,CAAW,CAAE,SAAA,CAAAgO,CAAW,CAAA,KAAA,CAAA,CAAA,CAAOhO,CAAA8B,CAAAA,CAAAA,CAAS,sBAAT,IAAA9B,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAA8B,KAAS,GAAA,EAAG,CAAC,CACrHqC,CAAAA,CAAAA,CAAQP,CAAQ,EAClB,CAAA,CACA,MAAShD,CAAAA,CAAAA,EAAe,CACtB,OAAA,CAAQ,GAAI,CAAA,yBAAA,CAA2BA,CAAK,CAAA,CAC5C,IAAK,CAAA,SAAA,CAAU,MAAO,CAAA,mBAAA,CAAqB,OAAS,CAAA,CAAE,UAAAkP,CAAU,CAAC,CACjEvI,CAAAA,CAAAA,CAAO3G,CAAK,EACd,CACA,CAAA,OAAA,CAAS,KAAK,wBAAyB,CAAA,IAAA,CAAK,IAAI,CAAA,CAChD,gBAAkBwD,CAAAA,WAAAA,CAAQ,MAAO,EACnC,EACA,IAAK,CAAA,MAAA,CAAO,iBAAkB,CAAA,OAAA,CAAQgD,CAAI,CAAA,CAAA,CAC1CtF,CAAA,CAAA,IAAA,CAAK,MAAL,GAAA,IAAA,EAAAA,CAAa,CAAA,KAAA,CAAM,CAAgDsF,6CAAAA,EAAAA,CAAAA,CAAK,EAAE,CAAA,CAAA,EAC5E,CAAC,CACH,CAAA,CAAC,CACH,CAAA,CAAA,CAEc,wBACZkD,CAAAA,CAAAA,CACAjH,CAC+C,CAAA,CAAA,OAAAN,EAAA,IA/SnD,CAAA,IAAA,CAAA,WAAA,CAAA,IAAAjB,CAgTIA,CAAAA,CAAAA,CAAAA,CAAA,IAAK,CAAA,MAAA,GAAL,IAAAA,EAAAA,CAAAA,CAAa,MAAM,qCACnB,CAAA,CAAA,IAAMzB,CAAOuJ,CAAAA,EAAAA,CAAgC,KAAMU,CAAAA,CAAO,CAC1D,CAAA,OAAOwD,EACL,CAAA,CACE,KAAOzN,CAAAA,CAAAA,CAAK,KACZ,CAAA,IAAA,CAAMA,CAAK,CAAA,IAAA,CACX,QAASA,CAAK,CAAA,OAAA,CACd,KAAOA,CAAAA,CAAAA,CAAK,KACd,CAAA,CACA,IAAK,CAAA,UAAA,CACLgD,CACF,CACF,CAAA,CAAA,CAEO,eAAgBiH,CAAAA,CAAAA,CAA+G,CAAA/F,OAAAA,CAAAA,CAAA,IA9TxI,CAAA,IAAA,CAAA,WAAA,CAAA,IAAAzC,EAAAC,CAAAC,CAAAA,CAAAA,CAAAyN,CA+TI3N,CAAAA,CAAAA,CAAAA,CAAA,IAAK,CAAA,MAAA,GAAL,IAAAA,EAAAA,CAAAA,CAAa,IAAK,CAAA,iCAAA,CAAA,CAAA,CAClBC,CAAA,CAAA,IAAA,CAAK,MAAL,GAAA,IAAA,EAAAA,CAAa,CAAA,KAAA,CAAM,4BAA6B,CAAE,OAAA,CAAAuI,CAAQ,CAAA,CAAA,CAC1D,IAAMjK,CAAAA,CAAOwJ,EAA8B,CAAA,KAAA,CAAMS,CAAO,CAClDwF,CAAAA,CAAAA,CAAYzP,CAAK,CAAA,KAAA,CAAM,WAAY,CAAA,IAAA,CAErCD,CAAS,CAAA,SAAA,CACPmD,EAAO,IAAK,CAAA,MAAA,CAAO,SAAU,CAAA,mBAAmB,CAChDyM,CAAAA,CAAAA,CAAgB1O,SAAM,CAAA,OAAA,CAAQ8C,WAAQ,CAAA,MAAA,EAAUb,CAAAA,CAAI,CAE1D,CAAA,GAAI,CACF,OAAAA,EAAK,YAAa,CAAA,WAAA,CAAauM,CAAS,CAAA,CACjC,MAAAtK,CAAAA,CAAO,MAAAb,IAAAA,CAAAA,CAAMP,WAAQ,CAAA,IAAA,CAAK4L,CAAe,CAAA,IAAYjN,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAC1D,OAAO2L,EAAAA,CACL,CACE,KAAOrO,CAAAA,CAAAA,CAAK,KACZ,CAAA,IAAA,CAAMA,CAAK,CAAA,IAAA,CACX,OAASA,CAAAA,CAAAA,CAAK,OACd,CAAA,KAAA,CAAOA,CAAK,CAAA,KACd,CACA,CAAA,IAAA,CAAK,UACL2P,CAAAA,CACF,CACF,CAAC,CAAA,CAAA,CAAA,CACH,CAASpP,MAAAA,CAAAA,CAAO,CAId,MAHAR,CAAS,CAAA,OAAA,CACTmD,EAAK,SAAU,CAAA,CAAE,IAAMO,CAAAA,kBAAAA,CAAe,KAAO,CAAA,OAAA,CAAS,qBAAsB,CAAC,GAC7E9B,CAAA,CAAA,IAAA,CAAK,MAAL,GAAA,IAAA,EAAAA,CAAa,CAAA,KAAA,CAAM,iCAAmC,CAAA,CAAE,KAAApB,CAAAA,CAAM,CAC1DA,CAAAA,CAAAA,CAAAA,YAAiBX,CAAoBW,CAAAA,CAAAA,CAC9B,IAAIX,CAAAA,CAAcW,GAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAe,OAAS,CAAA,GAAA,CAAA,CAAM6O,CAAA7O,CAAAA,CAAAA,EAAA,IAAAA,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAe,WAAf,IAAA6O,CAAAA,KAAAA,CAAAA,CAAAA,CAAAA,CAAyB,IAAI,CAC1F,CAAE,OAAA,CACA,IAAK,CAAA,SAAA,CAAU,OAAO,iBAAmBrP,CAAAA,CAAAA,CAAQ,CAAE,SAAA,CAAA0P,CAAU,CAAC,CAC9DvM,CAAAA,CAAAA,CAAK,GAAI,GACX,CACF,CAAA,CAAA,CACM,kBAAmB+G,CAAAA,CAAAA,CAA+F,CAAAvH,OAAAA,CAAAA,CAAA,sBAjW1H,IAAAjB,CAAAA,CAAAC,CAkWID,CAAAA,CAAAA,CAAAA,CAAA,IAAK,CAAA,MAAA,GAAL,IAAAA,EAAAA,CAAAA,CAAa,KAAK,oCAClBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,IAAK,CAAA,MAAA,GAAL,IAAAA,EAAAA,CAAAA,CAAa,KAAM,CAAA,WAAA,CAAa,CAAE,OAAAuI,CAAAA,CAAQ,CAG1C,CAAA,CAAA,IAAMjK,CAAOyJ,CAAAA,EAAAA,CAAiC,KAAMQ,CAAAA,CAAO,CACrDwF,CAAAA,CAAAA,CAAYzP,CAAK,CAAA,KAAA,CAAM,WAAY,CAAA,IAAA,CAEzC,OAAO,MAAM,KAAK,MAAO,CAAA,eAAA,CAAgB,sBAA+BkD,CAAAA,CAAAA,EAAeR,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CACrF,OAAAQ,CAAAA,CAAK,aAAa,WAAauM,CAAAA,CAAS,CAEjC,CAAA,IAAI,OAA+C,CAAA,CAAC3L,CAASoD,CAAAA,CAAAA,GAAW,CA5WrF,IAAAzF,CAAAA,CA6WQ,IAAMsF,CAAAA,CAA+F,CACnG,EAAA,CAAI2I,OAAO,EAAA,CACX,OAAS1P,CAAAA,CAAAA,CACT,OAAUuD,CAAAA,CAAAA,EAAoD,CAhXxE,IAAA9B,CAiXY,CAAA,IAAA,CAAK,UAAU,MAAO,CAAA,oBAAA,CAAsB,SAAW,CAAA,CAAE,SAAAgO,CAAAA,CAAAA,CAAW,KAAOhO,CAAAA,CAAAA,CAAAA,CAAAA,CAAA8B,EAAS,mBAAT,GAAA,IAAA,CAAA,KAAA,CAAA,CAAA9B,CAA8B,CAAA,KAAA,GAAS,EAAG,CAAC,CAAA,CACtHqC,EAAQP,CAAQ,EAClB,CACA,CAAA,MAAA,CAAShD,CAAe,EAAA,CACtB,IAAK,CAAA,SAAA,CAAU,MAAO,CAAA,oBAAA,CAAsB,OAAS,CAAA,CAAE,SAAAkP,CAAAA,CAAU,CAAC,CAAA,CAClEvI,EAAO3G,CAAK,EACd,CACA,CAAA,OAAA,CAAS,IAAK,CAAA,yBAAA,CAA0B,IAAK,CAAA,IAAI,EACjD,gBAAkBwD,CAAAA,WAAAA,CAAQ,MAAO,EACnC,CACA,CAAA,IAAA,CAAK,MAAO,CAAA,kBAAA,CAAmB,QAAQgD,CAAI,CAAA,CAAA,CAC3CtF,CAAA,CAAA,IAAA,CAAK,MAAL,GAAA,IAAA,EAAAA,CAAa,CAAA,KAAA,CAAM,CAAiDsF,8CAAAA,EAAAA,CAAAA,CAAK,EAAE,CAAA,CAAA,EAC7E,CAAC,CACH,CAAC,CAAA,CACH,GAEc,yBACZkD,CAAAA,CAAAA,CACAjH,CACgD,CAAA,CAAA,OAAAN,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CApYpD,IAAAjB,CAAAA,CAAAA,CAqYIA,EAAA,IAAK,CAAA,MAAA,GAAL,IAAAA,EAAAA,CAAAA,CAAa,KAAM,CAAA,2CAAA,CAAA,CACnB,IAAMzB,CAAAA,CAAOyJ,GAAiC,KAAMQ,CAAAA,CAAO,CAC3D,CAAA,OAAO8D,EACL,CAAA,CACE,KAAO/N,CAAAA,CAAAA,CAAK,KACZ,CAAA,OAAA,CAASA,CAAK,CAAA,OAAA,CACd,IAAMA,CAAAA,CAAAA,CAAK,IACX,CAAA,KAAA,CAAOA,EAAK,KACd,CAAA,CACA,IAAK,CAAA,UAAA,CACLgD,CACF,CACF,CAEM,CAAA,CAAA,gBAAA,CAAiBiH,CAA2F,CAAA,CAAA,OAAAvH,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA,WAAA,CAnZpH,IAAAjB,CAAAA,CAAAC,CAAAC,CAAAA,CAAAA,CAAAyN,GAoZI3N,CAAA,CAAA,IAAA,CAAK,MAAL,GAAA,IAAA,EAAAA,CAAa,CAAA,IAAA,CAAK,kCAClBC,CAAAA,CAAAA,CAAAA,CAAAA,CAAA,IAAK,CAAA,MAAA,GAAL,IAAAA,EAAAA,CAAAA,CAAa,KAAM,CAAA,WAAA,CAAa,CAAE,OAAA,CAAAuI,CAAQ,CAC1C,CAAA,CAAA,IAAMjK,CAAO4J,CAAAA,EAAAA,CAA+B,KAAMK,CAAAA,CAAO,CAErDlK,CAAAA,CAAAA,CAAS,UACPmD,CAAO,CAAA,IAAA,CAAK,MAAO,CAAA,SAAA,CAAU,oBAAoB,CAAA,CACjDyM,CAAgB1O,CAAAA,SAAAA,CAAM,QAAQ8C,WAAQ,CAAA,MAAA,EAAUb,CAAAA,CAAI,CAE1D,CAAA,GAAI,CACF,OAAO,MAAMa,WAAAA,CAAQ,IAAK4L,CAAAA,CAAAA,CAAe,IAAYjN,CAAAA,CAAA,IA7Z3D,CAAA,IAAA,CAAA,WAAA,CAAA,IAAAjB,EAAAC,CA8ZQ,CAAA,OAAOyK,EACL,CAAA,CAEE,KAAOnM,CAAAA,CAAAA,CAAK,KACZ,CAAA,QAAA,CAAUA,EAAK,QACf,CAAA,aAAA,CAAA,CAAeyB,CAAAzB,CAAAA,CAAAA,CAAK,OAAL,GAAA,IAAA,CAAA,KAAA,CAAA,CAAAyB,CAAc,CAAA,aAAA,CAC7B,UAAW,IAAK,CAAA,OAAA,CAAQ,yBACxB,CAAA,oBAAA,CAAA,CAAsBC,CAAA1B,CAAAA,CAAAA,CAAK,OAAL,GAAA,IAAA,CAAA,KAAA,CAAA,CAAA0B,CAAc,CAAA,oBAAA,CACpC,WAAa1B,CAAAA,CAAAA,CAAK,WACpB,CAAA,CACA,IAAK,CAAA,UAAA,CACL2P,CACF,CACF,CAAA,CAAC,CACH,CAAA,MAASpP,CAAO,CAAA,CAId,MAHAR,CAAAA,CAAS,QACTmD,CAAK,CAAA,SAAA,CAAU,CAAE,IAAA,CAAMO,kBAAe,CAAA,KAAA,CAAO,OAAS,CAAA,2BAA4B,CAAC,CACnF9B,CAAAA,CAAAA,CAAAA,CAAA,IAAK,CAAA,MAAA,GAAL,IAAAA,EAAAA,CAAAA,CAAa,KAAM,CAAA,kCAAA,CAAoC,CAAE,KAAA,CAAApB,CAAM,CAAA,CAAA,CAC3DA,CAAiBX,YAAAA,CAAAA,CAAoBW,CAC9B,CAAA,IAAIX,EAAcW,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,CAAe,CAAA,OAAA,CAAS,GAAM6O,CAAAA,CAAAA,CAAAA,CAAA7O,CAAA,EAAA,IAAA,CAAA,KAAA,CAAA,CAAAA,EAAe,QAAf,GAAA,IAAA,CAAA,KAAA,CAAA,CAAA6O,CAAyB,CAAA,IAAI,CAC1F,CAAA,OAAE,CACA,IAAA,CAAK,UAAU,MAAO,CAAA,kBAAA,CAAoBrP,CAAQ,CAAA,EAAE,CAAA,CACpDmD,CAAK,CAAA,GAAA,GACP,CACF,CAEA,CAAA,CAAA,OAAO,gBAAiB+G,CAAAA,CAAAA,CAAkF,CACxG,IAAMjK,EAAO0J,EAA+B,CAAA,KAAA,CAAMO,CAAO,CAAA,CAEzD,OAAOY,EAAAA,CAAuB,CAAE,KAAA,CAAO7K,EAAK,KAAO,CAAA,cAAA,CAAgBA,CAAK,CAAA,cAAA,CAAgB,SAAWA,CAAAA,CAAAA,CAAK,SAAU,CAAC,CACrH,CAGF,EA/YMmP,EA8YG,CAAA,YAAA,CAAevP,CC9bxB,CAKA,IAAMgQ,EAAiCzN,CAAAA,KAAAA,CACpC,MAAO,CAAA,CACN,SAAWA,CAAAA,KAAAA,CAAE,QACb,CAAA,cAAA,CAAgBA,KAAE,CAAA,MAAA,EAA6B,CAAA,QAAA,EAC/C,CAAA,KAAA,CAAOA,MAAE,MAAoB,EAAA,CAAE,QAAS,EAC1C,CAAC,CAAA,CACA,MACEnC,CAAAA,CAAAA,EAESA,EAAK,cAAmB,GAAA,KAAA,CAAA,GAAgBA,CAAK,CAAA,KAAA,GAAU,KAEjE,CAAA,CAAA,CAAA,CACE,OAAS,CAAA,oEAAA,CACT,IAAM,CAAA,CAAC,gBAAkB,CAAA,OAAO,CAClC,CACF,CAII6P,CAAAA,EAAAA,CAAkC1N,MAAE,MAAO,CAAA,CAC/C,IAAMA,CAAAA,KAAAA,CAAE,MAAO,EAAA,CACf,QAAUA,CAAAA,KAAAA,CAAE,QACZ,CAAA,YAAA,CAAcA,KAAE,CAAA,MAAA,EAChB,CAAA,WAAA,CAAaA,KAAE,CAAA,MAAA,EACjB,CAAC","file":"index.js","sourcesContent":["import { GatewayBaseError } from \"@adaline/types\";\n\nclass GatewayError extends Error {\n status: number;\n data: unknown;\n\n constructor(message: string, status: number = 500, data?: unknown) {\n super(message);\n this.name = \"GatewayError\";\n this.status = status;\n this.data = data;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GatewayError);\n }\n }\n}\n\nconst GatewayTelemetryErrorLiteral = \"GatewayTelemetryError\" as const;\nclass GatewayTelemetryError extends GatewayBaseError {\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, GatewayTelemetryErrorLiteral);\n this.info = info;\n this.cause = cause;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isGatewayTelemetryError(error: unknown): error is GatewayTelemetryError {\n return error instanceof GatewayTelemetryError;\n }\n}\n\nexport { GatewayError, GatewayTelemetryError };\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst HttpClientErrorLiteral = \"HttpClientError\" as const;\nclass HttpClientError extends GatewayBaseError {\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, HttpClientErrorLiteral);\n this.info = info;\n this.cause = cause;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isHttpClientError(error: unknown): error is HttpClientError {\n return error instanceof HttpClientError;\n }\n}\n\nconst HttpRequestErrorLiteral = \"HttpRequestError\" as const;\nclass HttpRequestError extends GatewayBaseError {\n readonly info: string;\n readonly cause: {\n status: number;\n headers: Record<string, string>;\n data: unknown;\n };\n\n constructor(message: string, status: number = 500, headers: Record<string, string>, data: unknown) {\n super({ info: message, cause: { status, headers, data } }, HttpRequestErrorLiteral);\n this.info = message;\n this.cause = { status, headers, data };\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isHttpRequestError(error: unknown): error is HttpRequestError {\n return error instanceof HttpRequestError;\n }\n}\n\nexport { HttpClientError, HttpRequestError };\n","import { Meter, metrics, trace, Tracer } from \"@opentelemetry/api\";\n\nclass TelemetryManager {\n static DEFAULT_TRACER_KEY = \"gateway\";\n static DEFAULT_METER_KEY = \"gateway\";\n\n private static tracer: Tracer | undefined = undefined;\n private static meter: Meter | undefined = undefined;\n\n static setTracer(tracer: Tracer | undefined): void {\n if (!this.tracer) {\n this.tracer = tracer || trace.getTracer(this.DEFAULT_TRACER_KEY);\n }\n }\n\n static getTracer(): Tracer {\n return this.tracer || trace.getTracer(this.DEFAULT_TRACER_KEY);\n }\n\n static setMeter(meter: Meter | undefined): void {\n if (!this.meter) {\n this.meter = meter || metrics.getMeter(this.DEFAULT_METER_KEY);\n }\n }\n\n static getMeter(): Meter {\n return this.meter || metrics.getMeter(this.DEFAULT_METER_KEY);\n }\n}\n\nexport { TelemetryManager };\n","import { Context, context, Span, SpanStatusCode, Tracer } from \"@opentelemetry/api\";\nimport { ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL } from \"@opentelemetry/semantic-conventions\";\nimport axios, { AxiosError, AxiosInstance, AxiosRequestConfig } from \"axios\";\nimport type { ProxyAgent } from \"proxy-agent\";\nimport { z } from \"zod\";\n\nimport { LoggerManager } from \"../../plugins\";\nimport { TelemetryManager } from \"../../plugins/telemetry\";\nimport { HttpClientError, HttpRequestError } from \"./http-client.error\";\nimport { HttpClient, HttpClientOptions, HttpClientResponse } from \"./http-client.interface\";\n\nconst convertHeadersToRecord = (headers: any): Record<string, string> => {\n const headerRecord: Record<string, string> = {};\n if (headers && (typeof headers === \"object\" || headers instanceof Headers)) {\n Object.entries(headers).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n headerRecord[key] = value.join(\", \");\n } else if (typeof value === \"string\") {\n headerRecord[key] = value;\n } else {\n headerRecord[key] = \"\";\n }\n });\n }\n\n return headerRecord;\n};\n\nconst axiosToHttpRequestError = (error: AxiosError): HttpRequestError => {\n const message = error?.message || \"An unexpected error occurred\";\n const status = error?.response?.status || 500;\n const headers = convertHeadersToRecord(error?.response?.headers) || {};\n const data = error?.response?.data || {};\n return new HttpRequestError(message, status, headers, data);\n};\n\ninterface IsomorphicHttpClientConfig {\n timeoutInMilliseconds?: number;\n axiosInstance?: AxiosInstance;\n telemetryTracer?: Tracer;\n enableProxyAgent?: boolean;\n}\n\nclass IsomorphicHttpClient implements HttpClient {\n private defaultTimeout?: number;\n private client: AxiosInstance;\n private httpProxyAgent?: ProxyAgent;\n private httpsProxyAgent?: ProxyAgent;\n private enableProxyAgent: boolean;\n\n constructor(config: IsomorphicHttpClientConfig) {\n const { axiosInstance, timeoutInMilliseconds, enableProxyAgent } = config;\n this.client = axiosInstance || axios.create();\n\n const Timeout = z.number().int().positive().optional();\n this.defaultTimeout = Timeout.parse(timeoutInMilliseconds);\n\n this.client.defaults.timeout = this.defaultTimeout;\n\n // Enable proxy agent by default unless explicitly disabled\n this.enableProxyAgent = enableProxyAgent ?? true;\n\n if (this.enableProxyAgent) {\n // Use require here to avoid importing in a browser build\n const ProxyAgent = require(\"proxy-agent\");\n this.httpProxyAgent = new ProxyAgent.ProxyAgent();\n this.httpsProxyAgent = new ProxyAgent.ProxyAgent({\n rejectUnauthorized: false, // Don't check SSL cert\n });\n }\n const logger = LoggerManager.getLogger();\n logger?.debug(`IsomorphicHttpClient initialized with defaultTimeout: ${this.defaultTimeout}`);\n }\n\n isNodeEnvironment = (): boolean => {\n return typeof process !== \"undefined\" && process.versions != null && process.versions.node != null;\n };\n\n private async makeRequest<T>(\n method: \"get\" | \"post\" | \"put\" | \"delete\" | \"patch\",\n url: string,\n dataOrParams: Record<string, unknown>,\n additionalConfig: AxiosRequestConfig = {},\n options?: HttpClientOptions,\n telemetryContext?: Context\n ): Promise<HttpClientResponse<T>> {\n const logger = LoggerManager.getLogger();\n\n const _makeRequest = async <T>(span?: Span): Promise<HttpClientResponse<T>> => {\n const executeRequest = async (): Promise<HttpClientResponse<T>> => {\n try {\n const config: AxiosRequestConfig = {\n ...(method === \"get\" || method === \"delete\" ? { params: dataOrParams } : { data: dataOrParams }),\n ...additionalConfig,\n timeout: this.defaultTimeout,\n ...(this.enableProxyAgent\n ? {\n httpAgent: this.httpProxyAgent,\n httpsAgent: this.httpsProxyAgent,\n }\n : {}),\n };\n\n if (method === \"get\" || method === \"delete\") {\n const resp = await this.client[method]<T>(url, config);\n const response = {\n data: resp.data,\n headers: convertHeadersToRecord(resp.headers),\n status: {\n code: resp.status,\n text: resp.statusText,\n },\n };\n logger?.debug(\"IsomorphicHttpClient.makeRequest response: \", response);\n return response;\n } else {\n const resp = await this.client[method]<T>(url, config.data, {\n ...config,\n params: config.params,\n });\n const response = {\n data: resp.data,\n headers: convertHeadersToRecord(resp.headers),\n status: {\n code: resp.status,\n text: resp.statusText,\n },\n };\n logger?.debug(\"IsomorphicHttpClient.makeRequest response: \", response);\n return response;\n }\n } catch (error) {\n logger?.warn(\"IsomorphicHttpClient.makeRequest error: \", error);\n if (axios.isAxiosError(error)) throw axiosToHttpRequestError(error);\n throw new HttpClientError({ info: \"An unexpected error occurred\", cause: error });\n }\n };\n\n try {\n // If no retry configuration, execute once\n if (!options?.retry) {\n const result = await executeRequest();\n span?.setStatus({ code: SpanStatusCode.OK, message: \"request successful\" });\n return result;\n }\n\n // Retry logic with exponential backoff\n const retryConfig = options.retry;\n let lastError: any;\n\n for (let attempt = 1; attempt <= retryConfig.maxAttempts; attempt++) {\n try {\n const result = await executeRequest();\n // If successful, return the result\n span?.setStatus({ code: SpanStatusCode.OK, message: \"request successful\" });\n return result;\n } catch (error) {\n lastError = error;\n logger?.warn(`IsomorphicHttpClient.makeRequest attempt ${attempt} failed: `, error);\n\n // If this is the last attempt, don't wait and throw the error\n if (attempt === retryConfig.maxAttempts) {\n break;\n }\n\n // Calculate delay with exponential backoff\n const delay = retryConfig.initialDelay * Math.pow(retryConfig.exponentialFactor, attempt - 1);\n logger?.debug(`IsomorphicHttpClient.makeRequest retrying after ${delay}ms (attempt ${attempt}/${retryConfig.maxAttempts})`);\n\n // Wait before retrying\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n }\n\n // If we get here, all attempts failed\n span?.setStatus({ code: SpanStatusCode.ERROR, message: \"request failed after all retry attempts\" });\n throw lastError;\n } catch (error) {\n span?.setStatus({ code: SpanStatusCode.ERROR, message: \"request failed\" });\n throw error;\n } finally {\n span?.end();\n }\n };\n\n if (!telemetryContext) {\n return _makeRequest<T>();\n }\n\n return await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"http.request\", async (span: Span) => {\n span.setAttribute(ATTR_HTTP_REQUEST_METHOD, method.toUpperCase());\n span.setAttribute(ATTR_URL_FULL, url);\n return await _makeRequest<T>(span);\n });\n });\n }\n\n async *stream<T>(\n url: string,\n method: \"get\" | \"post\",\n data?: Record<string, unknown>,\n headers?: Record<string, string>,\n options?: {\n abortSignal?: AbortSignal;\n },\n telemetryContext?: Context\n ): AsyncGenerator<T, void, unknown> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`IsomorphicHttpClient.STREAM request to ${url}`, { data, headers });\n const _stream = async function* (this: IsomorphicHttpClient, span?: Span): AsyncGenerator<T, void, unknown> {\n // Record the time we start the request for TTFT measurement\n const requestStart = Date.now();\n let timeToFirstTokenSet = false;\n\n try {\n if (this.isNodeEnvironment()) {\n logger?.debug(\"IsomorphicHttpClient.stream in node environment\");\n const response = await this.client.request({\n method,\n url,\n headers,\n data,\n responseType: \"stream\",\n signal: options?.abortSignal,\n });\n\n for await (const chunk of response.data) {\n // Set time-to-first-token if this is the first chunk\n if (!timeToFirstTokenSet) {\n const ttfb = Date.now() - requestStart;\n span?.setAttribute(\"time-to-first-token\", ttfb);\n timeToFirstTokenSet = true;\n }\n span?.addEvent(\"stream.chunk\", { message: \"stream chunk received\" });\n const decodedChunk = chunk.toString();\n logger?.debug(\"IsomorphicHttpClient.stream chunk: \", decodedChunk);\n yield decodedChunk as unknown as T;\n }\n span?.setStatus({ code: SpanStatusCode.OK, message: \"stream successful\" });\n } else {\n logger?.debug(\"IsomorphicHttpClient.stream in browser environment\");\n const fetchConfig: RequestInit = {\n method,\n headers: new Headers({\n ...headers,\n }),\n body: method !== \"get\" ? JSON.stringify(data) : undefined,\n signal: options?.abortSignal,\n };\n const response = await fetch(url, fetchConfig);\n\n if (!response.ok) {\n logger?.warn(\"IsomorphicHttpClient.stream response not ok: \", response);\n span?.setStatus({ code: SpanStatusCode.ERROR, message: \"stream failed\" });\n const text: any = await response.json();\n throw new HttpRequestError(\n `Request failed with status ${response.status}`,\n response.status,\n convertHeadersToRecord(response.headers),\n text\n );\n }\n\n if (response.body) {\n const reader = response.body.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n // Set time-to-first-token if we receive data on the last chunk\n if (!timeToFirstTokenSet && value) {\n const ttfb = Date.now() - requestStart;\n span?.setAttribute(\"time-to-first-token\", ttfb);\n timeToFirstTokenSet = true;\n }\n span?.addEvent(\"stream.chunk\", { message: \"stream chunk received\" });\n const decodedValue = new TextDecoder().decode(value, { stream: true });\n logger?.debug(\"IsomorphicHttpClient.stream chunk: \", decodedValue);\n yield decodedValue as unknown as T;\n break;\n }\n\n // Set time-to-first-token if this is the first chunk\n if (!timeToFirstTokenSet) {\n const ttfb = Date.now() - requestStart;\n span?.setAttribute(\"time-to-first-token\", ttfb);\n timeToFirstTokenSet = true;\n }\n span?.addEvent(\"stream.chunk\", { message: \"stream chunk received\" });\n const decodedValue = new TextDecoder().decode(value, { stream: true });\n logger?.debug(\"IsomorphicHttpClient.stream chunk: \", decodedValue);\n yield decodedValue as unknown as T;\n }\n span?.setStatus({ code: SpanStatusCode.OK, message: \"stream successful\" });\n } else {\n logger?.warn(\"IsomorphicHttpClient.stream response has no body\");\n span?.setStatus({ code: SpanStatusCode.ERROR, message: \"stream failed\" });\n throw new HttpRequestError(\"Cannot stream the body of the response.\", 500, {}, response);\n }\n }\n } catch (error: any) {\n logger?.warn(\"IsomorphicHttpClient.stream error: \", error);\n span?.setStatus({ code: SpanStatusCode.ERROR, message: \"stream failed\" });\n if (HttpRequestError.isHttpRequestError(error)) throw error;\n if (error?.name === \"AbortError\") throw new HttpRequestError(\"AbortError\", 408, {}, {});\n if (error?.name === \"CanceledError\") throw new HttpRequestError(\"AbortError\", 408, {}, {});\n // TODO: how to convert non-axios errors to HttpRequestError for fetch aka browser environment\n if (axios.isAxiosError(error)) throw axiosToHttpRequestError(error);\n throw new HttpClientError({ info: \"An unexpected error occurred\", cause: error });\n } finally {\n span?.end();\n }\n }.bind(this);\n\n if (!telemetryContext) {\n return yield* _stream();\n }\n\n return yield* await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"http.stream\", async (span: Span) => {\n span.setAttribute(ATTR_HTTP_REQUEST_METHOD, method.toUpperCase());\n span.setAttribute(ATTR_URL_FULL, url);\n return await _stream(span);\n });\n });\n }\n\n async get<T>(\n url: string,\n params?: Record<string, unknown>,\n headers?: Record<string, string | undefined>,\n options?: HttpClientOptions,\n telemetryContext?: Context\n ): Promise<HttpClientResponse<T>> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`IsomorphicHttpClient.GET request to ${url}`, { params, headers });\n return this.makeRequest<T>(\"get\", url, params || {}, { headers }, options, telemetryContext);\n }\n\n async post<T>(\n url: string,\n data?: Record<string, unknown>,\n headers?: Record<string, string | undefined>,\n options?: HttpClientOptions,\n telemetryContext?: Context\n ): Promise<HttpClientResponse<T>> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`IsomorphicHttpClient.POST request to ${url}`, { data, headers });\n return this.makeRequest<T>(\"post\", url, data || {}, { headers }, options, telemetryContext);\n }\n\n async put<T>(\n url: string,\n data?: Record<string, unknown>,\n headers?: Record<string, string | undefined>,\n options?: HttpClientOptions,\n telemetryContext?: Context\n ): Promise<HttpClientResponse<T>> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`IsomorphicHttpClient.PUT request to ${url}`, { data, headers });\n return this.makeRequest<T>(\"put\", url, data || {}, { headers }, options, telemetryContext);\n }\n\n async delete<T>(\n url: string,\n params?: Record<string, unknown>,\n headers?: Record<string, string | undefined>,\n options?: HttpClientOptions,\n telemetryContext?: Context\n ): Promise<HttpClientResponse<T>> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`IsomorphicHttpClient.DELETE request to ${url}`, { params, headers });\n return this.makeRequest<T>(\"delete\", url, params || {}, { headers }, options, telemetryContext);\n }\n\n async patch<T>(\n url: string,\n data?: Record<string, unknown>,\n headers?: Record<string, string | undefined>,\n options?: HttpClientOptions,\n telemetryContext?: Context\n ): Promise<HttpClientResponse<T>> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`IsomorphicHttpClient.PATCH request to ${url}`, { data, headers });\n return this.makeRequest<T>(\"patch\", url, data || {}, { headers }, options, telemetryContext);\n }\n}\n\nexport { IsomorphicHttpClient };\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst QueueTaskTimeoutErrorLiteral = \"QueueTaskTimeoutError\" as const;\nclass QueueTaskTimeoutError extends GatewayBaseError {\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, QueueTaskTimeoutErrorLiteral);\n this.info = info;\n this.cause = cause;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isQueueTaskTimeoutError(error: unknown): error is QueueTaskTimeoutError {\n return error instanceof QueueTaskTimeoutError;\n }\n}\n\nexport { QueueTaskTimeoutError };\n","import { Context } from \"@opentelemetry/api\";\nimport { z } from \"zod\";\n\nimport { type Cache } from \"../cache\";\n\ntype QueueTask<Request, Response> = {\n id: string;\n request: Request;\n cache?: Cache<Response>;\n resolve: (value: Response) => void;\n reject: (error: any) => void;\n execute: (request: Request, context: Context) => Promise<Response>;\n telemetryContext: Context;\n};\n\ninterface Queue<Request, Response> {\n enqueue(task: QueueTask<Request, Response>): void;\n}\n\nconst QueueOptions = z.object({\n maxConcurrentTasks: z.number().int().positive(),\n retryCount: z.number().int().positive(),\n timeout: z.number().int().positive(),\n retry: z.object({\n initialDelay: z.number().int().positive(),\n exponentialFactor: z.number().int().positive(),\n }),\n});\ntype QueueOptionsType = z.infer<typeof QueueOptions>;\n\nexport { QueueOptions, type Queue, type QueueOptionsType, type QueueTask };\n","import sha256 from \"crypto-js/sha256.js\";\n\nimport { GatewayError } from \"../errors/errors\";\nimport { HttpClientError, HttpRequestError } from \"../plugins/http-client/http-client.error\";\n\nconst getCacheKeyHash = (prefix: string, object: object): string => {\n return sha256(prefix + JSON.stringify(object)).toString();\n};\n\nconst castToError = (err: any): GatewayError => {\n if (err instanceof GatewayError) return err;\n if (HttpClientError.isHttpClientError(err)) return new GatewayError(err.message);\n if (HttpRequestError.isHttpRequestError(err)) return new GatewayError(err.message, err.cause.status, err.cause.data);\n if (err instanceof Error) return new GatewayError(err.message);\n return new GatewayError(err);\n};\n\nconst isRunningInBrowser = () => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof navigator !== \"undefined\";\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst logLevels = {\n error: 0,\n warn: 1,\n info: 2,\n};\n\nconst logColors = {\n error: \"color: red\",\n warn: \"color: yellow\",\n info: \"color: green\",\n};\n\nconst verbose = (level: keyof typeof logLevels, action: string, ...args: any[]) => {\n if (!isRunningInBrowser()) {\n // Node.js environment\n switch (level) {\n case \"error\":\n console.error(...args);\n break;\n case \"warn\":\n console.warn(...args);\n break;\n default:\n console.log(...args);\n }\n } else if (isRunningInBrowser()) {\n // Browser environment\n console.log(`%c[${level.toUpperCase()}] [${action}]`, logColors[level], ...args);\n }\n};\n\nconst debug = (level: keyof typeof logLevels, action: string, ...args: any[]) => {\n if (isRunningInBrowser()) return;\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n if (process?.env?.DEBUG !== \"true\") return;\n verbose(level, action, ...args);\n};\n\ntype Prettify<T> = {\n [K in keyof T]: T[K];\n} & unknown;\n\ninterface BaseCallback {\n [key: string]: (...args: any[]) => void | Promise<void>;\n}\n\ntype ArgumentsType<T> = T extends (...args: infer A) => any ? A : never;\n\nconst safelyInvokeCallbacks = async <T extends BaseCallback, K extends keyof T>(\n callbacks: T[],\n name: keyof T,\n ...args: ArgumentsType<T[K]>\n): Promise<void> => {\n const promises: Promise<void>[] = [];\n\n callbacks.forEach((callback) => {\n const func = callback[name];\n if (typeof func === \"function\") {\n try {\n const result = func(...args);\n if (result instanceof Promise) {\n promises.push(result);\n }\n } catch (error) {\n debug(\"error\", `SAFELY_INVOKE_CALLBACKS:${String(name)}:`, error);\n }\n }\n });\n\n await Promise.allSettled(promises);\n};\n\nconst delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst calcRateLimitRetryTimeout = (\n maxRetries: number,\n backOffInitialDelay: number,\n backOffMultiplier: number,\n executionTimePerAttempt: number\n): number => {\n let totalDelayTime = 0;\n const totalExecutionTime = maxRetries * executionTimePerAttempt;\n\n for (let i = 0; i < maxRetries; i++) {\n totalDelayTime += backOffInitialDelay * Math.pow(backOffMultiplier, i);\n }\n\n return totalDelayTime + totalExecutionTime;\n};\n\nconst defaultShouldRetry = (status: number) => {\n // Rate limit errors are handled separately.\n\n // Retry on request timeouts.\n if (status === 408) return true;\n // Retry on lock timeouts.\n if (status === 409) return true;\n // Retry internal errors.\n if (status >= 500) return true;\n\n return false;\n};\n\nexport {\n calcRateLimitRetryTimeout,\n castToError,\n debug,\n defaultShouldRetry,\n delay,\n getCacheKeyHash,\n isRunningInBrowser,\n safelyInvokeCallbacks,\n type Prettify,\n};\n","import { Logger } from \"./logger.interface\";\n\nclass LoggerManager {\n private static logger: Logger | undefined;\n\n static setLogger(logger: Logger | undefined): void {\n this.logger = logger;\n }\n\n static getLogger(): Logger | undefined {\n return this.logger;\n }\n}\n\nexport { LoggerManager };\n","import { isRunningInBrowser } from \"../../utils/utils\";\nimport { Logger } from \"./logger.interface\";\n\nexport class ConsoleLogger implements Logger {\n debug(message: string, ...params: any[]): void {\n console.debug(message, ...params);\n }\n\n info(message: string, ...params: any[]): void {\n console.info(message, ...params);\n }\n\n warn(message: string, ...params: any[]): void {\n if (isRunningInBrowser()) {\n console.warn(`%WARN: %c${message}`, \"color: yellow; font-weight: bold;\", \"\", ...params);\n } else {\n const yellow = \"\\x1b[33m\";\n const reset = \"\\x1b[0m\";\n console.warn(`${yellow}WARN:${reset} ${message}`, ...params);\n }\n }\n\n error(message: string, ...params: any[]): void {\n if (isRunningInBrowser()) {\n console.error(`%ERROR: %c${message}`, \"color: lightcoral; font-weight: bold;\", \"\", ...params);\n } else {\n const red = \"\\x1b[91m\";\n const reset = \"\\x1b[0m\";\n console.error(`${red}ERROR:${reset} ${message}`, ...params);\n }\n }\n\n critical(message: string, ...params: any[]): void {\n if (isRunningInBrowser()) {\n console.error(`%cCRITICAL: %c${message}`, \"color: red; font-weight: bold;\", \"\", ...params);\n } else {\n const redBold = \"\\x1b[31;1m\";\n const reset = \"\\x1b[0m\";\n console.error(`${redBold}CRITICAL:${reset} ${message}`, ...params);\n }\n }\n}\n","import { Context, context, Span, SpanStatusCode, trace } from \"@opentelemetry/api\";\n\nimport { GatewayCompleteChatRequest } from \"../../gateway.types\";\nimport { delay } from \"../../utils\";\nimport { HttpRequestError } from \"./../http-client\";\nimport { LoggerManager } from \"./../logger\";\nimport { TelemetryManager } from \"./../telemetry\";\nimport { QueueTaskTimeoutError } from \"./queue.error\";\nimport { Queue, QueueOptionsType, QueueTask } from \"./queue.interface\";\n\nclass SimpleQueue<Request, Response> implements Queue<Request, Response> {\n private options: QueueOptionsType;\n private activeTasks = 0;\n private queue: { task: QueueTask<Request, Response>; taskSpan: Span }[] = [];\n\n constructor(options: QueueOptionsType) {\n this.options = options;\n }\n\n public enqueue(task: QueueTask<Request, Response>): void {\n const logger = LoggerManager.getLogger();\n logger?.debug(`SimpleQueue.enqueue invoked, id: ${task.id}`);\n context.with(task.telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return tracer.startActiveSpan(\"queue.task.pickup-wait\", async (taskSpan: Span) => {\n taskSpan.setAttribute(\"id\", task.id);\n this.queue.push({ task, taskSpan });\n logger?.debug(`SimpleQueue.enqueue task enqueued, id: ${task.id}`);\n });\n });\n this.processQueue();\n }\n\n private executeWithTimeout(task: QueueTask<Request, Response>, taskTelemetryContext: Context): Promise<Response> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`SimpleQueue.executeWithTimeout invoked with timeout: ${this.options.timeout}, id: ${task.id}`);\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n logger?.warn(`SimpleQueue.executeWithTimeout timed out, id: ${task.id}`);\n reject(\n new QueueTaskTimeoutError({\n info: \"Queue task timeout\",\n cause: new Error(\"Queue task timeout\"),\n })\n );\n }, this.options.timeout);\n\n logger?.debug(`SimpleQueue.executeWithTimeout task executing, id: ${task.id}`);\n task\n .execute(task.request, taskTelemetryContext)\n .then((result) => {\n logger?.debug(`SimpleQueue.executeWithTimeout task completed, id: ${task.id}`);\n clearTimeout(timeout);\n resolve(result);\n })\n .catch((error) => {\n logger?.warn(`SimpleQueue.executeWithTimeout task errored, id: ${task.id}`);\n clearTimeout(timeout);\n reject(error);\n });\n });\n }\n\n private async executeWithRetry(task: QueueTask<Request, Response>, retryRemaining: number): Promise<Response> {\n const logger = LoggerManager.getLogger();\n return await context.with(task.telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"queue.task.execute\", async (span: Span) => {\n logger?.debug(`SimpleQueue.executeWithRetry invoked, attempt: ${this.options.retryCount - retryRemaining}, id: ${task.id}`);\n span.setAttribute(\"attempt\", this.options.retryCount - retryRemaining);\n try {\n const taskTelemetryContext = context.active();\n const response = await this.executeWithTimeout(task, taskTelemetryContext);\n span.setStatus({ code: SpanStatusCode.OK });\n span.end();\n return response;\n } catch (error) {\n if (retryRemaining === 0) {\n logger?.warn(`SimpleQueue.executeWithRetry retry count reached, id: ${task.id}`);\n // span.setStatus({ code: SpanStatusCode.ERROR });\n span.end();\n throw error;\n }\n\n let shouldRetry = true;\n let delayMs =\n this.options.retry.initialDelay * Math.pow(this.options.retry.exponentialFactor, this.options.retryCount - retryRemaining);\n if (HttpRequestError.isHttpRequestError(error)) {\n // rate limiting error\n if (error.cause.status === 429) {\n logger?.warn(`SimpleQueue.executeWithRetry rate limiting error, id: ${task.id}`);\n const taskRequest = GatewayCompleteChatRequest.safeParse(task.request);\n if (taskRequest.success) {\n const retryDelay = taskRequest.data.model.getRetryDelay(error.cause.headers);\n shouldRetry = retryDelay.shouldRetry;\n // valid delayMs is returned from model\n if (retryDelay.delayMs > 0) {\n delayMs = retryDelay.delayMs;\n }\n }\n const randomDelayMs = (60 + Math.random() * 70) * 1000;\n delayMs += randomDelayMs;\n }\n\n if (error.cause.status >= 500 && error.cause.status < 600) {\n logger?.warn(`SimpleQueue.executeWithRetry ${error.cause.status} error, id: ${task.id}`);\n // implement retry logic for 500 errors\n // else defaults to exponential backoff\n }\n } else {\n logger?.warn(`SimpleQueue.executeWithRetry non http-request error, id: ${task.id}`, { error });\n // implement retry logic for non http-request errors\n // else defaults to exponential backoff\n }\n\n if (!shouldRetry) {\n // span.setStatus({ code: SpanStatusCode.ERROR });\n logger?.warn(`SimpleQueue.executeWithRetry model returned should not retry, id: ${task.id}`);\n span.end();\n throw error;\n } else {\n // span.setStatus({ code: SpanStatusCode.ERROR });\n return await tracer.startActiveSpan(\"queue.task.retry-wait\", async (retrySpan: Span) => {\n logger?.debug(`SimpleQueue.executeWithRetry retry wait: ${delayMs}ms, id: ${task.id}`);\n await delay(delayMs);\n retrySpan.end();\n span.end();\n return this.executeWithRetry(task, retryRemaining - 1);\n });\n }\n } finally {\n // span.end();\n }\n });\n });\n }\n\n private async processQueue() {\n const logger = LoggerManager.getLogger();\n if (this.activeTasks >= this.options.maxConcurrentTasks) {\n logger?.debug(\"SimpleQueue.processQueue max concurrent tasks reached\");\n return;\n }\n\n const item = this.queue.shift();\n if (!item) {\n logger?.debug(\"SimpleQueue.processQueue no item to process\");\n return;\n }\n\n const { task, taskSpan } = item;\n if (taskSpan) {\n taskSpan.end();\n }\n\n this.activeTasks += 1;\n logger?.debug(`SimpleQueue.processQueue active tasks: ${this.activeTasks}`);\n logger?.debug(`SimpleQueue.processQueue processing task, id: ${task.id}`);\n\n try {\n const response: Response = await this.executeWithRetry(task, this.options.retryCount);\n logger?.debug(`SimpleQueue.processQueue task completed, id: ${task.id}`);\n task.resolve(response);\n } catch (error) {\n logger?.warn(`SimpleQueue.processQueue task errored, id: ${task.id}`);\n task.reject(error);\n } finally {\n this.activeTasks -= 1;\n logger?.debug(`SimpleQueue.processQueue active tasks: ${this.activeTasks}`);\n trace.getSpan(task.telemetryContext)?.end();\n this.processQueue();\n }\n }\n}\n\nexport { SimpleQueue };\n","import { LRUCache as LRU } from \"lru-cache\";\n\nimport { LoggerManager } from \"./../logger\";\nimport { type Cache } from \"./cache.interface\";\n\nclass LRUCache<T extends object> implements Cache<T> {\n private cache: LRU<string, T>;\n\n constructor(maxEntries: number = 1000) {\n this.cache = new LRU<string, T>({\n max: maxEntries,\n allowStale: false,\n updateAgeOnGet: false,\n });\n const logger = LoggerManager.getLogger();\n logger?.debug(`LRUCache initialized with maxEntries: ${maxEntries}`);\n }\n\n async get(key: string): Promise<T | undefined> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`LRUCache.get invoked, key: ${key}`);\n return new Promise((resolve) => {\n const value = this.cache.get(key);\n logger?.debug(\"LRUCache.get completed, value: \", value);\n resolve(value);\n });\n }\n\n async set(key: string, value: T): Promise<void> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`LRUCache.set invoked, key: ${key}, value: `, value);\n return new Promise((resolve) => {\n this.cache.set(key, value);\n logger?.debug(\"LRUCache.set completed\");\n resolve();\n });\n }\n\n async delete(key: string): Promise<void> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`LRUCache.delete invoked, key: ${key}`);\n return new Promise((resolve) => {\n this.cache.delete(key);\n logger?.debug(\"LRUCache.delete completed\");\n resolve();\n });\n }\n\n async clear(): Promise<void> {\n const logger = LoggerManager.getLogger();\n logger?.debug(\"LRUCache.clear invoked\");\n return new Promise((resolve) => {\n this.cache.clear();\n logger?.debug(\"LRUCache.clear completed\");\n resolve();\n });\n }\n}\n\nexport { LRUCache, type Cache };\n","import { AnalyticsEvent, AnalyticsRecorder } from \"./analytics.interface\";\n\nclass NoOpAnalytics implements AnalyticsRecorder {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n record(event: AnalyticsEvent[\"event\"], status: AnalyticsEvent[\"status\"], dimensions: AnalyticsEvent[\"dimensions\"]): void {\n // Do nothing\n }\n\n stopRecorder(): void {\n // Do nothing\n }\n}\n\nexport { NoOpAnalytics };\n","import os from \"os\";\n\nimport { AnalyticsBrowserEnvironment, AnalyticsNodeEnvironment } from \"./analytics.interface\";\n\nconst getGatewayEnvironment = (): string => {\n return process.env.ADX_NODE_ENV || \"unknown\";\n};\n\nconst getNodeDetails = (): AnalyticsNodeEnvironment => {\n return {\n node: {\n version: process.version,\n platform: os.platform(),\n architecture: os.arch(),\n },\n };\n};\n\nconst getBrowserDetails = (): AnalyticsBrowserEnvironment => {\n return {\n browser: {\n version: navigator.userAgent,\n userAgent: navigator.userAgent,\n },\n };\n};\n\nexport { getBrowserDetails, getGatewayEnvironment, getNodeDetails };\n","import axios from \"axios\";\n\nimport { isRunningInBrowser } from \"./../../utils\";\nimport { AnalyticsBrowserEnvironment, AnalyticsEvent, AnalyticsNodeEnvironment, AnalyticsRecorder } from \"./analytics.interface\";\nimport { getBrowserDetails, getNodeDetails } from \"./analytics.utils\";\n\nclass PostAnalytics implements AnalyticsRecorder {\n private readonly eventVersion = \"0.1\";\n private readonly gatewayVersion = __LIBRARY_VERSION__;\n\n private flushTimer: any;\n private flushInterval: number = 10000;\n private batchSize: number = 1;\n private maxAttempts: number = 3;\n private environment: AnalyticsNodeEnvironment | AnalyticsBrowserEnvironment = isRunningInBrowser()\n ? getBrowserDetails()\n : getNodeDetails();\n private analyticsEndpointUrl: string = \"https://j954t34pkh.execute-api.us-east-1.amazonaws.com/v0/analytics\";\n\n private events: { event: AnalyticsEvent; attempt: number }[] = [];\n\n constructor() {\n // this.startFlushTimer();\n }\n\n private startFlushTimer() {\n if (isRunningInBrowser()) {\n this.flushTimer = window.setInterval(() => this.flushEvents(), this.flushInterval);\n } else {\n this.flushTimer = setInterval(() => this.flushEvents(), this.flushInterval);\n }\n }\n\n private stopFlushTimer() {\n if (isRunningInBrowser()) {\n window.clearInterval(this.flushTimer);\n } else {\n clearInterval(this.flushTimer);\n }\n }\n\n record(event: AnalyticsEvent[\"event\"], status: AnalyticsEvent[\"status\"], dimensions: AnalyticsEvent[\"dimensions\"]): void {\n const analyticsEvent: AnalyticsEvent = {\n event,\n status,\n dimensions,\n timestamp: new Date().toISOString(),\n eventVersion: this.eventVersion,\n gatewayVersion: this.gatewayVersion,\n environment: this.environment,\n };\n this.events.push({ event: analyticsEvent, attempt: 0 });\n\n if (this.events.length >= this.batchSize) {\n this.flushEvents();\n }\n }\n\n private async flushEvents(): Promise<void> {\n if (this.events.length === 0) return;\n\n const eventsToSend = [...this.events];\n this.events = [];\n\n const success = await this.sendEvents(eventsToSend.map((e) => e.event));\n if (!success) {\n this.events.push(\n ...eventsToSend.filter((e) => e.attempt < this.maxAttempts).map((e) => ({ event: e.event, attempt: e.attempt + 1 }))\n );\n }\n }\n\n private async sendEvents(events: AnalyticsEvent[]): Promise<boolean> {\n try {\n const response = await axios.post(\n this.analyticsEndpointUrl,\n { events },\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n return response.status === 200;\n } catch {\n return false;\n }\n }\n\n public stopRecorder() {\n this.stopFlushTimer();\n this.flushEvents();\n }\n}\n\nexport { PostAnalytics };\n","import { AnalyticsRecorder } from \"./analytics.interface\";\nimport { NoOpAnalytics } from \"./no-op.analytics\";\nimport { PostAnalytics } from \"./post.analytics\";\n\nclass AnalyticsManager {\n private static analytics: AnalyticsRecorder | undefined;\n\n static getAnalyticsRecorder(enableAnalytics: boolean): AnalyticsRecorder {\n if (this.analytics !== undefined) {\n return this.analytics;\n } else {\n this.analytics = enableAnalytics ? new PostAnalytics() : new NoOpAnalytics();\n return this.analytics;\n }\n }\n}\n\nexport { AnalyticsManager };\n","import { Meter, Tracer } from \"@opentelemetry/api\";\nimport { z } from \"zod\";\n\nimport { ChatModelV1, EmbeddingModelV1 } from \"@adaline/provider\";\nimport { ChatModelPriceType, ChatUsageType, Config, EmbeddingRequests, Message, Tool } from \"@adaline/types\";\n\nimport {\n CompleteChatCallbackType,\n CompleteChatHandlerResponseType,\n GetEmbeddingsCallbackType,\n GetEmbeddingsHandlerResponseType,\n GetToolResponsesCallbackType,\n GetToolResponsesHandlerResponseType,\n StreamChatCallbackType,\n} from \"./handlers\";\nimport { Cache, HttpClient, Logger, QueueOptions } from \"./plugins\";\n\nconst GatewayOptions = z.object({\n queueOptions: z.lazy(() => QueueOptions.partial()).optional(),\n dangerouslyAllowBrowser: z.boolean().optional(),\n httpClient: z.custom<HttpClient>().optional(),\n completeChatCache: z.custom<Cache<CompleteChatHandlerResponseType>>().optional(),\n completeChatCallbacks: z.array(z.custom<CompleteChatCallbackType>()).nonempty().optional(),\n getEmbeddingsCache: z.custom<Cache<GetEmbeddingsHandlerResponseType>>().optional(),\n getEmbeddingsCallbacks: z.array(z.custom<GetEmbeddingsCallbackType>()).nonempty().optional(),\n getToolResponsesCache: z.custom<Cache<GetToolResponsesHandlerResponseType>>().optional(),\n getToolResponsesCallbacks: z.array(z.custom<GetToolResponsesCallbackType>()).nonempty().optional(),\n streamChatCallbacks: z.array(z.custom<StreamChatCallbackType>()).nonempty().optional(),\n logger: z.custom<Logger>().optional(),\n telemetry: z\n .object({\n tracer: z.custom<Tracer>().optional(),\n meter: z.custom<Meter>().optional(),\n })\n .optional(),\n enableAnalytics: z.boolean().optional(),\n enableProxyAgent: z.boolean().optional(),\n});\ntype GatewayOptionsType = z.infer<typeof GatewayOptions>;\n\nconst GatewayCompleteChatRequestOptions = z.object({\n enableCache: z.boolean().optional().default(true),\n customHeaders: z.record(z.string()).optional(),\n metadataForCallbacks: z.any().optional(),\n});\ntype GatewayCompleteChatRequestOptionsType = z.infer<typeof GatewayCompleteChatRequestOptions>;\n\nconst GatewayCompleteChatRequest = z.object({\n model: z.custom<ChatModelV1>(),\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n options: GatewayCompleteChatRequestOptions.optional(),\n});\ntype GatewayCompleteChatRequestType = z.infer<typeof GatewayCompleteChatRequest>;\n\nconst GatewayStreamChatRequestOptions = z.object({\n customHeaders: z.record(z.string()).optional(),\n metadataForCallbacks: z.any().optional(),\n});\ntype GatewayStreamChatRequestOptionsType = z.infer<typeof GatewayStreamChatRequestOptions>;\n\nconst GatewayStreamChatRequest = z.object({\n model: z.custom<ChatModelV1>(),\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n options: GatewayStreamChatRequestOptions.optional(),\n abortSignal: z.instanceof(AbortSignal).optional(),\n});\n\ntype GatewayStreamChatRequestType = z.infer<typeof GatewayStreamChatRequest>;\n\nconst GatewayGetEmbeddingsRequestOptions = z.object({\n enableCache: z.boolean().optional().default(true),\n customHeaders: z.record(z.string()).optional(),\n metadataForCallbacks: z.any().optional(),\n});\ntype GatewayGetEmbeddingsRequestOptionsType = z.infer<typeof GatewayGetEmbeddingsRequestOptions>;\n\nconst GatewayGetEmbeddingsRequest = z.object({\n model: z.custom<EmbeddingModelV1>(),\n config: Config(),\n embeddingRequests: EmbeddingRequests(),\n options: GatewayGetEmbeddingsRequestOptions.optional(),\n});\ntype GatewayGetEmbeddingsRequestType = z.infer<typeof GatewayGetEmbeddingsRequest>;\n\nconst GatewayProxyCompleteChatRequest = z.object({\n model: z.custom<ChatModelV1>(),\n data: z.any(),\n headers: z.record(z.string()),\n query: z.record(z.string()).optional(),\n});\ntype GatewayProxyCompleteChatRequestType = z.infer<typeof GatewayProxyCompleteChatRequest>;\n\nconst GatewayProxyStreamChatRequest = z.object({\n model: z.custom<ChatModelV1>(),\n data: z.any(),\n headers: z.record(z.string()),\n query: z.record(z.string()).optional(),\n});\ntype GatewayProxyStreamChatRequestType = z.infer<typeof GatewayProxyStreamChatRequest>;\n\nconst GatewayProxyGetEmbeddingsRequest = z.object({\n model: z.custom<EmbeddingModelV1>(),\n data: z.any(),\n headers: z.record(z.string()),\n query: z.record(z.string()).optional(),\n});\ntype GatewayProxyGetEmbeddingsRequestType = z.infer<typeof GatewayProxyGetEmbeddingsRequest>;\n\nconst GatewayGetChatUsageCostRequest = z\n .object({\n chatUsage: z.custom<ChatUsageType>(),\n chatModelPrice: z.custom<ChatModelPriceType>().optional(),\n model: z.custom<ChatModelV1>().optional(),\n })\n .refine(\n (data) => {\n // Ensure exactly one of chatModelPrice or model is provided\n return (data.chatModelPrice !== undefined) !== (data.model !== undefined);\n },\n {\n message: \"Exactly one of chatModelPrice or model must be provided, not both.\",\n path: [\"chatModelPrice\", \"model\"],\n }\n );\ntype GatewayGetChatUsageCostRequestType = z.infer<typeof GatewayGetChatUsageCostRequest>;\n\nconst GatewayGetToolResponsesRequestOptions = z.object({\n customHeaders: z.record(z.string()).optional(),\n metadataForCallbacks: z.any().optional(),\n});\ntype GatewayGetToolResponsesRequestOptionsType = z.infer<typeof GatewayGetToolResponsesRequestOptions>;\n\nconst GatewayGetToolResponsesRequest = z.object({\n tools: z.array(Tool()),\n messages: z.array(Message()),\n options: GatewayGetToolResponsesRequestOptions.optional(),\n abortSignal: z.instanceof(AbortSignal).optional(),\n});\ntype GatewayGetToolResponsesRequestType = z.infer<typeof GatewayGetToolResponsesRequest>;\n\nexport {\n GatewayCompleteChatRequest,\n GatewayCompleteChatRequestOptions,\n GatewayGetChatUsageCostRequest,\n GatewayGetEmbeddingsRequest,\n GatewayGetEmbeddingsRequestOptions,\n GatewayGetToolResponsesRequest,\n GatewayOptions,\n GatewayProxyCompleteChatRequest,\n GatewayProxyGetEmbeddingsRequest,\n GatewayProxyStreamChatRequest,\n GatewayStreamChatRequest,\n GatewayStreamChatRequestOptions,\n type GatewayCompleteChatRequestOptionsType,\n type GatewayCompleteChatRequestType,\n type GatewayGetChatUsageCostRequestType,\n type GatewayGetEmbeddingsRequestOptionsType,\n type GatewayGetEmbeddingsRequestType,\n type GatewayGetToolResponsesRequestOptionsType,\n type GatewayGetToolResponsesRequestType,\n type GatewayOptionsType,\n type GatewayProxyCompleteChatRequestType,\n type GatewayProxyGetEmbeddingsRequestType,\n type GatewayProxyStreamChatRequestType,\n type GatewayStreamChatRequestOptionsType,\n type GatewayStreamChatRequestType,\n};\n","import { Context, context, Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nimport { GatewayError } from \"../../errors/errors\";\nimport { HttpClient, HttpRequestError, LoggerManager, TelemetryManager } from \"../../plugins\";\nimport { castToError, getCacheKeyHash, isRunningInBrowser, safelyInvokeCallbacks } from \"../../utils\";\nimport {\n CompleteChatCallbackType,\n CompleteChatHandlerRequest,\n CompleteChatHandlerRequestType,\n CompleteChatHandlerResponseType,\n} from \"./complete-chat.types\";\n\nasync function handleCompleteChat(\n request: CompleteChatHandlerRequestType,\n client: HttpClient,\n telemetryContext?: Context\n): Promise<CompleteChatHandlerResponseType> {\n const logger = LoggerManager.getLogger();\n const _handleCompleteChat = async (span?: Span) => {\n logger?.debug(\"handleCompleteChat invoked\");\n logger?.debug(\"handleCompleteChat request: \", { request });\n const data = CompleteChatHandlerRequest.parse(request);\n const callbacks = request.callbacks || [];\n const handlerTelemetryContext = context.active();\n\n try {\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatStart\",\n request.metadataForCallbacks\n );\n\n const providerData = {\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n };\n\n const providerRequest = {\n url: await data.model.getCompleteChatUrl(data.config, data.messages, data.tools),\n headers: await data.model.getCompleteChatHeaders(data.config, data.messages, data.tools),\n data: await data.model.getCompleteChatData(data.config, data.messages, data.tools),\n };\n\n if (!isRunningInBrowser()) {\n providerRequest.headers = {\n ...providerRequest.headers,\n source: \"adaline.ai\",\n };\n }\n if (data.customHeaders) {\n providerRequest.headers = {\n ...providerRequest.headers,\n ...data.customHeaders,\n };\n }\n\n logger?.debug(\"handleCompleteChat providerRequest: \", { providerRequest });\n const cacheKey = getCacheKeyHash(`complete-chat:${providerRequest.url}:${data.model.modelSchema.name}`, providerData);\n if (data.enableCache) {\n logger?.debug(\"handleCompleteChat checking cache\");\n const cachedResponse = await request.cache.get(cacheKey);\n if (cachedResponse) {\n cachedResponse.cached = true;\n logger?.debug(\"handleCompleteChat cached hit\");\n span?.setAttribute(\"cached\", true);\n span?.setStatus({ code: SpanStatusCode.OK });\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatCached\",\n request.metadataForCallbacks,\n cachedResponse\n );\n logger?.debug(\"handleCompleteChat cached response: \", { cachedResponse });\n return cachedResponse;\n }\n }\n\n logger?.debug(\"handleCompleteChat cache miss\");\n const now = Date.now();\n const providerResponse = await client.post(\n providerRequest.url,\n providerRequest.data,\n providerRequest.headers,\n undefined,\n handlerTelemetryContext\n );\n const latencyInMs = Date.now() - now;\n logger?.debug(\"handleCompleteChat providerResponse: \", { providerResponse });\n\n const response: CompleteChatHandlerResponseType = {\n request: providerData,\n response: data.model.transformCompleteChatResponse(providerResponse.data),\n cached: false,\n latencyInMs,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: providerResponse,\n },\n };\n\n logger?.debug(\"handleCompleteChat response: \", { response });\n if (data.enableCache) {\n await request.cache.set(cacheKey, response);\n logger?.debug(\"handleCompleteChat response cached\");\n }\n\n span?.setAttribute(\"cached\", false);\n span?.setStatus({ code: SpanStatusCode.OK });\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatComplete\",\n request.metadataForCallbacks,\n response\n );\n\n return response;\n } catch (error) {\n logger?.warn(\"handleCompleteChat error: \", { error });\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n // TODO: maybe only set if it's non HTTP Error ?\n // span?.setStatus({ code: SpanStatusCode.ERROR, message: safeError.message });\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatError\",\n request.metadataForCallbacks,\n safeError\n );\n\n throw safeError;\n } finally {\n span?.end();\n }\n };\n\n if (!telemetryContext) {\n return await _handleCompleteChat();\n }\n\n return await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"complete-chat.handler\", async (span: Span) => {\n return await _handleCompleteChat(span);\n });\n });\n}\n\nexport { handleCompleteChat };\n","import { z } from \"zod\";\n\nimport { ChatModelV1 } from \"@adaline/provider\";\nimport { ChatResponse, Config, Message, Tool } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\nimport { Cache, HttpRequestError } from \"../../plugins\";\n\nconst CompleteChatHandlerRequest = z.object({\n cache: z.custom<Cache<CompleteChatHandlerResponseType>>(),\n model: z.custom<ChatModelV1>(),\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n enableCache: z.boolean(),\n customHeaders: z.record(z.string()).optional(),\n callbacks: z.array(z.custom<CompleteChatCallbackType>()).nonempty().optional(),\n metadataForCallbacks: z.any().optional(),\n});\ntype CompleteChatHandlerRequestType = z.infer<typeof CompleteChatHandlerRequest>;\n\nconst CompleteChatHandlerResponse = z.object({\n request: z.object({\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n }),\n response: ChatResponse,\n cached: z.boolean(),\n latencyInMs: z.number().int().positive(),\n metadataForCallbacks: z.any().optional(),\n provider: z.object({\n request: z.any(),\n response: z.any(),\n }),\n});\ntype CompleteChatHandlerResponseType = z.infer<typeof CompleteChatHandlerResponse>;\n\ntype CompleteChatCallbackType<M = any> = {\n onChatStart?: (metadata?: M) => Promise<void> | void;\n onChatCached?: (metadata?: M, response?: CompleteChatHandlerResponseType) => Promise<void> | void;\n onChatComplete?: (metadata?: M, response?: CompleteChatHandlerResponseType) => Promise<void> | void;\n onChatError?: (metadata?: M, error?: GatewayError | HttpRequestError) => Promise<void> | void;\n};\n\nexport {\n CompleteChatHandlerRequest,\n CompleteChatHandlerResponse,\n type CompleteChatCallbackType,\n type CompleteChatHandlerRequestType,\n type CompleteChatHandlerResponseType,\n};\n","import { ChatModelPriceType } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\nimport { GetChatUsageCostHandlerRequestType, GetChatUsageCostHandlerResponseType } from \"./get-chat-usage-cost.types\";\n\nfunction handleGetChatUsageCost(request: GetChatUsageCostHandlerRequestType): GetChatUsageCostHandlerResponseType {\n const { promptTokens, completionTokens } = request.chatUsage;\n let tokenRanges: ChatModelPriceType;\n if (request.chatModelPrice) {\n tokenRanges = request.chatModelPrice;\n } else if (request.model) {\n tokenRanges = request.model.getModelPricing();\n } else {\n throw new GatewayError(\"No chatModelPrice or model provided\");\n }\n\n // Helper: pick the per‑million rate for either input or output\n function getRate(tokens: number, kind: \"inputPricePerMillion\" | \"outputPricePerMillion\"): number {\n const tokenRange = tokenRanges.tokenRanges.find(\n (t) => tokens >= t.minTokens && (t.maxTokens === null || t.maxTokens === undefined || tokens < t.maxTokens)\n );\n if (!tokenRange) {\n throw new GatewayError(\"Unable to find a pricing tier for the given token count. Please check your model pricing configuration.\");\n }\n const rate = tokenRange.prices?.base?.[kind];\n if (rate === undefined) {\n throw new GatewayError(`Unable to find a pricing rate for the given token count. Please check your model pricing configuration.`);\n }\n return rate;\n }\n\n const inputRatePerMillion = getRate(promptTokens, \"inputPricePerMillion\");\n const outputRatePerMillion = getRate(promptTokens, \"outputPricePerMillion\");\n\n // rates are per‑1,000,000 tokens\n const inputCost = Number(((promptTokens / 1_000_000) * inputRatePerMillion).toFixed(6));\n const outputCost = Number(((completionTokens / 1_000_000) * outputRatePerMillion).toFixed(6));\n const totalCost = inputCost + outputCost;\n return {\n cost: totalCost,\n currency: tokenRanges.currency || \"USD\", // Default to USD if currency is not provided\n pricingModel: tokenRanges,\n usageTokens: request.chatUsage,\n };\n}\n\nexport { handleGetChatUsageCost };\n","import { z } from \"zod\";\n\nimport { EmbeddingModelV1 } from \"@adaline/provider\";\nimport { Config, EmbeddingRequests, EmbeddingResponse } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\nimport { Cache, HttpRequestError } from \"../../plugins\";\n\nconst GetEmbeddingsHandlerRequest = z.object({\n cache: z.custom<Cache<GetEmbeddingsHandlerResponseType>>(),\n model: z.custom<EmbeddingModelV1>(),\n config: Config(),\n embeddingRequests: EmbeddingRequests(),\n enableCache: z.boolean(),\n customHeaders: z.record(z.string()).optional(),\n callbacks: z.array(z.custom<GetEmbeddingsCallbackType>()).nonempty().optional(),\n metadataForCallbacks: z.any().optional(),\n});\ntype GetEmbeddingsHandlerRequestType = z.infer<typeof GetEmbeddingsHandlerRequest>;\n\nconst GetEmbeddingsHandlerResponse = z.object({\n request: z.object({\n config: Config(),\n embeddingRequests: EmbeddingRequests(),\n }),\n response: EmbeddingResponse,\n cached: z.boolean(),\n latencyInMs: z.number().int().positive(),\n metadataForCallbacks: z.any().optional(),\n provider: z.object({\n request: z.any(),\n response: z.any(),\n }),\n});\ntype GetEmbeddingsHandlerResponseType = z.infer<typeof GetEmbeddingsHandlerResponse>;\n\ntype GetEmbeddingsCallbackType<M = any> = {\n onGetEmbeddingsStart?: (metadata?: M) => Promise<void> | void;\n onGetEmbeddingsCached?: (metadata?: M, response?: GetEmbeddingsHandlerResponseType) => Promise<void> | void;\n onGetEmbeddingsComplete?: (metadata?: M, response?: GetEmbeddingsHandlerResponseType) => Promise<void> | void;\n onGetEmbeddingsError?: (metadata?: M, error?: GatewayError | HttpRequestError) => Promise<void> | void;\n};\n\nexport {\n GetEmbeddingsHandlerRequest,\n GetEmbeddingsHandlerResponse,\n type GetEmbeddingsHandlerRequestType,\n type GetEmbeddingsHandlerResponseType,\n type GetEmbeddingsCallbackType,\n};\n","import { Context, context, Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nimport { GatewayError } from \"../../errors/errors\";\nimport { HttpClient, HttpRequestError, LoggerManager, TelemetryManager } from \"../../plugins\";\nimport { castToError, getCacheKeyHash, isRunningInBrowser, safelyInvokeCallbacks } from \"../../utils\";\nimport {\n GetEmbeddingsCallbackType,\n GetEmbeddingsHandlerRequest,\n GetEmbeddingsHandlerRequestType,\n GetEmbeddingsHandlerResponseType,\n} from \"./get-embeddings.types\";\n\nasync function handleGetEmbeddings(\n request: GetEmbeddingsHandlerRequestType,\n client: HttpClient,\n telemetryContext?: Context\n): Promise<GetEmbeddingsHandlerResponseType> {\n const logger = LoggerManager.getLogger();\n const _handleGetEmbeddings = async (span?: Span) => {\n logger?.debug(\"handleGetEmbeddings invoked\");\n logger?.debug(\"handleGetEmbeddings request: \", { request });\n const data = GetEmbeddingsHandlerRequest.parse(request);\n const callbacks = request.callbacks || [];\n const handlerTelemetryContext = context.active();\n\n try {\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsStart\",\n request.metadataForCallbacks\n );\n\n const providerData = {\n config: data.config,\n embeddingRequests: data.embeddingRequests,\n };\n\n const providerRequest = {\n url: await data.model.getGetEmbeddingsUrl(data.config, data.embeddingRequests),\n headers: await data.model.getGetEmbeddingsHeaders(data.config, data.embeddingRequests),\n data: await data.model.getGetEmbeddingsData(data.config, data.embeddingRequests),\n };\n\n if (!isRunningInBrowser()) {\n providerRequest.headers = {\n ...providerRequest.headers,\n source: \"adaline.ai\",\n };\n }\n\n if (data.customHeaders) {\n providerRequest.headers = {\n ...providerRequest.headers,\n ...data.customHeaders,\n };\n }\n\n logger?.debug(\"handleGetEmbeddings providerRequest: \", { providerRequest });\n const cacheKey = getCacheKeyHash(`get-embeddings:${providerRequest.url}:${data.model.modelSchema.name}`, providerData);\n if (data.enableCache) {\n logger?.debug(\"handleGetEmbeddings checking cache\");\n const cachedResponse = await request.cache.get(cacheKey);\n if (cachedResponse) {\n cachedResponse.cached = true;\n logger?.debug(\"handleGetEmbeddings cached hit\");\n span?.setAttribute(\"cached\", true);\n span?.setStatus({ code: SpanStatusCode.OK });\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsCached\",\n request.metadataForCallbacks,\n cachedResponse\n );\n logger?.debug(\"handleGetEmbeddings cached response: \", { cachedResponse });\n return cachedResponse;\n }\n }\n\n logger?.debug(\"handleGetEmbeddings cache miss\");\n const now = Date.now();\n const providerResponse = await client.post(\n providerRequest.url,\n providerRequest.data,\n providerRequest.headers,\n undefined,\n handlerTelemetryContext\n );\n const latencyInMs = Date.now() - now;\n logger?.debug(\"handleGetEmbeddings providerResponse: \", { providerResponse });\n\n const response: GetEmbeddingsHandlerResponseType = {\n request: providerData,\n response: data.model.transformGetEmbeddingsResponse(providerResponse.data),\n cached: false,\n latencyInMs,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: providerResponse,\n },\n };\n\n logger?.debug(\"handleGetEmbeddings response: \", { response });\n if (data.enableCache) {\n await request.cache.set(cacheKey, response);\n logger?.debug(\"handleGetEmbeddings response cached\");\n }\n\n span?.setAttribute(\"cached\", false);\n span?.setStatus({ code: SpanStatusCode.OK });\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsComplete\",\n request.metadataForCallbacks,\n response\n );\n\n return response;\n } catch (error) {\n logger?.warn(\"handleGetEmbeddings error: \", { error });\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n // span?.setStatus({ code: SpanStatusCode.ERROR, message: safeError.message });\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsError\",\n request.metadataForCallbacks,\n safeError\n );\n\n throw safeError;\n } finally {\n span?.end();\n }\n };\n\n if (!telemetryContext) {\n return await _handleGetEmbeddings();\n }\n\n return await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"get-embeddings.handler\", async (span: Span) => {\n return await _handleGetEmbeddings(span);\n });\n });\n}\n\nexport { handleGetEmbeddings };\n","import { z } from \"zod\";\n\nimport { Message, Tool, ToolCallContentType, ToolResponseContent, ToolResponseContentType } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\n\nconst GetToolResponsesHandlerRequest = z.object({\n messages: z.array(Message()),\n tools: z.array(Tool()),\n customHeaders: z.record(z.string()).optional(),\n callbacks: z.array(z.custom<GetToolResponsesCallbackType>()).nonempty().optional(),\n metadataForCallbacks: z.any().optional(),\n abortSignal: z.instanceof(AbortSignal).optional(),\n});\ntype GetToolResponsesHandlerRequestType = z.infer<typeof GetToolResponsesHandlerRequest>;\n\nconst GetToolResponsesHandlerResponse = z.object({\n toolResponses: z.record(z.string(), ToolResponseContent()),\n cached: z.boolean(),\n latencyInMs: z.number().int().positive(),\n metadataForCallbacks: z.any().optional(),\n});\ntype GetToolResponsesHandlerResponseType = z.infer<typeof GetToolResponsesHandlerResponse>;\n\ntype GetToolResponsesCallbackType<M = any> = {\n onGetToolResponseStart?: (toolCall: ToolCallContentType, metadata?: M) => Promise<void> | void;\n onGetToolResponseCached?: (toolCall: ToolCallContentType, toolResponse: ToolResponseContentType, metadata?: M) => Promise<void> | void;\n onGetToolResponseComplete?: (toolCall: ToolCallContentType, toolResponse: ToolResponseContentType, metadata?: M) => Promise<void> | void;\n onGetToolResponseError?: (\n toolCall: ToolCallContentType, \n toolResponse: ToolResponseContentType,\n error?: GatewayError,\n metadata?: M,\n ) => Promise<void> | void;\n};\n\nexport {\n GetToolResponsesHandlerRequest,\n GetToolResponsesHandlerResponse,\n type GetToolResponsesHandlerRequestType,\n type GetToolResponsesHandlerResponseType,\n type GetToolResponsesCallbackType,\n};\n","import { Context, context, Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nimport { ToolCallContentType, ToolResponseContentType } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors/errors\";\nimport { HttpClient, HttpRequestError, LoggerManager, TelemetryManager } from \"../../plugins\";\nimport { castToError, safelyInvokeCallbacks } from \"../../utils\";\nimport {\n GetToolResponsesHandlerRequest,\n GetToolResponsesHandlerRequestType,\n GetToolResponsesHandlerResponseType,\n} from \"./get-tool-responses.types\";\n\nasync function handleGetToolResponses(\n request: GetToolResponsesHandlerRequestType,\n client: HttpClient,\n telemetryContext?: Context\n): Promise<GetToolResponsesHandlerResponseType> {\n const logger = LoggerManager.getLogger();\n const _handleGetToolResponses = async (span?: Span) => {\n logger?.debug(\"handleGetToolResponses invoked\");\n logger?.debug(\"handleGetToolResponses request: \", { request });\n const data = GetToolResponsesHandlerRequest.parse(request);\n const tools = data.tools;\n const messages = data.messages;\n\n const toolCalls = messages.reduce((acc, message) => {\n const contentToolCalls = message.content.reduce((acc_, content) => {\n if (content.modality === \"tool-call\") {\n acc_.push(content);\n }\n return acc_;\n }, [] as ToolCallContentType[]);\n return [...acc, ...contentToolCalls];\n }, [] as ToolCallContentType[]);\n\n const callbacks = request.callbacks || [];\n const handlerTelemetryContext = context.active();\n\n try {\n const now = Date.now();\n\n const toolCallPromises = toolCalls.map(async (toolCall) => {\n const tool = tools.find((t) => t.definition.schema.name === toolCall.name);\n if (!tool?.request || tool.request.type !== \"http\") {\n return null;\n }\n\n const requestSettings = tool.request;\n const requestMethod = requestSettings.method.toLowerCase();\n const retrySettings = requestSettings.retry || {\n maxAttempts: 3,\n initialDelay: 1000,\n exponentialFactor: 2,\n };\n\n return await context.with(handlerTelemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(`tool-call.${toolCall.name}`, async (span: Span) => {\n try {\n span.setAttribute(\"tool.name\", toolCall.name);\n span.setAttribute(\"tool.id\", toolCall.id);\n\n if (callbacks) {\n await safelyInvokeCallbacks(callbacks, \"onGetToolResponseStart\", toolCall, request.metadataForCallbacks);\n }\n\n let queryParams: Record<string, string> | undefined;\n let body: Record<string, unknown> | undefined;\n try {\n const bodyOrQuery = JSON.parse(toolCall.arguments);\n if (requestMethod === \"get\") {\n queryParams = bodyOrQuery as Record<string, string>;\n } else {\n body = bodyOrQuery as Record<string, unknown>;\n }\n } catch (error) {\n const warningMessage =\n `executeToolCalls: Error parsing arguments for tool call: ${toolCall.name},` +\n ` arguments: ${toolCall.arguments}, error: ${error instanceof Error ? error.message : String(error)}`;\n logger?.warn(warningMessage);\n }\n\n let response;\n const url = requestSettings.url;\n const headers = {\n ...requestSettings.headers,\n \"Content-Type\": \"application/json\",\n }\n\n if (requestSettings.proxyUrl) {\n // encapsulate the original request for the proxy request\n response = await client.post(\n requestSettings.proxyUrl,\n {\n method: requestMethod,\n url,\n headers,\n ...(requestMethod === \"get\" ? { query: queryParams } : {}),\n ...(requestMethod === \"post\" ? { body } : {}),\n },\n requestSettings.proxyHeaders,\n { retry: retrySettings },\n handlerTelemetryContext\n );\n } else {\n if (requestMethod === \"get\") {\n response = await client.get(\n url,\n queryParams,\n headers,\n { retry: retrySettings },\n handlerTelemetryContext\n );\n } else if (requestMethod === \"post\") {\n response = await client.post(\n url,\n body,\n headers,\n { retry: retrySettings },\n handlerTelemetryContext\n );\n } else {\n throw new GatewayError(`Unsupported HTTP method: ${requestSettings.method}`, 400);\n }\n }\n span.setStatus({ code: SpanStatusCode.OK });\n\n const toolResponse = {\n modality: \"tool-response\" as const,\n index: toolCall.index,\n id: toolCall.id,\n name: toolCall.name,\n data: JSON.stringify(response.data),\n apiResponse: {\n statusCode: response.status.code,\n },\n } as ToolResponseContentType;\n\n if (callbacks) {\n await safelyInvokeCallbacks(\n callbacks, \n \"onGetToolResponseComplete\", \n toolCall, \n toolResponse, \n request.metadataForCallbacks\n );\n }\n\n return toolResponse;\n } catch (error) {\n const safeError = castToError(error);\n if (callbacks) {\n await safelyInvokeCallbacks(callbacks, \"onGetToolResponseError\", toolCall, request.metadataForCallbacks, safeError);\n }\n\n span.setStatus({ code: SpanStatusCode.ERROR, message: safeError.message });\n logger?.warn(`Tool call ${toolCall.name} failed:`, error);\n\n const toolResponse = {\n modality: \"tool-response\" as const,\n index: toolCall.index,\n id: toolCall.id,\n name: toolCall.name,\n data: safeError.message,\n apiResponse: {\n statusCode: safeError.status,\n },\n };\n\n if (callbacks) {\n await safelyInvokeCallbacks(\n callbacks,\n \"onGetToolResponseError\",\n toolCall,\n toolResponse,\n request.metadataForCallbacks,\n safeError\n );\n }\n\n return toolResponse;\n } finally {\n span.end();\n }\n });\n });\n });\n\n const allToolResponses = await Promise.all(toolCallPromises);\n const toolResponses = allToolResponses\n .filter((result) => result !== null)\n .reduce(\n (acc, result) => {\n acc[result.id] = result;\n return acc;\n },\n {} as Record<string, ToolResponseContentType>\n );\n\n const latencyInMs = Date.now() - now;\n logger?.debug(\"handleGetToolResponses toolResponses: \", { toolResponses });\n\n const response: GetToolResponsesHandlerResponseType = {\n toolResponses,\n cached: false,\n latencyInMs,\n metadataForCallbacks: request.metadataForCallbacks,\n };\n\n logger?.debug(\"handleGetToolResponses response: \", { response });\n span?.setStatus({ code: SpanStatusCode.OK });\n\n return response;\n } catch (error) {\n logger?.warn(\"handleGetToolResponses error: \", { error });\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n span?.setStatus({ code: SpanStatusCode.ERROR, message: safeError.message });\n throw safeError;\n } finally {\n span?.end();\n }\n };\n\n if (!telemetryContext) {\n return await _handleGetToolResponses();\n }\n\n return await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"get-tool-responses.handler\", async (span: Span) => {\n return await _handleGetToolResponses(span);\n });\n });\n}\n\nexport { handleGetToolResponses };\n","import { z } from \"zod\";\n\nimport { ChatModelV1 } from \"@adaline/provider\";\nimport { ChatResponse } from \"@adaline/types\";\n\nconst ProxyCompleteChatHandlerRequest = z.object({\n model: z.custom<ChatModelV1>(),\n data: z.any(),\n headers: z.record(z.string()),\n query: z.record(z.string()).optional(),\n});\n\ntype ProxyCompleteChatHandlerRequestType = z.infer<typeof ProxyCompleteChatHandlerRequest>;\n\nconst ProxyCompleteChatHandlerResponse = z.object({\n request: z.any(), // original proxy request from some SDK\n providerRequest: z.object({\n url: z.string().url(),\n headers: z.record(z.string()),\n data: z.any(),\n }), // request sent to provider\n providerResponse: z.any(), // response received from provider\n transformedResponse: z.optional(ChatResponse), // response received in Adaline chat types\n});\ntype ProxyCompleteChatHandlerResponseType = z.infer<typeof ProxyCompleteChatHandlerResponse>;\n\nexport {\n ProxyCompleteChatHandlerRequest,\n ProxyCompleteChatHandlerResponse,\n type ProxyCompleteChatHandlerRequestType,\n type ProxyCompleteChatHandlerResponseType,\n};\n","import { Context, context, Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nimport { GatewayError } from \"../../errors/errors\";\nimport { HttpClient, HttpRequestError, LoggerManager, TelemetryManager } from \"../../plugins\";\nimport { castToError } from \"../../utils\";\nimport type { ProxyCompleteChatHandlerRequestType, ProxyCompleteChatHandlerResponseType } from \"./proxy-complete-chat.types\";\nimport { ProxyCompleteChatHandlerRequest } from \"./proxy-complete-chat.types\";\n\nasync function handleProxyCompleteChat(\n request: ProxyCompleteChatHandlerRequestType,\n client: HttpClient,\n telemetryContext?: Context\n): Promise<ProxyCompleteChatHandlerResponseType> {\n const logger = LoggerManager.getLogger();\n const _handleProxyCompleteChat = async (span?: Span) => {\n logger?.debug(\"handleProxyCompleteChat invoked\");\n logger?.debug(\"handleProxyCompleteChat request: \", { request });\n const data = ProxyCompleteChatHandlerRequest.parse(request);\n const handlerTelemetryContext = context.active();\n\n try {\n data.headers = { ...data.headers, source: \"adaline.ai\" };\n\n const providerRequest = {\n url: await data.model.getProxyCompleteChatUrl(data.data, data.headers, data.query),\n headers: await data.model.getProxyCompleteChatHeaders(data.data, data.headers, data.query),\n data: data.data,\n };\n logger?.debug(\"handleProxyCompleteChat providerRequest: \", { providerRequest });\n\n const providerResponse = await client.post(\n providerRequest.url,\n providerRequest.data,\n providerRequest.headers,\n undefined,\n handlerTelemetryContext\n );\n logger?.debug(\"handleProxyCompleteChat providerResponse: \", { providerResponse });\n\n let transformedResponse;\n try {\n transformedResponse = data.model.transformCompleteChatResponse(providerResponse.data);\n } catch (transformationError) {\n logger?.warn(\"handleProxyCompleteChat transformation error: \", { transformationError });\n }\n\n const response: ProxyCompleteChatHandlerResponseType = {\n request: { header: data.headers, data: data.data, query: data.query },\n providerRequest: providerRequest,\n providerResponse: providerResponse,\n transformedResponse: transformedResponse,\n };\n\n logger?.debug(\"handleProxyCompleteChat response: \", { response });\n\n span?.setStatus({ code: SpanStatusCode.OK });\n\n return response;\n } catch (error) {\n logger?.warn(\"handleProxyCompleteChat error: \", { error });\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n throw safeError;\n } finally {\n span?.end();\n }\n };\n\n if (!telemetryContext) {\n return await _handleProxyCompleteChat();\n }\n\n return await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"proxy-complete-chat.handler\", async (span: Span) => {\n return await _handleProxyCompleteChat(span);\n });\n });\n}\n\nexport { handleProxyCompleteChat };\n","import { Context, context, Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nimport { GatewayError } from \"../../errors/errors\";\nimport { HttpClient, HttpRequestError, LoggerManager, TelemetryManager } from \"../../plugins\";\nimport { castToError } from \"../../utils\";\nimport type { ProxyGetEmbeddingsHandlerRequestType, ProxyGetEmbeddingsHandlerResponseType } from \"./proxy-get-embeddings.types\";\nimport { ProxyGetEmbeddingsHandlerRequest } from \"./proxy-get-embeddings.types\";\n\nasync function handleProxyGetEmbeddings(\n request: ProxyGetEmbeddingsHandlerRequestType,\n client: HttpClient,\n telemetryContext?: Context\n): Promise<ProxyGetEmbeddingsHandlerResponseType> {\n const logger = LoggerManager.getLogger();\n const _handleProxyGetEmbeddings = async (span?: Span) => {\n logger?.debug(\"handleProxyGetEmbeddings invoked\");\n logger?.debug(\"handleProxyGetEmbeddings request: \", { request });\n const data = ProxyGetEmbeddingsHandlerRequest.parse(request);\n const handlerTelemetryContext = context.active();\n\n try {\n const providerRequest = {\n url: await data.model.getGetEmbeddingsUrl(),\n headers: data.headers,\n data: data.data,\n };\n\n providerRequest.headers = {\n ...providerRequest.headers,\n source: \"adaline.ai\",\n };\n\n const sanitizedProviderRequest = { ...providerRequest };\n delete sanitizedProviderRequest.headers.host;\n delete sanitizedProviderRequest.headers[\"content-length\"];\n\n logger?.debug(\"handleProxyGetEmbeddings providerRequest: \", { providerRequest });\n\n const providerResponse = await client.post(\n sanitizedProviderRequest.url,\n sanitizedProviderRequest.data,\n sanitizedProviderRequest.headers,\n undefined,\n handlerTelemetryContext\n );\n logger?.debug(\"handleProxyGetEmbeddings providerResponse: \", { providerResponse });\n\n let transformedResponse;\n try {\n transformedResponse = data.model.transformGetEmbeddingsResponse(providerResponse.data);\n } catch (transformationError) {\n logger?.warn(\"handleProxyGetEmbeddings transformation error: \", { transformationError });\n }\n\n const response: ProxyGetEmbeddingsHandlerResponseType = {\n request: providerRequest,\n providerRequest: sanitizedProviderRequest,\n providerResponse: providerResponse,\n transformedResponse: transformedResponse,\n };\n\n logger?.debug(\"handleProxyGetEmbeddings response: \", { response });\n\n span?.setStatus({ code: SpanStatusCode.OK });\n\n return response;\n } catch (error) {\n logger?.warn(\"handleProxyGetEmbeddings error: \", { error });\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n throw safeError;\n } finally {\n span?.end();\n }\n };\n\n if (!telemetryContext) {\n return await _handleProxyGetEmbeddings();\n }\n\n return await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"proxy-get-embeddings.handler\", async (span: Span) => {\n return await _handleProxyGetEmbeddings(span);\n });\n });\n}\n\nexport { handleProxyGetEmbeddings };\n","import { z } from \"zod\";\n\nimport { EmbeddingModelV1 } from \"@adaline/provider\";\nimport { EmbeddingResponse } from \"@adaline/types\";\n\nconst ProxyGetEmbeddingsHandlerRequest = z.object({\n model: z.custom<EmbeddingModelV1>(),\n data: z.any(),\n headers: z.record(z.string()),\n query: z.record(z.string()).optional(),\n});\n\ntype ProxyGetEmbeddingsHandlerRequestType = z.infer<typeof ProxyGetEmbeddingsHandlerRequest>;\n\nconst ProxyGetEmbeddingsHandlerResponse = z.object({\n request: z.any(), // Original proxy request from SDK\n providerRequest: z.object({\n url: z.string().url(),\n headers: z.record(z.string()),\n data: z.any(),\n }), // Actual request sent to provider\n providerResponse: z.any(), // Raw response from provider\n transformedResponse: z.optional(EmbeddingResponse), // Response in Adaline embedding types\n});\n\ntype ProxyGetEmbeddingsHandlerResponseType = z.infer<typeof ProxyGetEmbeddingsHandlerResponse>;\n\nexport {\n ProxyGetEmbeddingsHandlerRequest,\n ProxyGetEmbeddingsHandlerResponse,\n type ProxyGetEmbeddingsHandlerRequestType,\n type ProxyGetEmbeddingsHandlerResponseType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelV1 } from \"@adaline/provider\";\nimport { PartialChatResponse } from \"@adaline/types\";\n\nconst ProxyStreamChatHandlerRequest = z.object({\n model: z.custom<ChatModelV1>(),\n data: z.any(),\n headers: z.record(z.string()),\n query: z.record(z.string()).optional(),\n});\n\ntype ProxyStreamChatHandlerRequestType = z.infer<typeof ProxyStreamChatHandlerRequest>;\n\nconst ProxyStreamChatHandlerResponse = z.object({\n request: z.any(), // original proxy request from some SDK\n providerRequest: z.object({\n url: z.string().url(),\n headers: z.record(z.string()),\n data: z.any(),\n }), // request sent to provider\n providerResponse: z.any(), // raw chunk from provider\n transformedResponse: z.array(PartialChatResponse).optional(), // transformed partial response\n});\n\ntype ProxyStreamChatHandlerResponseType = z.infer<typeof ProxyStreamChatHandlerResponse>;\n\nexport {\n ProxyStreamChatHandlerRequest,\n ProxyStreamChatHandlerResponse,\n type ProxyStreamChatHandlerRequestType,\n type ProxyStreamChatHandlerResponseType,\n};\n","import { Context, context, Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nimport { PartialChatResponseType } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors/errors\";\nimport { HttpClient, HttpRequestError, LoggerManager, TelemetryManager } from \"../../plugins\";\nimport { castToError } from \"../../utils\";\nimport type { ProxyStreamChatHandlerRequestType, ProxyStreamChatHandlerResponseType } from \"./proxy-stream-chat.types\";\nimport { ProxyStreamChatHandlerRequest } from \"./proxy-stream-chat.types\";\n\nasync function* handleProxyStreamChat(\n request: ProxyStreamChatHandlerRequestType,\n client: HttpClient,\n telemetryContext?: Context\n): AsyncGenerator<ProxyStreamChatHandlerResponseType, void, unknown> {\n const logger = LoggerManager.getLogger();\n const _handleProxyStreamChat = async function* (span?: Span): AsyncGenerator<ProxyStreamChatHandlerResponseType, void, unknown> {\n logger?.debug(\"handleProxyStreamChat invoked\");\n logger?.debug(\"handleProxyStreamChat request: \", { request });\n const handlerTelemetryContext = context.active();\n\n const data = ProxyStreamChatHandlerRequest.parse(request);\n\n try {\n data.headers = { ...data.headers, source: \"adaline.ai\" };\n const providerRequest = {\n url: await data.model.getProxyStreamChatUrl(data.data, data.headers, data.query),\n headers: await data.model.getProxyStreamChatHeaders(data.data, data.headers, data.query),\n data: data.data,\n };\n\n logger?.debug(\"handleProxyStreamChat providerRequest: \", { providerRequest });\n\n let buffer = \"\";\n for await (const chunk of client.stream(\n providerRequest.url,\n \"post\",\n providerRequest.data,\n providerRequest.headers,\n undefined,\n handlerTelemetryContext\n )) {\n let accumulatedPartialResponse: PartialChatResponseType[] | undefined = [];\n try {\n for await (const transformed of data.model.transformProxyStreamChatResponseChunk(\n chunk as string,\n buffer,\n data.data,\n data.headers,\n data.query\n )) {\n buffer = transformed.buffer;\n\n // Check if the partial response contains messages or usage information\n const hasMessages = transformed.partialResponse?.partialMessages?.length > 0;\n // Assuming usage information might be present in the partialResponse object, e.g., transformed.partialResponse.usage\n const hasUsage = transformed.partialResponse?.usage != null; // Adjust this check based on the actual structure of usage data\n\n if (hasMessages || hasUsage) {\n accumulatedPartialResponse.push(transformed.partialResponse);\n }\n }\n } catch (transformationError) {\n logger?.warn(\"handleProxyStreamChat transformation error\", { transformationError });\n accumulatedPartialResponse = undefined;\n }\n const streamResponse: ProxyStreamChatHandlerResponseType = {\n request: { header: data.headers, data: data.data, query: data.query },\n providerRequest: providerRequest,\n providerResponse: chunk,\n transformedResponse: accumulatedPartialResponse,\n };\n\n logger?.debug(\"handleProxyStreamChat streamResponse: \", { streamResponse });\n yield streamResponse;\n }\n\n span?.setStatus({ code: SpanStatusCode.OK });\n } catch (error) {\n logger?.warn(\"handleProxyStreamChat error: \", { error });\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n throw safeError;\n } finally {\n span?.end();\n }\n };\n\n if (!telemetryContext) {\n return yield* _handleProxyStreamChat();\n }\n\n return yield* await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"proxy-stream-chat.handler\", async (span: Span) => {\n return await _handleProxyStreamChat(span);\n });\n });\n}\n\nexport { handleProxyStreamChat };\n","import { z } from \"zod\";\n\nimport { ChatModelV1 } from \"@adaline/provider\";\nimport { Config, Message, PartialChatResponse, Tool } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\nimport { HttpRequestError } from \"../../plugins\";\n\nconst StreamChatHandlerRequest = z.object({\n model: z.custom<ChatModelV1>(),\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n customHeaders: z.record(z.string()).optional(),\n callbacks: z.array(z.custom<StreamChatCallbackType>()).nonempty().optional(),\n metadataForCallbacks: z.any().optional(),\n abortSignal: z.instanceof(AbortSignal).optional(),\n});\ntype StreamChatHandlerRequestType = z.infer<typeof StreamChatHandlerRequest>;\n\nconst StreamChatHandlerResponse = z.object({\n request: z.object({\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n }),\n response: PartialChatResponse,\n metadataForCallbacks: z.any().optional(),\n provider: z.object({\n request: z.any(),\n response: z.any(),\n }),\n});\ntype StreamChatHandlerResponseType = z.infer<typeof StreamChatHandlerResponse>;\n\ntype StreamChatCallbackType<M = any> = {\n onStreamStart?: (metadata?: M) => Promise<void> | void;\n onStreamFirstResponse?: (metadata?: M, response?: StreamChatHandlerResponseType, chunk?: unknown) => Promise<void> | void;\n onStreamNewResponse?: (metadata?: M, response?: StreamChatHandlerResponseType, chunk?: unknown) => Promise<void> | void;\n onStreamEnd?: (metadata?: M, response?: StreamChatHandlerResponseType) => Promise<void> | void;\n onStreamError?: (metadata?: M, error?: GatewayError | HttpRequestError) => Promise<void> | void;\n};\n\nexport {\n StreamChatHandlerRequest,\n StreamChatHandlerResponse,\n type StreamChatCallbackType,\n type StreamChatHandlerRequestType,\n type StreamChatHandlerResponseType,\n};\n","import { Context, context, Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nimport { GatewayError } from \"../../errors/errors\";\nimport { HttpClient, HttpRequestError, LoggerManager, TelemetryManager } from \"../../plugins\";\nimport { castToError, isRunningInBrowser, safelyInvokeCallbacks } from \"../../utils\";\nimport {\n StreamChatCallbackType,\n StreamChatHandlerRequest,\n StreamChatHandlerRequestType,\n StreamChatHandlerResponseType,\n} from \"./stream-chat.types\";\n\nasync function* handleStreamChat<M>(\n request: StreamChatHandlerRequestType,\n client: HttpClient,\n telemetryContext?: Context\n): AsyncGenerator<StreamChatHandlerResponseType, void, unknown> {\n const logger = LoggerManager.getLogger();\n const _handleStreamChat = async function* (span?: Span): AsyncGenerator<StreamChatHandlerResponseType, void, unknown> {\n logger?.debug(\"handleStreamChat invoked\");\n logger?.debug(\"handleStreamChat request: \", { request });\n const data = StreamChatHandlerRequest.parse(request);\n const callbacks = request.callbacks || [];\n const handlerTelemetryContext = context.active();\n\n const stable = {\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n };\n\n try {\n safelyInvokeCallbacks<StreamChatCallbackType, keyof StreamChatCallbackType>(callbacks, \"onStreamStart\", request.metadataForCallbacks);\n\n const providerRequest = {\n url: await data.model.getStreamChatUrl(data.config, data.messages, data.tools),\n headers: await data.model.getStreamChatHeaders(data.config, data.messages, data.tools),\n data: await data.model.getStreamChatData(data.config, data.messages, data.tools),\n };\n\n if (!isRunningInBrowser()) {\n providerRequest.headers = {\n ...providerRequest.headers,\n source: \"adaline.ai\",\n };\n }\n\n if (data.customHeaders) {\n providerRequest.headers = {\n ...providerRequest.headers,\n ...data.customHeaders,\n };\n }\n logger?.debug(\"handleStreamChat providerRequest: \", { providerRequest });\n\n let buffer = \"\";\n let isFirstResponse = true;\n for await (const chunk of client.stream(\n providerRequest.url,\n \"post\",\n providerRequest.data,\n providerRequest.headers,\n {\n abortSignal: request.abortSignal,\n },\n handlerTelemetryContext\n )) {\n for await (const transformed of data.model.transformStreamChatResponseChunk(chunk as string, buffer)) {\n // Update the buffer with the remainder returned by the transformer\n buffer = transformed.buffer;\n\n // Check if the partial response contains messages or usage information\n const hasMessages = transformed.partialResponse?.partialMessages?.length > 0;\n // Assuming usage information might be present in the partialResponse object, e.g., transformed.partialResponse.usage\n const hasUsage = transformed.partialResponse?.usage != null; // Adjust this check based on the actual structure of usage data\n\n // Yield the response if it contains messages or usage data\n if (hasMessages || hasUsage) {\n const streamResponse = {\n request: stable,\n response: transformed.partialResponse,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: chunk,\n },\n };\n\n safelyInvokeCallbacks<StreamChatCallbackType<M>, keyof StreamChatCallbackType<M>>(\n callbacks,\n isFirstResponse ? \"onStreamFirstResponse\" : \"onStreamNewResponse\",\n request.metadataForCallbacks,\n streamResponse\n );\n\n if (isFirstResponse) {\n isFirstResponse = false;\n }\n\n logger?.debug(\"handleStreamChat streamResponse: \", { streamResponse });\n yield streamResponse;\n }\n // If the transformed part contains neither messages nor usage,\n // we simply continue with the updated buffer to process the next part or chunk.\n }\n }\n\n span?.setStatus({ code: SpanStatusCode.OK });\n safelyInvokeCallbacks<StreamChatCallbackType<M>, keyof StreamChatCallbackType<M>>(\n callbacks,\n \"onStreamEnd\",\n request.metadataForCallbacks\n );\n } catch (error) {\n logger?.warn(\"handleStreamChat error: \", { error });\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n // span?.setStatus({ code: SpanStatusCode.ERROR, message: safeError.message });\n safelyInvokeCallbacks<StreamChatCallbackType<M>, keyof StreamChatCallbackType<M>>(\n callbacks,\n \"onStreamError\",\n request.metadataForCallbacks,\n safeError\n );\n\n throw safeError;\n } finally {\n span?.end();\n }\n };\n\n if (!telemetryContext) {\n return yield* _handleStreamChat();\n }\n\n return yield* await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"stream-chat.handler\", async (span: Span) => {\n return await _handleStreamChat(span);\n });\n });\n}\n\nexport { handleStreamChat };\n","import { Context, context, Meter, Span, SpanStatusCode, trace, Tracer } from \"@opentelemetry/api\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { GatewayError } from \"./errors\";\nimport {\n GatewayCompleteChatRequest,\n GatewayCompleteChatRequestType,\n GatewayGetChatUsageCostRequest,\n GatewayGetChatUsageCostRequestType,\n GatewayGetEmbeddingsRequest,\n GatewayGetEmbeddingsRequestType,\n GatewayGetToolResponsesRequest,\n GatewayGetToolResponsesRequestType,\n GatewayOptions,\n GatewayOptionsType,\n GatewayProxyCompleteChatRequest,\n GatewayProxyCompleteChatRequestType,\n GatewayProxyGetEmbeddingsRequest,\n GatewayProxyGetEmbeddingsRequestType,\n GatewayProxyStreamChatRequest,\n GatewayProxyStreamChatRequestType,\n GatewayStreamChatRequest,\n GatewayStreamChatRequestType,\n} from \"./gateway.types\";\nimport {\n CompleteChatHandlerResponseType,\n GetChatUsageCostHandlerResponseType,\n GetEmbeddingsHandlerResponseType,\n GetToolResponsesHandlerResponseType,\n ProxyCompleteChatHandlerResponseType,\n ProxyGetEmbeddingsHandlerResponseType,\n ProxyStreamChatHandlerResponseType,\n StreamChatHandlerResponseType,\n} from \"./handlers\";\nimport { handleCompleteChat } from \"./handlers/complete-chat/complete-chat.handler\";\nimport { handleGetChatUsageCost } from \"./handlers/get-chat-usage-cost/get-chat-usage-cost.handler\";\nimport { handleGetEmbeddings } from \"./handlers/get-embeddings/get-embeddings.handler\";\nimport { handleGetToolResponses } from \"./handlers/get-tool-responses/get-tool-responses.handler\";\nimport { handleProxyCompleteChat } from \"./handlers/proxy-complete-chat/proxy-complete-chat.handler\";\nimport { handleProxyGetEmbeddings } from \"./handlers/proxy-get-embeddings/proxy-get-embeddings.handler\";\nimport { handleProxyStreamChat } from \"./handlers/proxy-stream-chat/proxy-stream-chat.handler\";\nimport { handleStreamChat } from \"./handlers/stream-chat/stream-chat.handler\";\nimport { Cache, HttpClient, IsomorphicHttpClient, LRUCache, Queue, QueueTask, SimpleQueue } from \"./plugins\";\nimport { AnalyticsManager, AnalyticsRecorder } from \"./plugins/analytics\";\nimport { Logger, LoggerManager } from \"./plugins/logger\";\nimport { TelemetryManager } from \"./plugins/telemetry\";\nimport { isRunningInBrowser } from \"./utils\";\n\nclass Gateway {\n private options: GatewayOptionsType;\n\n private logger?: Logger;\n private tracer: Tracer;\n private meter: Meter;\n private analytics: AnalyticsRecorder;\n\n private httpClient: HttpClient;\n private queues: {\n completeChat: Queue<GatewayCompleteChatRequestType, CompleteChatHandlerResponseType>;\n getEmbeddings: Queue<GatewayGetEmbeddingsRequestType, GetEmbeddingsHandlerResponseType>;\n proxyCompleteChat: Queue<GatewayProxyCompleteChatRequestType, ProxyCompleteChatHandlerResponseType>;\n proxyGetEmbeddings: Queue<GatewayProxyGetEmbeddingsRequestType, ProxyGetEmbeddingsHandlerResponseType>;\n };\n private caches: {\n completeChat: Cache<CompleteChatHandlerResponseType>;\n getEmbeddings: Cache<GetEmbeddingsHandlerResponseType>;\n getToolResponses: Cache<GetToolResponsesHandlerResponseType>;\n };\n\n constructor(options: GatewayOptionsType = {}) {\n if (!options.dangerouslyAllowBrowser && isRunningInBrowser()) {\n throw new GatewayError(\n \"It looks like you're running in a browser-like environment. \\\n This is disabled by default, as it risks exposing your provider secrets to attackers. \\\n If you understand the risks and have appropriate mitigation in place, \\\n you can set the `dangerouslyAllowBrowser` option to `true`.\"\n );\n }\n\n this.options = GatewayOptions.parse(options);\n\n LoggerManager.setLogger(options.logger);\n this.logger = options.logger;\n\n this.analytics = AnalyticsManager.getAnalyticsRecorder(\n this.options.enableAnalytics === undefined ? true : this.options.enableAnalytics\n );\n\n TelemetryManager.setTracer(options.telemetry?.tracer);\n this.tracer = TelemetryManager.getTracer();\n\n TelemetryManager.setMeter(options.telemetry?.meter);\n this.meter = TelemetryManager.getMeter();\n\n const queueOptions = {\n maxConcurrentTasks: this.options.queueOptions?.maxConcurrentTasks || 4,\n retryCount: this.options.queueOptions?.retryCount || 3,\n retry: this.options.queueOptions?.retry || {\n initialDelay: 1000,\n exponentialFactor: 2,\n },\n timeout: this.options.queueOptions?.timeout || 120000,\n };\n\n this.queues = {\n completeChat: new SimpleQueue(queueOptions),\n getEmbeddings: new SimpleQueue(queueOptions),\n proxyCompleteChat: new SimpleQueue(queueOptions),\n proxyGetEmbeddings: new SimpleQueue(queueOptions),\n };\n\n this.options.enableProxyAgent = this.options.enableProxyAgent === undefined ? true : this.options.enableProxyAgent;\n\n // httpClient timeout is 90% of queue timeout\n this.httpClient =\n options.httpClient ||\n new IsomorphicHttpClient({ timeoutInMilliseconds: queueOptions.timeout * 0.9, enableProxyAgent: this.options.enableProxyAgent });\n\n this.caches = {\n completeChat: options.completeChatCache || new LRUCache<CompleteChatHandlerResponseType>(),\n getEmbeddings: options.getEmbeddingsCache || new LRUCache<GetEmbeddingsHandlerResponseType>(),\n getToolResponses: options.getToolResponsesCache || new LRUCache<GetToolResponsesHandlerResponseType>(),\n };\n this.logger?.debug(\"gateway initialized\");\n }\n\n async completeChat(request: GatewayCompleteChatRequestType): Promise<CompleteChatHandlerResponseType> {\n this.logger?.info(\"gateway.completeChat invoked\");\n this.logger?.debug(\"request: \", { request });\n const data = GatewayCompleteChatRequest.parse(request);\n const modelName = data.model.modelSchema.name;\n // const counter = this.meter.createCounter(\"completeChat.counter\");\n // counter.add(1, { modelName });\n return await this.tracer.startActiveSpan(\"complete-chat\", async (span: Span) => {\n span.setAttribute(\"modelName\", modelName);\n return new Promise<CompleteChatHandlerResponseType>((resolve, reject) => {\n const task: QueueTask<GatewayCompleteChatRequestType, CompleteChatHandlerResponseType> = {\n id: uuidv4(),\n request: data,\n cache: this.caches.completeChat,\n resolve: (response: CompleteChatHandlerResponseType) => {\n this.analytics.record(\"completeChat\", \"success\", { modelName, usage: response.response.usage || {} });\n resolve(response);\n },\n reject: (error: any) => {\n console.log(\"completeChat error\", error);\n this.analytics.record(\"completeChat\", \"error\", { modelName });\n reject(error);\n },\n execute: this.executeCompleteChat.bind(this),\n telemetryContext: context.active(),\n };\n this.queues.completeChat.enqueue(task);\n this.logger?.debug(`gateway.completeChat task enqueued, id: ${task.id}`);\n });\n });\n }\n\n private async executeCompleteChat(\n request: GatewayCompleteChatRequestType,\n telemetryContext: Context\n ): Promise<CompleteChatHandlerResponseType> {\n this.logger?.debug(\"gateway.executeCompleteChat invoked\");\n const data = GatewayCompleteChatRequest.parse(request);\n return handleCompleteChat(\n {\n cache: this.caches.completeChat,\n model: data.model,\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n enableCache: data.options?.enableCache ?? true,\n callbacks: this.options.completeChatCallbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n },\n this.httpClient,\n telemetryContext\n );\n }\n\n async *streamChat(request: GatewayStreamChatRequestType): AsyncGenerator<StreamChatHandlerResponseType, void, unknown> {\n this.logger?.info(\"gateway.streamChat invoked\");\n this.logger?.debug(\"request: \", { request });\n const data = GatewayStreamChatRequest.parse(request);\n const modelName = data.model.modelSchema.name;\n\n let status = \"success\";\n const span = this.tracer.startSpan(\"stream-chat\");\n const activeContext = trace.setSpan(context.active(), span);\n\n try {\n span.setAttribute(\"modelName\", modelName);\n return yield* await context.with(activeContext, async () => {\n return handleStreamChat(\n {\n model: data.model,\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n callbacks: this.options.streamChatCallbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n abortSignal: data.abortSignal,\n },\n this.httpClient,\n activeContext\n );\n });\n } catch (error) {\n status = \"error\";\n span.setStatus({ code: SpanStatusCode.ERROR, message: \"stream failed\" });\n this.logger?.error(\"gateway.streamChat error: \", { error });\n if (error instanceof GatewayError) throw error;\n else throw new GatewayError((error as any)?.message, 500, (error as any)?.response?.data);\n } finally {\n this.analytics.record(\"streamChat\", status, { modelName });\n span.end();\n }\n }\n\n async getEmbeddings(request: GatewayGetEmbeddingsRequestType): Promise<GetEmbeddingsHandlerResponseType> {\n this.logger?.info(\"gateway.getEmbeddings invoked\");\n this.logger?.debug(\"request: \", { request });\n const data = GatewayGetEmbeddingsRequest.parse(request);\n const modelName = data.model.modelSchema.name;\n return await this.tracer.startActiveSpan(\"get-embeddings\", async (span: Span) => {\n span.setAttribute(\"modelName\", modelName);\n return new Promise<GetEmbeddingsHandlerResponseType>((resolve, reject) => {\n const task: QueueTask<GatewayGetEmbeddingsRequestType, GetEmbeddingsHandlerResponseType> = {\n id: uuidv4(),\n request: data,\n cache: this.caches.getEmbeddings,\n resolve: (response: GetEmbeddingsHandlerResponseType) => {\n this.analytics.record(\"getEmbeddings\", \"success\", { modelName, usage: response.response.usage || {} });\n resolve(response);\n },\n reject: (error: any) => {\n this.analytics.record(\"getEmbeddings\", \"error\", { modelName });\n reject(error);\n },\n execute: this.executeGetEmbeddings.bind(this),\n telemetryContext: context.active(),\n };\n this.queues.getEmbeddings.enqueue(task);\n this.logger?.debug(`gateway.getEmbeddings task enqueued, id: ${task.id}`);\n });\n });\n }\n\n private async executeGetEmbeddings(\n request: GatewayGetEmbeddingsRequestType,\n telemetryContext: Context\n ): Promise<GetEmbeddingsHandlerResponseType> {\n this.logger?.debug(\"gateway.executeGetEmbeddings invoked\");\n const data = GatewayGetEmbeddingsRequest.parse(request);\n return handleGetEmbeddings(\n {\n cache: this.caches.getEmbeddings,\n model: data.model,\n config: data.config,\n embeddingRequests: data.embeddingRequests,\n enableCache: data.options?.enableCache ?? true,\n callbacks: this.options.getEmbeddingsCallbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n },\n this.httpClient,\n telemetryContext\n );\n }\n\n async proxyCompleteChat(request: GatewayProxyCompleteChatRequestType): Promise<ProxyCompleteChatHandlerResponseType> {\n this.logger?.info(\"gateway.proxyCompleteChat invoked\");\n this.logger?.debug(\"request: \", { request });\n const data = GatewayProxyCompleteChatRequest.parse(request);\n const modelName = data.model.modelSchema.name;\n // const counter = this.meter.createCounter(\"completeChat.counter\");\n // counter.add(1, { modelName });\n return await this.tracer.startActiveSpan(\"proxy-complete-chat\", async (span: Span) => {\n span.setAttribute(\"modelName\", modelName);\n return new Promise<ProxyCompleteChatHandlerResponseType>((resolve, reject) => {\n const task: QueueTask<GatewayProxyCompleteChatRequestType, ProxyCompleteChatHandlerResponseType> = {\n id: uuidv4(),\n request: data,\n resolve: (response: ProxyCompleteChatHandlerResponseType) => {\n this.analytics.record(\"proxyCompleteChat\", \"success\", { modelName, usage: response.transformedResponse?.usage || {} });\n resolve(response);\n },\n reject: (error: any) => {\n console.log(\"proxyCompleteChat error\", error);\n this.analytics.record(\"proxyCompleteChat\", \"error\", { modelName });\n reject(error);\n },\n execute: this.executeProxyCompleteChat.bind(this),\n telemetryContext: context.active(),\n };\n this.queues.proxyCompleteChat.enqueue(task);\n this.logger?.debug(`gateway.proxyCompleteChat task enqueued, id: ${task.id}`);\n });\n });\n }\n\n private async executeProxyCompleteChat(\n request: GatewayProxyCompleteChatRequestType,\n telemetryContext: Context\n ): Promise<ProxyCompleteChatHandlerResponseType> {\n this.logger?.debug(\"gateway.executeCompleteChat invoked\");\n const data = GatewayProxyCompleteChatRequest.parse(request);\n return handleProxyCompleteChat(\n {\n model: data.model,\n data: data.data,\n headers: data.headers,\n query: data.query,\n },\n this.httpClient,\n telemetryContext\n );\n }\n\n async *proxyStreamChat(request: GatewayProxyStreamChatRequestType): AsyncGenerator<ProxyStreamChatHandlerResponseType, void, unknown> {\n this.logger?.info(\"gateway.proxyStreamChat invoked\");\n this.logger?.debug(\"proxyStreamChat request: \", { request });\n const data = GatewayProxyStreamChatRequest.parse(request);\n const modelName = data.model.modelSchema.name;\n\n let status = \"success\";\n const span = this.tracer.startSpan(\"proxy-stream-chat\");\n const activeContext = trace.setSpan(context.active(), span);\n\n try {\n span.setAttribute(\"modelName\", modelName);\n return yield* await context.with(activeContext, async () => {\n return handleProxyStreamChat(\n {\n model: data.model,\n data: data.data,\n headers: data.headers,\n query: data.query,\n },\n this.httpClient,\n activeContext\n );\n });\n } catch (error) {\n status = \"error\";\n span.setStatus({ code: SpanStatusCode.ERROR, message: \"proxy stream failed\" });\n this.logger?.error(\"gateway.proxyStreamChat error: \", { error });\n if (error instanceof GatewayError) throw error;\n else throw new GatewayError((error as any)?.message, 500, (error as any)?.response?.data);\n } finally {\n this.analytics.record(\"proxyStreamChat\", status, { modelName });\n span.end();\n }\n }\n async proxyGetEmbeddings(request: GatewayProxyGetEmbeddingsRequestType): Promise<ProxyGetEmbeddingsHandlerResponseType> {\n this.logger?.info(\"gateway.proxyGetEmbeddings invoked\");\n this.logger?.debug(\"request: \", { request });\n\n // Parse and validate the incoming request\n const data = GatewayProxyGetEmbeddingsRequest.parse(request);\n const modelName = data.model.modelSchema.name;\n\n return await this.tracer.startActiveSpan(\"proxy-get-embeddings\", async (span: Span) => {\n span.setAttribute(\"modelName\", modelName);\n\n return new Promise<ProxyGetEmbeddingsHandlerResponseType>((resolve, reject) => {\n const task: QueueTask<GatewayProxyGetEmbeddingsRequestType, ProxyGetEmbeddingsHandlerResponseType> = {\n id: uuidv4(),\n request: data,\n resolve: (response: ProxyGetEmbeddingsHandlerResponseType) => {\n this.analytics.record(\"proxyGetEmbeddings\", \"success\", { modelName, usage: response.transformedResponse?.usage || {} });\n resolve(response);\n },\n reject: (error: any) => {\n this.analytics.record(\"proxyGetEmbeddings\", \"error\", { modelName });\n reject(error);\n },\n execute: this.executeProxyGetEmbeddings.bind(this),\n telemetryContext: context.active(),\n };\n this.queues.proxyGetEmbeddings.enqueue(task);\n this.logger?.debug(`gateway.proxyGetEmbeddings task enqueued, id: ${task.id}`);\n });\n });\n }\n\n private async executeProxyGetEmbeddings(\n request: GatewayProxyGetEmbeddingsRequestType,\n telemetryContext: Context\n ): Promise<ProxyGetEmbeddingsHandlerResponseType> {\n this.logger?.debug(\"gateway.executeProxyGetEmbeddings invoked\");\n const data = GatewayProxyGetEmbeddingsRequest.parse(request);\n return handleProxyGetEmbeddings(\n {\n model: data.model,\n headers: data.headers,\n data: data.data,\n query: data.query,\n },\n this.httpClient,\n telemetryContext\n );\n }\n\n async getToolResponses(request: GatewayGetToolResponsesRequestType): Promise<GetToolResponsesHandlerResponseType> {\n this.logger?.info(\"gateway.getToolResponses invoked\");\n this.logger?.debug(\"request: \", { request });\n const data = GatewayGetToolResponsesRequest.parse(request);\n\n let status = \"success\";\n const span = this.tracer.startSpan(\"get-tool-responses\");\n const activeContext = trace.setSpan(context.active(), span);\n\n try {\n return await context.with(activeContext, async () => {\n return handleGetToolResponses(\n {\n // cache: this.caches.getToolResponses,\n tools: data.tools,\n messages: data.messages,\n customHeaders: data.options?.customHeaders,\n callbacks: this.options.getToolResponsesCallbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n abortSignal: data.abortSignal,\n },\n this.httpClient,\n activeContext\n );\n });\n } catch (error) {\n status = \"error\";\n span.setStatus({ code: SpanStatusCode.ERROR, message: \"get tool responses failed\" });\n this.logger?.error(\"gateway.getToolResponses error: \", { error });\n if (error instanceof GatewayError) throw error;\n else throw new GatewayError((error as any)?.message, 500, (error as any)?.response?.data);\n } finally {\n this.analytics.record(\"getToolResponses\", status, {});\n span.end();\n }\n }\n\n static getChatUsageCost(request: GatewayGetChatUsageCostRequestType): GetChatUsageCostHandlerResponseType {\n const data = GatewayGetChatUsageCostRequest.parse(request);\n\n return handleGetChatUsageCost({ model: data.model, chatModelPrice: data.chatModelPrice, chatUsage: data.chatUsage });\n }\n\n static GatewayError = GatewayError;\n}\n\nexport { Gateway, type GatewayOptionsType };\n","import { z } from \"zod\";\n\nimport { ChatModelV1 } from \"@adaline/provider\";\nimport { ChatModelPriceType, ChatUsageType } from \"@adaline/types\";\n\nconst GetChatUsageCostHandlerRequest = z\n .object({\n chatUsage: z.custom<ChatUsageType>(),\n chatModelPrice: z.custom<ChatModelPriceType>().optional(),\n model: z.custom<ChatModelV1>().optional(),\n })\n .refine(\n (data) => {\n // Ensure exactly one of chatModelPrice or model is provided\n return (data.chatModelPrice !== undefined) !== (data.model !== undefined);\n },\n {\n message: \"Exactly one of chatModelPrice or model must be provided, not both.\",\n path: [\"chatModelPrice\", \"model\"],\n }\n );\n\ntype GetChatUsageCostHandlerRequestType = z.infer<typeof GetChatUsageCostHandlerRequest>;\n\nconst GetChatUsageCostHandlerResponse = z.object({\n cost: z.number(),\n currency: z.string(),\n pricingModel: z.custom<ChatModelPriceType>(),\n usageTokens: z.custom<ChatUsageType>(),\n});\ntype GetChatUsageCostHandlerResponseType = z.infer<typeof GetChatUsageCostHandlerResponse>;\n\nexport {\n GetChatUsageCostHandlerRequest,\n GetChatUsageCostHandlerResponse,\n type GetChatUsageCostHandlerRequestType,\n type GetChatUsageCostHandlerResponseType,\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors/errors.ts","../src/plugins/http-client/http-client.error.ts","../src/plugins/telemetry/telemetry.manager.ts","../src/plugins/http-client/isomorphic.http-client.ts","../src/plugins/queue/queue.error.ts","../src/plugins/queue/queue.interface.ts","../src/utils/utils.ts","../src/plugins/logger/logger.manager.ts","../src/plugins/logger/console.logger.ts","../src/plugins/queue/simple.queue.ts","../src/plugins/cache/lru.cache.ts","../src/plugins/analytics/no-op.analytics.ts","../src/plugins/analytics/analytics.utils.ts","../src/plugins/analytics/post.analytics.ts","../src/plugins/analytics/analytics.manager.ts","../src/gateway.types.ts","../src/handlers/complete-chat/complete-chat.types.ts","../src/handlers/complete-chat/complete-chat.handler.ts","../src/handlers/get-chat-usage-cost/get-chat-usage-cost.handler.ts","../src/handlers/get-embeddings/get-embeddings.types.ts","../src/handlers/get-embeddings/get-embeddings.handler.ts","../src/handlers/get-tool-responses/get-tool-responses.types.ts","../src/handlers/get-tool-responses/get-tool-responses.handler.ts","../src/handlers/proxy-complete-chat/proxy-complete-chat.types.ts","../src/handlers/proxy-complete-chat/proxy-complete-chat.handler.ts","../src/handlers/proxy-get-embeddings/proxy-get-embeddings.types.ts","../src/handlers/proxy-get-embeddings/proxy-get-embeddings.handler.ts","../src/handlers/proxy-stream-chat/proxy-stream-chat.types.ts","../src/handlers/proxy-stream-chat/proxy-stream-chat.handler.ts","../src/handlers/stream-chat/stream-chat.types.ts","../src/handlers/stream-chat/stream-chat.handler.ts","../src/gateway.ts","../src/handlers/get-chat-usage-cost/get-chat-usage-cost.types.ts"],"names":["GatewayError","_GatewayError","message","status","data","GatewayTelemetryErrorLiteral","GatewayTelemetryError","_GatewayTelemetryError","GatewayBaseError","info","cause","error","HttpClientErrorLiteral","HttpClientError","_HttpClientError","HttpRequestErrorLiteral","HttpRequestError","_HttpRequestError","headers","TelemetryManager","tracer","trace","meter","metrics","convertHeadersToRecord","headerRecord","key","value","axiosToHttpRequestError","_a","_b","_c","IsomorphicHttpClient","config","axiosInstance","timeoutInMilliseconds","enableProxyAgent","axios","Timeout","z","ProxyAgent","logger","LoggerManager","_0","_1","_2","__async","method","url","dataOrParams","additionalConfig","options","telemetryContext","_makeRequest","span","executeRequest","__spreadValues","__spreadProps","resp","response","result","SpanStatusCode","retryConfig","lastError","attempt","delay","resolve","context","ATTR_HTTP_REQUEST_METHOD","ATTR_URL_FULL","__asyncGenerator","_stream","requestStart","timeToFirstTokenSet","__await","iter","__forAwait","more","temp","chunk","ttfb","decodedChunk","fetchConfig","text","reader","done","decodedValue","__yieldStar","params","QueueTaskTimeoutErrorLiteral","QueueTaskTimeoutError","_QueueTaskTimeoutError","QueueOptions","getCacheKeyHash","prefix","object","sha256","castToError","err","isRunningInBrowser","logColors","verbose","level","action","args","debug","safelyInvokeCallbacks","callbacks","name","promises","callback","func","ms","ConsoleLogger","SimpleQueue","task","taskSpan","taskTelemetryContext","reject","timeout","retryRemaining","shouldRetry","delayMs","taskRequest","GatewayCompleteChatRequest","retryDelay","randomDelayMs","retrySpan","item","LRUCache","maxEntries","LRU","NoOpAnalytics","event","dimensions","getNodeDetails","os","getBrowserDetails","PostAnalytics","analyticsEvent","eventsToSend","events","e","AnalyticsManager","enableAnalytics","GatewayOptions","GatewayCompleteChatRequestOptions","Config","Message","Tool","GatewayStreamChatRequestOptions","GatewayStreamChatRequest","GatewayGetEmbeddingsRequestOptions","GatewayGetEmbeddingsRequest","EmbeddingRequests","GatewayProxyCompleteChatRequest","GatewayProxyStreamChatRequest","GatewayProxyGetEmbeddingsRequest","GatewayGetChatUsageCostRequest","GatewayGetToolResponsesRequestOptions","GatewayGetToolResponsesRequest","CompleteChatHandlerRequest","CompleteChatHandlerResponse","ChatResponse","handleCompleteChat","request","client","_handleCompleteChat","handlerTelemetryContext","providerData","providerRequest","cacheKey","cachedResponse","now","providerResponse","latencyInMs","safeError","handleGetChatUsageCost","promptTokens","completionTokens","tokenRanges","getRate","tokens","kind","tokenRange","t","rate","inputRatePerMillion","outputRatePerMillion","inputCost","outputCost","GetEmbeddingsHandlerRequest","GetEmbeddingsHandlerResponse","EmbeddingResponse","handleGetEmbeddings","_handleGetEmbeddings","GetToolResponsesHandlerRequest","GetToolResponsesHandlerResponse","ToolResponseContent","handleGetToolResponses","_handleGetToolResponses","tools","toolCalls","acc","contentToolCalls","acc_","content","toolCallPromises","toolCall","tool","requestSettings","requestMethod","retrySettings","queryParams","body","bodyOrQuery","warningMessage","toolResponse","toolResponses","ProxyCompleteChatHandlerRequest","ProxyCompleteChatHandlerResponse","handleProxyCompleteChat","_handleProxyCompleteChat","transformedResponse","transformationError","ProxyGetEmbeddingsHandlerRequest","ProxyGetEmbeddingsHandlerResponse","handleProxyGetEmbeddings","_handleProxyGetEmbeddings","sanitizedProviderRequest","ProxyStreamChatHandlerRequest","ProxyStreamChatHandlerResponse","PartialChatResponse","handleProxyStreamChat","_handleProxyStreamChat","buffer","accumulatedPartialResponse","transformed","hasMessages","hasUsage","streamResponse","StreamChatHandlerRequest","StreamChatHandlerResponse","handleStreamChat","_handleStreamChat","stable","isFirstResponse","Gateway","_d","_e","_f","_g","queueOptions","modelName","uuidv4","activeContext","GetChatUsageCostHandlerRequest","GetChatUsageCostHandlerResponse"],"mappings":"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","file":"index.js","sourcesContent":["import { GatewayBaseError } from \"@adaline/types\";\n\nclass GatewayError extends Error {\n status: number;\n data: unknown;\n\n constructor(message: string, status: number = 500, data?: unknown) {\n super(message);\n this.name = \"GatewayError\";\n this.status = status;\n this.data = data;\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, GatewayError);\n }\n }\n}\n\nconst GatewayTelemetryErrorLiteral = \"GatewayTelemetryError\" as const;\nclass GatewayTelemetryError extends GatewayBaseError {\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, GatewayTelemetryErrorLiteral);\n this.info = info;\n this.cause = cause;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isGatewayTelemetryError(error: unknown): error is GatewayTelemetryError {\n return error instanceof GatewayTelemetryError;\n }\n}\n\nexport { GatewayError, GatewayTelemetryError };\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst HttpClientErrorLiteral = \"HttpClientError\" as const;\nclass HttpClientError extends GatewayBaseError {\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, HttpClientErrorLiteral);\n this.info = info;\n this.cause = cause;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isHttpClientError(error: unknown): error is HttpClientError {\n return error instanceof HttpClientError;\n }\n}\n\nconst HttpRequestErrorLiteral = \"HttpRequestError\" as const;\nclass HttpRequestError extends GatewayBaseError {\n readonly info: string;\n readonly cause: {\n status: number;\n headers: Record<string, string>;\n data: unknown;\n };\n\n constructor(message: string, status: number = 500, headers: Record<string, string>, data: unknown) {\n super({ info: message, cause: { status, headers, data } }, HttpRequestErrorLiteral);\n this.info = message;\n this.cause = { status, headers, data };\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isHttpRequestError(error: unknown): error is HttpRequestError {\n return error instanceof HttpRequestError;\n }\n}\n\nexport { HttpClientError, HttpRequestError };\n","import { Meter, metrics, trace, Tracer } from \"@opentelemetry/api\";\n\nclass TelemetryManager {\n static DEFAULT_TRACER_KEY = \"gateway\";\n static DEFAULT_METER_KEY = \"gateway\";\n\n private static tracer: Tracer | undefined = undefined;\n private static meter: Meter | undefined = undefined;\n\n static setTracer(tracer: Tracer | undefined): void {\n if (!this.tracer) {\n this.tracer = tracer || trace.getTracer(this.DEFAULT_TRACER_KEY);\n }\n }\n\n static getTracer(): Tracer {\n return this.tracer || trace.getTracer(this.DEFAULT_TRACER_KEY);\n }\n\n static setMeter(meter: Meter | undefined): void {\n if (!this.meter) {\n this.meter = meter || metrics.getMeter(this.DEFAULT_METER_KEY);\n }\n }\n\n static getMeter(): Meter {\n return this.meter || metrics.getMeter(this.DEFAULT_METER_KEY);\n }\n}\n\nexport { TelemetryManager };\n","import { Context, context, Span, SpanStatusCode, Tracer } from \"@opentelemetry/api\";\nimport { ATTR_HTTP_REQUEST_METHOD, ATTR_URL_FULL } from \"@opentelemetry/semantic-conventions\";\nimport axios, { AxiosError, AxiosInstance, AxiosRequestConfig } from \"axios\";\nimport type { ProxyAgent } from \"proxy-agent\";\nimport { z } from \"zod\";\n\nimport { LoggerManager } from \"../../plugins\";\nimport { TelemetryManager } from \"../../plugins/telemetry\";\nimport { HttpClientError, HttpRequestError } from \"./http-client.error\";\nimport { HttpClient, HttpClientOptions, HttpClientResponse } from \"./http-client.interface\";\n\nconst convertHeadersToRecord = (headers: any): Record<string, string> => {\n const headerRecord: Record<string, string> = {};\n if (headers && (typeof headers === \"object\" || headers instanceof Headers)) {\n Object.entries(headers).forEach(([key, value]) => {\n if (Array.isArray(value)) {\n headerRecord[key] = value.join(\", \");\n } else if (typeof value === \"string\") {\n headerRecord[key] = value;\n } else {\n headerRecord[key] = \"\";\n }\n });\n }\n\n return headerRecord;\n};\n\nconst axiosToHttpRequestError = (error: AxiosError): HttpRequestError => {\n const message = error?.message || \"An unexpected error occurred\";\n const status = error?.response?.status || 500;\n const headers = convertHeadersToRecord(error?.response?.headers) || {};\n const data = error?.response?.data || {};\n return new HttpRequestError(message, status, headers, data);\n};\n\ninterface IsomorphicHttpClientConfig {\n timeoutInMilliseconds?: number;\n axiosInstance?: AxiosInstance;\n telemetryTracer?: Tracer;\n enableProxyAgent?: boolean;\n}\n\nclass IsomorphicHttpClient implements HttpClient {\n private defaultTimeout?: number;\n private client: AxiosInstance;\n private httpProxyAgent?: ProxyAgent;\n private httpsProxyAgent?: ProxyAgent;\n private enableProxyAgent: boolean;\n\n constructor(config: IsomorphicHttpClientConfig) {\n const { axiosInstance, timeoutInMilliseconds, enableProxyAgent } = config;\n this.client = axiosInstance || axios.create();\n\n const Timeout = z.number().int().positive().optional();\n this.defaultTimeout = Timeout.parse(timeoutInMilliseconds);\n\n this.client.defaults.timeout = this.defaultTimeout;\n\n // Enable proxy agent by default unless explicitly disabled\n this.enableProxyAgent = enableProxyAgent ?? true;\n\n if (this.enableProxyAgent) {\n // Use require here to avoid importing in a browser build\n const ProxyAgent = require(\"proxy-agent\");\n this.httpProxyAgent = new ProxyAgent.ProxyAgent();\n this.httpsProxyAgent = new ProxyAgent.ProxyAgent({\n rejectUnauthorized: false, // Don't check SSL cert\n });\n }\n const logger = LoggerManager.getLogger();\n logger?.debug(`IsomorphicHttpClient initialized with defaultTimeout: ${this.defaultTimeout}`);\n }\n\n isNodeEnvironment = (): boolean => {\n return typeof process !== \"undefined\" && process.versions != null && process.versions.node != null;\n };\n\n private async makeRequest<T>(\n method: \"get\" | \"post\" | \"put\" | \"delete\" | \"patch\",\n url: string,\n dataOrParams: Record<string, unknown>,\n additionalConfig: AxiosRequestConfig = {},\n options?: HttpClientOptions,\n telemetryContext?: Context\n ): Promise<HttpClientResponse<T>> {\n const logger = LoggerManager.getLogger();\n\n const _makeRequest = async <T>(span?: Span): Promise<HttpClientResponse<T>> => {\n const executeRequest = async (): Promise<HttpClientResponse<T>> => {\n try {\n const config: AxiosRequestConfig = {\n ...(method === \"get\" || method === \"delete\" ? { params: dataOrParams } : { data: dataOrParams }),\n ...additionalConfig,\n timeout: this.defaultTimeout,\n ...(this.enableProxyAgent\n ? {\n httpAgent: this.httpProxyAgent,\n httpsAgent: this.httpsProxyAgent,\n }\n : {}),\n };\n\n if (method === \"get\" || method === \"delete\") {\n const resp = await this.client[method]<T>(url, config);\n const response = {\n data: resp.data,\n headers: convertHeadersToRecord(resp.headers),\n status: {\n code: resp.status,\n text: resp.statusText,\n },\n };\n logger?.debug(\"IsomorphicHttpClient.makeRequest response: \", response);\n return response;\n } else {\n const resp = await this.client[method]<T>(url, config.data, {\n ...config,\n params: config.params,\n });\n const response = {\n data: resp.data,\n headers: convertHeadersToRecord(resp.headers),\n status: {\n code: resp.status,\n text: resp.statusText,\n },\n };\n logger?.debug(\"IsomorphicHttpClient.makeRequest response: \", response);\n return response;\n }\n } catch (error) {\n logger?.warn(\"IsomorphicHttpClient.makeRequest error: \", error);\n if (axios.isAxiosError(error)) throw axiosToHttpRequestError(error);\n throw new HttpClientError({ info: \"An unexpected error occurred\", cause: error });\n }\n };\n\n try {\n // If no retry configuration, execute once\n if (!options?.retry) {\n const result = await executeRequest();\n span?.setStatus({ code: SpanStatusCode.OK, message: \"request successful\" });\n return result;\n }\n\n // Retry logic with exponential backoff\n const retryConfig = options.retry;\n let lastError: any;\n\n for (let attempt = 1; attempt <= retryConfig.maxAttempts; attempt++) {\n try {\n const result = await executeRequest();\n // If successful, return the result\n span?.setStatus({ code: SpanStatusCode.OK, message: \"request successful\" });\n return result;\n } catch (error) {\n lastError = error;\n logger?.warn(`IsomorphicHttpClient.makeRequest attempt ${attempt} failed: `, error);\n\n // If this is the last attempt, don't wait and throw the error\n if (attempt === retryConfig.maxAttempts) {\n break;\n }\n\n // Calculate delay with exponential backoff\n const delay = retryConfig.initialDelay * Math.pow(retryConfig.exponentialFactor, attempt - 1);\n logger?.debug(`IsomorphicHttpClient.makeRequest retrying after ${delay}ms (attempt ${attempt}/${retryConfig.maxAttempts})`);\n\n // Wait before retrying\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n }\n\n // If we get here, all attempts failed\n span?.setStatus({ code: SpanStatusCode.ERROR, message: \"request failed after all retry attempts\" });\n throw lastError;\n } catch (error) {\n span?.setStatus({ code: SpanStatusCode.ERROR, message: \"request failed\" });\n throw error;\n } finally {\n span?.end();\n }\n };\n\n if (!telemetryContext) {\n return _makeRequest<T>();\n }\n\n return await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"http.request\", async (span: Span) => {\n span.setAttribute(ATTR_HTTP_REQUEST_METHOD, method.toUpperCase());\n span.setAttribute(ATTR_URL_FULL, url);\n return await _makeRequest<T>(span);\n });\n });\n }\n\n async *stream<T>(\n url: string,\n method: \"get\" | \"post\",\n data?: Record<string, unknown>,\n headers?: Record<string, string>,\n options?: {\n abortSignal?: AbortSignal;\n },\n telemetryContext?: Context\n ): AsyncGenerator<T, void, unknown> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`IsomorphicHttpClient.STREAM request to ${url}`, { data, headers });\n const _stream = async function* (this: IsomorphicHttpClient, span?: Span): AsyncGenerator<T, void, unknown> {\n // Record the time we start the request for TTFT measurement\n const requestStart = Date.now();\n let timeToFirstTokenSet = false;\n\n try {\n if (this.isNodeEnvironment()) {\n logger?.debug(\"IsomorphicHttpClient.stream in node environment\");\n const response = await this.client.request({\n method,\n url,\n headers,\n data,\n responseType: \"stream\",\n signal: options?.abortSignal,\n });\n\n for await (const chunk of response.data) {\n // Set time-to-first-token if this is the first chunk\n if (!timeToFirstTokenSet) {\n const ttfb = Date.now() - requestStart;\n span?.setAttribute(\"time-to-first-token\", ttfb);\n timeToFirstTokenSet = true;\n }\n span?.addEvent(\"stream.chunk\", { message: \"stream chunk received\" });\n const decodedChunk = chunk.toString();\n logger?.debug(\"IsomorphicHttpClient.stream chunk: \", decodedChunk);\n yield decodedChunk as unknown as T;\n }\n span?.setStatus({ code: SpanStatusCode.OK, message: \"stream successful\" });\n } else {\n logger?.debug(\"IsomorphicHttpClient.stream in browser environment\");\n const fetchConfig: RequestInit = {\n method,\n headers: new Headers({\n ...headers,\n }),\n body: method !== \"get\" ? JSON.stringify(data) : undefined,\n signal: options?.abortSignal,\n };\n const response = await fetch(url, fetchConfig);\n\n if (!response.ok) {\n logger?.warn(\"IsomorphicHttpClient.stream response not ok: \", response);\n span?.setStatus({ code: SpanStatusCode.ERROR, message: \"stream failed\" });\n const text: any = await response.json();\n throw new HttpRequestError(\n `Request failed with status ${response.status}`,\n response.status,\n convertHeadersToRecord(response.headers),\n text\n );\n }\n\n if (response.body) {\n const reader = response.body.getReader();\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n // Set time-to-first-token if we receive data on the last chunk\n if (!timeToFirstTokenSet && value) {\n const ttfb = Date.now() - requestStart;\n span?.setAttribute(\"time-to-first-token\", ttfb);\n timeToFirstTokenSet = true;\n }\n span?.addEvent(\"stream.chunk\", { message: \"stream chunk received\" });\n const decodedValue = new TextDecoder().decode(value, { stream: true });\n logger?.debug(\"IsomorphicHttpClient.stream chunk: \", decodedValue);\n yield decodedValue as unknown as T;\n break;\n }\n\n // Set time-to-first-token if this is the first chunk\n if (!timeToFirstTokenSet) {\n const ttfb = Date.now() - requestStart;\n span?.setAttribute(\"time-to-first-token\", ttfb);\n timeToFirstTokenSet = true;\n }\n span?.addEvent(\"stream.chunk\", { message: \"stream chunk received\" });\n const decodedValue = new TextDecoder().decode(value, { stream: true });\n logger?.debug(\"IsomorphicHttpClient.stream chunk: \", decodedValue);\n yield decodedValue as unknown as T;\n }\n span?.setStatus({ code: SpanStatusCode.OK, message: \"stream successful\" });\n } else {\n logger?.warn(\"IsomorphicHttpClient.stream response has no body\");\n span?.setStatus({ code: SpanStatusCode.ERROR, message: \"stream failed\" });\n throw new HttpRequestError(\"Cannot stream the body of the response.\", 500, {}, response);\n }\n }\n } catch (error: any) {\n logger?.warn(\"IsomorphicHttpClient.stream error: \", error);\n span?.setStatus({ code: SpanStatusCode.ERROR, message: \"stream failed\" });\n if (HttpRequestError.isHttpRequestError(error)) throw error;\n if (error?.name === \"AbortError\") throw new HttpRequestError(\"AbortError\", 408, {}, {});\n if (error?.name === \"CanceledError\") throw new HttpRequestError(\"AbortError\", 408, {}, {});\n // TODO: how to convert non-axios errors to HttpRequestError for fetch aka browser environment\n if (axios.isAxiosError(error)) throw axiosToHttpRequestError(error);\n throw new HttpClientError({ info: \"An unexpected error occurred\", cause: error });\n } finally {\n span?.end();\n }\n }.bind(this);\n\n if (!telemetryContext) {\n return yield* _stream();\n }\n\n return yield* await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"http.stream\", async (span: Span) => {\n span.setAttribute(ATTR_HTTP_REQUEST_METHOD, method.toUpperCase());\n span.setAttribute(ATTR_URL_FULL, url);\n return await _stream(span);\n });\n });\n }\n\n async get<T>(\n url: string,\n params?: Record<string, unknown>,\n headers?: Record<string, string | undefined>,\n options?: HttpClientOptions,\n telemetryContext?: Context\n ): Promise<HttpClientResponse<T>> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`IsomorphicHttpClient.GET request to ${url}`, { params, headers });\n return this.makeRequest<T>(\"get\", url, params || {}, { headers }, options, telemetryContext);\n }\n\n async post<T>(\n url: string,\n data?: Record<string, unknown>,\n headers?: Record<string, string | undefined>,\n options?: HttpClientOptions,\n telemetryContext?: Context\n ): Promise<HttpClientResponse<T>> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`IsomorphicHttpClient.POST request to ${url}`, { data, headers });\n return this.makeRequest<T>(\"post\", url, data || {}, { headers }, options, telemetryContext);\n }\n\n async put<T>(\n url: string,\n data?: Record<string, unknown>,\n headers?: Record<string, string | undefined>,\n options?: HttpClientOptions,\n telemetryContext?: Context\n ): Promise<HttpClientResponse<T>> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`IsomorphicHttpClient.PUT request to ${url}`, { data, headers });\n return this.makeRequest<T>(\"put\", url, data || {}, { headers }, options, telemetryContext);\n }\n\n async delete<T>(\n url: string,\n params?: Record<string, unknown>,\n headers?: Record<string, string | undefined>,\n options?: HttpClientOptions,\n telemetryContext?: Context\n ): Promise<HttpClientResponse<T>> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`IsomorphicHttpClient.DELETE request to ${url}`, { params, headers });\n return this.makeRequest<T>(\"delete\", url, params || {}, { headers }, options, telemetryContext);\n }\n\n async patch<T>(\n url: string,\n data?: Record<string, unknown>,\n headers?: Record<string, string | undefined>,\n options?: HttpClientOptions,\n telemetryContext?: Context\n ): Promise<HttpClientResponse<T>> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`IsomorphicHttpClient.PATCH request to ${url}`, { data, headers });\n return this.makeRequest<T>(\"patch\", url, data || {}, { headers }, options, telemetryContext);\n }\n}\n\nexport { IsomorphicHttpClient };\n","import { GatewayBaseError } from \"@adaline/types\";\n\nconst QueueTaskTimeoutErrorLiteral = \"QueueTaskTimeoutError\" as const;\nclass QueueTaskTimeoutError extends GatewayBaseError {\n readonly info: string;\n readonly cause: unknown;\n\n constructor({ info, cause }: { info: string; cause: unknown }) {\n super({ info, cause }, QueueTaskTimeoutErrorLiteral);\n this.info = info;\n this.cause = cause;\n Object.setPrototypeOf(this, new.target.prototype);\n }\n\n static isQueueTaskTimeoutError(error: unknown): error is QueueTaskTimeoutError {\n return error instanceof QueueTaskTimeoutError;\n }\n}\n\nexport { QueueTaskTimeoutError };\n","import { Context } from \"@opentelemetry/api\";\nimport { z } from \"zod\";\n\nimport { type Cache } from \"../cache\";\n\ntype QueueTask<Request, Response> = {\n id: string;\n request: Request;\n cache?: Cache<Response>;\n resolve: (value: Response) => void;\n reject: (error: any) => void;\n execute: (request: Request, context: Context) => Promise<Response>;\n telemetryContext: Context;\n};\n\ninterface Queue<Request, Response> {\n enqueue(task: QueueTask<Request, Response>): void;\n}\n\nconst QueueOptions = z.object({\n maxConcurrentTasks: z.number().int().positive(),\n retryCount: z.number().int().positive(),\n timeout: z.number().int().positive(),\n retry: z.object({\n initialDelay: z.number().int().positive(),\n exponentialFactor: z.number().int().positive(),\n }),\n});\ntype QueueOptionsType = z.infer<typeof QueueOptions>;\n\nexport { QueueOptions, type Queue, type QueueOptionsType, type QueueTask };\n","import sha256 from \"crypto-js/sha256.js\";\n\nimport { GatewayError } from \"../errors/errors\";\nimport { HttpClientError, HttpRequestError } from \"../plugins/http-client/http-client.error\";\n\nconst getCacheKeyHash = (prefix: string, object: object): string => {\n return sha256(prefix + JSON.stringify(object)).toString();\n};\n\nconst castToError = (err: any): GatewayError => {\n if (err instanceof GatewayError) return err;\n if (HttpClientError.isHttpClientError(err)) return new GatewayError(err.message);\n if (HttpRequestError.isHttpRequestError(err)) return new GatewayError(err.message, err.cause.status, err.cause.data);\n if (err instanceof Error) return new GatewayError(err.message);\n return new GatewayError(err);\n};\n\nconst isRunningInBrowser = () => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof navigator !== \"undefined\";\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst logLevels = {\n error: 0,\n warn: 1,\n info: 2,\n};\n\nconst logColors = {\n error: \"color: red\",\n warn: \"color: yellow\",\n info: \"color: green\",\n};\n\nconst verbose = (level: keyof typeof logLevels, action: string, ...args: any[]) => {\n if (!isRunningInBrowser()) {\n // Node.js environment\n switch (level) {\n case \"error\":\n console.error(...args);\n break;\n case \"warn\":\n console.warn(...args);\n break;\n default:\n console.log(...args);\n }\n } else if (isRunningInBrowser()) {\n // Browser environment\n console.log(`%c[${level.toUpperCase()}] [${action}]`, logColors[level], ...args);\n }\n};\n\nconst debug = (level: keyof typeof logLevels, action: string, ...args: any[]) => {\n if (isRunningInBrowser()) return;\n // eslint-disable-next-line turbo/no-undeclared-env-vars\n if (process?.env?.DEBUG !== \"true\") return;\n verbose(level, action, ...args);\n};\n\ntype Prettify<T> = {\n [K in keyof T]: T[K];\n} & unknown;\n\ninterface BaseCallback {\n [key: string]: (...args: any[]) => void | Promise<void>;\n}\n\ntype ArgumentsType<T> = T extends (...args: infer A) => any ? A : never;\n\nconst safelyInvokeCallbacks = async <T extends BaseCallback, K extends keyof T>(\n callbacks: T[],\n name: keyof T,\n ...args: ArgumentsType<T[K]>\n): Promise<void> => {\n const promises: Promise<void>[] = [];\n\n callbacks.forEach((callback) => {\n const func = callback[name];\n if (typeof func === \"function\") {\n try {\n const result = func(...args);\n if (result instanceof Promise) {\n promises.push(result);\n }\n } catch (error) {\n debug(\"error\", `SAFELY_INVOKE_CALLBACKS:${String(name)}:`, error);\n }\n }\n });\n\n await Promise.allSettled(promises);\n};\n\nconst delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));\n\nconst calcRateLimitRetryTimeout = (\n maxRetries: number,\n backOffInitialDelay: number,\n backOffMultiplier: number,\n executionTimePerAttempt: number\n): number => {\n let totalDelayTime = 0;\n const totalExecutionTime = maxRetries * executionTimePerAttempt;\n\n for (let i = 0; i < maxRetries; i++) {\n totalDelayTime += backOffInitialDelay * Math.pow(backOffMultiplier, i);\n }\n\n return totalDelayTime + totalExecutionTime;\n};\n\nconst defaultShouldRetry = (status: number) => {\n // Rate limit errors are handled separately.\n\n // Retry on request timeouts.\n if (status === 408) return true;\n // Retry on lock timeouts.\n if (status === 409) return true;\n // Retry internal errors.\n if (status >= 500) return true;\n\n return false;\n};\n\nexport {\n calcRateLimitRetryTimeout,\n castToError,\n debug,\n defaultShouldRetry,\n delay,\n getCacheKeyHash,\n isRunningInBrowser,\n safelyInvokeCallbacks,\n type Prettify,\n};\n","import { Logger } from \"./logger.interface\";\n\nclass LoggerManager {\n private static logger: Logger | undefined;\n\n static setLogger(logger: Logger | undefined): void {\n this.logger = logger;\n }\n\n static getLogger(): Logger | undefined {\n return this.logger;\n }\n}\n\nexport { LoggerManager };\n","import { isRunningInBrowser } from \"../../utils/utils\";\nimport { Logger } from \"./logger.interface\";\n\nexport class ConsoleLogger implements Logger {\n debug(message: string, ...params: any[]): void {\n console.debug(message, ...params);\n }\n\n info(message: string, ...params: any[]): void {\n console.info(message, ...params);\n }\n\n warn(message: string, ...params: any[]): void {\n if (isRunningInBrowser()) {\n console.warn(`%WARN: %c${message}`, \"color: yellow; font-weight: bold;\", \"\", ...params);\n } else {\n const yellow = \"\\x1b[33m\";\n const reset = \"\\x1b[0m\";\n console.warn(`${yellow}WARN:${reset} ${message}`, ...params);\n }\n }\n\n error(message: string, ...params: any[]): void {\n if (isRunningInBrowser()) {\n console.error(`%ERROR: %c${message}`, \"color: lightcoral; font-weight: bold;\", \"\", ...params);\n } else {\n const red = \"\\x1b[91m\";\n const reset = \"\\x1b[0m\";\n console.error(`${red}ERROR:${reset} ${message}`, ...params);\n }\n }\n\n critical(message: string, ...params: any[]): void {\n if (isRunningInBrowser()) {\n console.error(`%cCRITICAL: %c${message}`, \"color: red; font-weight: bold;\", \"\", ...params);\n } else {\n const redBold = \"\\x1b[31;1m\";\n const reset = \"\\x1b[0m\";\n console.error(`${redBold}CRITICAL:${reset} ${message}`, ...params);\n }\n }\n}\n","import { Context, context, Span, SpanStatusCode, trace } from \"@opentelemetry/api\";\n\nimport { GatewayCompleteChatRequest } from \"../../gateway.types\";\nimport { delay } from \"../../utils\";\nimport { HttpRequestError } from \"./../http-client\";\nimport { LoggerManager } from \"./../logger\";\nimport { TelemetryManager } from \"./../telemetry\";\nimport { QueueTaskTimeoutError } from \"./queue.error\";\nimport { Queue, QueueOptionsType, QueueTask } from \"./queue.interface\";\n\nclass SimpleQueue<Request, Response> implements Queue<Request, Response> {\n private options: QueueOptionsType;\n private activeTasks = 0;\n private queue: { task: QueueTask<Request, Response>; taskSpan: Span }[] = [];\n\n constructor(options: QueueOptionsType) {\n this.options = options;\n }\n\n public enqueue(task: QueueTask<Request, Response>): void {\n const logger = LoggerManager.getLogger();\n logger?.debug(`SimpleQueue.enqueue invoked, id: ${task.id}`);\n context.with(task.telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return tracer.startActiveSpan(\"queue.task.pickup-wait\", async (taskSpan: Span) => {\n taskSpan.setAttribute(\"id\", task.id);\n this.queue.push({ task, taskSpan });\n logger?.debug(`SimpleQueue.enqueue task enqueued, id: ${task.id}`);\n });\n });\n this.processQueue();\n }\n\n private executeWithTimeout(task: QueueTask<Request, Response>, taskTelemetryContext: Context): Promise<Response> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`SimpleQueue.executeWithTimeout invoked with timeout: ${this.options.timeout}, id: ${task.id}`);\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n logger?.warn(`SimpleQueue.executeWithTimeout timed out, id: ${task.id}`);\n reject(\n new QueueTaskTimeoutError({\n info: \"Queue task timeout\",\n cause: new Error(\"Queue task timeout\"),\n })\n );\n }, this.options.timeout);\n\n logger?.debug(`SimpleQueue.executeWithTimeout task executing, id: ${task.id}`);\n task\n .execute(task.request, taskTelemetryContext)\n .then((result) => {\n logger?.debug(`SimpleQueue.executeWithTimeout task completed, id: ${task.id}`);\n clearTimeout(timeout);\n resolve(result);\n })\n .catch((error) => {\n logger?.warn(`SimpleQueue.executeWithTimeout task errored, id: ${task.id}`);\n clearTimeout(timeout);\n reject(error);\n });\n });\n }\n\n private async executeWithRetry(task: QueueTask<Request, Response>, retryRemaining: number): Promise<Response> {\n const logger = LoggerManager.getLogger();\n return await context.with(task.telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"queue.task.execute\", async (span: Span) => {\n logger?.debug(`SimpleQueue.executeWithRetry invoked, attempt: ${this.options.retryCount - retryRemaining}, id: ${task.id}`);\n span.setAttribute(\"attempt\", this.options.retryCount - retryRemaining);\n try {\n const taskTelemetryContext = context.active();\n const response = await this.executeWithTimeout(task, taskTelemetryContext);\n span.setStatus({ code: SpanStatusCode.OK });\n span.end();\n return response;\n } catch (error) {\n if (retryRemaining === 0) {\n logger?.warn(`SimpleQueue.executeWithRetry retry count reached, id: ${task.id}`);\n // span.setStatus({ code: SpanStatusCode.ERROR });\n span.end();\n throw error;\n }\n\n let shouldRetry = true;\n let delayMs =\n this.options.retry.initialDelay * Math.pow(this.options.retry.exponentialFactor, this.options.retryCount - retryRemaining);\n if (HttpRequestError.isHttpRequestError(error)) {\n // rate limiting error\n if (error.cause.status === 429) {\n logger?.warn(`SimpleQueue.executeWithRetry rate limiting error, id: ${task.id}`);\n const taskRequest = GatewayCompleteChatRequest.safeParse(task.request);\n if (taskRequest.success) {\n const retryDelay = taskRequest.data.model.getRetryDelay(error.cause.headers, error.cause.data);\n shouldRetry = retryDelay.shouldRetry;\n // valid delayMs is returned from model\n if (retryDelay.delayMs > 0) {\n delayMs = retryDelay.delayMs;\n }\n }\n const randomDelayMs = (30 + Math.random() * 90) * 1000;\n delayMs += randomDelayMs;\n }\n\n if (error.cause.status >= 500 && error.cause.status < 600) {\n logger?.warn(`SimpleQueue.executeWithRetry ${error.cause.status} error, id: ${task.id}`);\n // implement retry logic for 500 errors\n // else defaults to exponential backoff\n }\n } else {\n logger?.warn(`SimpleQueue.executeWithRetry non http-request error, id: ${task.id}`, { error });\n // implement retry logic for non http-request errors\n // else defaults to exponential backoff\n }\n\n if (!shouldRetry) {\n // span.setStatus({ code: SpanStatusCode.ERROR });\n logger?.warn(`SimpleQueue.executeWithRetry model returned should not retry, id: ${task.id}`);\n span.end();\n throw error;\n } else {\n // span.setStatus({ code: SpanStatusCode.ERROR });\n return await tracer.startActiveSpan(\"queue.task.retry-wait\", async (retrySpan: Span) => {\n logger?.debug(`SimpleQueue.executeWithRetry retry wait: ${delayMs}ms, id: ${task.id}`);\n await delay(delayMs);\n retrySpan.end();\n span.end();\n return this.executeWithRetry(task, retryRemaining - 1);\n });\n }\n } finally {\n // span.end();\n }\n });\n });\n }\n\n private async processQueue() {\n const logger = LoggerManager.getLogger();\n if (this.activeTasks >= this.options.maxConcurrentTasks) {\n logger?.debug(\"SimpleQueue.processQueue max concurrent tasks reached\");\n return;\n }\n\n const item = this.queue.shift();\n if (!item) {\n logger?.debug(\"SimpleQueue.processQueue no item to process\");\n return;\n }\n\n const { task, taskSpan } = item;\n if (taskSpan) {\n taskSpan.end();\n }\n\n this.activeTasks += 1;\n logger?.debug(`SimpleQueue.processQueue active tasks: ${this.activeTasks}`);\n logger?.debug(`SimpleQueue.processQueue processing task, id: ${task.id}`);\n\n try {\n const response: Response = await this.executeWithRetry(task, this.options.retryCount);\n logger?.debug(`SimpleQueue.processQueue task completed, id: ${task.id}`);\n task.resolve(response);\n } catch (error) {\n logger?.warn(`SimpleQueue.processQueue task errored, id: ${task.id}`);\n task.reject(error);\n } finally {\n this.activeTasks -= 1;\n logger?.debug(`SimpleQueue.processQueue active tasks: ${this.activeTasks}`);\n trace.getSpan(task.telemetryContext)?.end();\n this.processQueue();\n }\n }\n}\n\nexport { SimpleQueue };\n","import { LRUCache as LRU } from \"lru-cache\";\n\nimport { LoggerManager } from \"./../logger\";\nimport { type Cache } from \"./cache.interface\";\n\nclass LRUCache<T extends object> implements Cache<T> {\n private cache: LRU<string, T>;\n\n constructor(maxEntries: number = 1000) {\n this.cache = new LRU<string, T>({\n max: maxEntries,\n allowStale: false,\n updateAgeOnGet: false,\n });\n const logger = LoggerManager.getLogger();\n logger?.debug(`LRUCache initialized with maxEntries: ${maxEntries}`);\n }\n\n async get(key: string): Promise<T | undefined> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`LRUCache.get invoked, key: ${key}`);\n return new Promise((resolve) => {\n const value = this.cache.get(key);\n logger?.debug(\"LRUCache.get completed, value: \", value);\n resolve(value);\n });\n }\n\n async set(key: string, value: T): Promise<void> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`LRUCache.set invoked, key: ${key}, value: `, value);\n return new Promise((resolve) => {\n this.cache.set(key, value);\n logger?.debug(\"LRUCache.set completed\");\n resolve();\n });\n }\n\n async delete(key: string): Promise<void> {\n const logger = LoggerManager.getLogger();\n logger?.debug(`LRUCache.delete invoked, key: ${key}`);\n return new Promise((resolve) => {\n this.cache.delete(key);\n logger?.debug(\"LRUCache.delete completed\");\n resolve();\n });\n }\n\n async clear(): Promise<void> {\n const logger = LoggerManager.getLogger();\n logger?.debug(\"LRUCache.clear invoked\");\n return new Promise((resolve) => {\n this.cache.clear();\n logger?.debug(\"LRUCache.clear completed\");\n resolve();\n });\n }\n}\n\nexport { LRUCache, type Cache };\n","import { AnalyticsEvent, AnalyticsRecorder } from \"./analytics.interface\";\n\nclass NoOpAnalytics implements AnalyticsRecorder {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n record(event: AnalyticsEvent[\"event\"], status: AnalyticsEvent[\"status\"], dimensions: AnalyticsEvent[\"dimensions\"]): void {\n // Do nothing\n }\n\n stopRecorder(): void {\n // Do nothing\n }\n}\n\nexport { NoOpAnalytics };\n","import os from \"os\";\n\nimport { AnalyticsBrowserEnvironment, AnalyticsNodeEnvironment } from \"./analytics.interface\";\n\nconst getGatewayEnvironment = (): string => {\n return process.env.ADX_NODE_ENV || \"unknown\";\n};\n\nconst getNodeDetails = (): AnalyticsNodeEnvironment => {\n return {\n node: {\n version: process.version,\n platform: os.platform(),\n architecture: os.arch(),\n },\n };\n};\n\nconst getBrowserDetails = (): AnalyticsBrowserEnvironment => {\n return {\n browser: {\n version: navigator.userAgent,\n userAgent: navigator.userAgent,\n },\n };\n};\n\nexport { getBrowserDetails, getGatewayEnvironment, getNodeDetails };\n","import axios from \"axios\";\n\nimport { isRunningInBrowser } from \"./../../utils\";\nimport { AnalyticsBrowserEnvironment, AnalyticsEvent, AnalyticsNodeEnvironment, AnalyticsRecorder } from \"./analytics.interface\";\nimport { getBrowserDetails, getNodeDetails } from \"./analytics.utils\";\n\nclass PostAnalytics implements AnalyticsRecorder {\n private readonly eventVersion = \"0.1\";\n private readonly gatewayVersion = __LIBRARY_VERSION__;\n\n private flushTimer: any;\n private flushInterval: number = 10000;\n private batchSize: number = 1;\n private maxAttempts: number = 3;\n private environment: AnalyticsNodeEnvironment | AnalyticsBrowserEnvironment = isRunningInBrowser()\n ? getBrowserDetails()\n : getNodeDetails();\n private analyticsEndpointUrl: string = \"https://j954t34pkh.execute-api.us-east-1.amazonaws.com/v0/analytics\";\n\n private events: { event: AnalyticsEvent; attempt: number }[] = [];\n\n constructor() {\n // this.startFlushTimer();\n }\n\n private startFlushTimer() {\n if (isRunningInBrowser()) {\n this.flushTimer = window.setInterval(() => this.flushEvents(), this.flushInterval);\n } else {\n this.flushTimer = setInterval(() => this.flushEvents(), this.flushInterval);\n }\n }\n\n private stopFlushTimer() {\n if (isRunningInBrowser()) {\n window.clearInterval(this.flushTimer);\n } else {\n clearInterval(this.flushTimer);\n }\n }\n\n record(event: AnalyticsEvent[\"event\"], status: AnalyticsEvent[\"status\"], dimensions: AnalyticsEvent[\"dimensions\"]): void {\n const analyticsEvent: AnalyticsEvent = {\n event,\n status,\n dimensions,\n timestamp: new Date().toISOString(),\n eventVersion: this.eventVersion,\n gatewayVersion: this.gatewayVersion,\n environment: this.environment,\n };\n this.events.push({ event: analyticsEvent, attempt: 0 });\n\n if (this.events.length >= this.batchSize) {\n this.flushEvents();\n }\n }\n\n private async flushEvents(): Promise<void> {\n if (this.events.length === 0) return;\n\n const eventsToSend = [...this.events];\n this.events = [];\n\n const success = await this.sendEvents(eventsToSend.map((e) => e.event));\n if (!success) {\n this.events.push(\n ...eventsToSend.filter((e) => e.attempt < this.maxAttempts).map((e) => ({ event: e.event, attempt: e.attempt + 1 }))\n );\n }\n }\n\n private async sendEvents(events: AnalyticsEvent[]): Promise<boolean> {\n try {\n const response = await axios.post(\n this.analyticsEndpointUrl,\n { events },\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n return response.status === 200;\n } catch {\n return false;\n }\n }\n\n public stopRecorder() {\n this.stopFlushTimer();\n this.flushEvents();\n }\n}\n\nexport { PostAnalytics };\n","import { AnalyticsRecorder } from \"./analytics.interface\";\nimport { NoOpAnalytics } from \"./no-op.analytics\";\nimport { PostAnalytics } from \"./post.analytics\";\n\nclass AnalyticsManager {\n private static analytics: AnalyticsRecorder | undefined;\n\n static getAnalyticsRecorder(enableAnalytics: boolean): AnalyticsRecorder {\n if (this.analytics !== undefined) {\n return this.analytics;\n } else {\n this.analytics = enableAnalytics ? new PostAnalytics() : new NoOpAnalytics();\n return this.analytics;\n }\n }\n}\n\nexport { AnalyticsManager };\n","import { Meter, Tracer } from \"@opentelemetry/api\";\nimport { z } from \"zod\";\n\nimport { ChatModelV1, EmbeddingModelV1 } from \"@adaline/provider\";\nimport { ChatModelPriceType, ChatUsageType, Config, EmbeddingRequests, Message, Tool } from \"@adaline/types\";\n\nimport {\n CompleteChatCallbackType,\n CompleteChatHandlerResponseType,\n GetEmbeddingsCallbackType,\n GetEmbeddingsHandlerResponseType,\n GetToolResponsesCallbackType,\n GetToolResponsesHandlerResponseType,\n StreamChatCallbackType,\n} from \"./handlers\";\nimport { Cache, HttpClient, Logger, QueueOptions } from \"./plugins\";\n\nconst GatewayOptions = z.object({\n queueOptions: z.lazy(() => QueueOptions.partial()).optional(),\n dangerouslyAllowBrowser: z.boolean().optional(),\n httpClient: z.custom<HttpClient>().optional(),\n completeChatCache: z.custom<Cache<CompleteChatHandlerResponseType>>().optional(),\n completeChatCallbacks: z.array(z.custom<CompleteChatCallbackType>()).nonempty().optional(),\n getEmbeddingsCache: z.custom<Cache<GetEmbeddingsHandlerResponseType>>().optional(),\n getEmbeddingsCallbacks: z.array(z.custom<GetEmbeddingsCallbackType>()).nonempty().optional(),\n getToolResponsesCache: z.custom<Cache<GetToolResponsesHandlerResponseType>>().optional(),\n getToolResponsesCallbacks: z.array(z.custom<GetToolResponsesCallbackType>()).nonempty().optional(),\n streamChatCallbacks: z.array(z.custom<StreamChatCallbackType>()).nonempty().optional(),\n logger: z.custom<Logger>().optional(),\n telemetry: z\n .object({\n tracer: z.custom<Tracer>().optional(),\n meter: z.custom<Meter>().optional(),\n })\n .optional(),\n enableAnalytics: z.boolean().optional(),\n enableProxyAgent: z.boolean().optional(),\n});\ntype GatewayOptionsType = z.infer<typeof GatewayOptions>;\n\nconst GatewayCompleteChatRequestOptions = z.object({\n enableCache: z.boolean().optional().default(true),\n customHeaders: z.record(z.string()).optional(),\n metadataForCallbacks: z.any().optional(),\n});\ntype GatewayCompleteChatRequestOptionsType = z.infer<typeof GatewayCompleteChatRequestOptions>;\n\nconst GatewayCompleteChatRequest = z.object({\n model: z.custom<ChatModelV1>(),\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n options: GatewayCompleteChatRequestOptions.optional(),\n});\ntype GatewayCompleteChatRequestType = z.infer<typeof GatewayCompleteChatRequest>;\n\nconst GatewayStreamChatRequestOptions = z.object({\n customHeaders: z.record(z.string()).optional(),\n metadataForCallbacks: z.any().optional(),\n});\ntype GatewayStreamChatRequestOptionsType = z.infer<typeof GatewayStreamChatRequestOptions>;\n\nconst GatewayStreamChatRequest = z.object({\n model: z.custom<ChatModelV1>(),\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n options: GatewayStreamChatRequestOptions.optional(),\n abortSignal: z.instanceof(AbortSignal).optional(),\n});\n\ntype GatewayStreamChatRequestType = z.infer<typeof GatewayStreamChatRequest>;\n\nconst GatewayGetEmbeddingsRequestOptions = z.object({\n enableCache: z.boolean().optional().default(true),\n customHeaders: z.record(z.string()).optional(),\n metadataForCallbacks: z.any().optional(),\n});\ntype GatewayGetEmbeddingsRequestOptionsType = z.infer<typeof GatewayGetEmbeddingsRequestOptions>;\n\nconst GatewayGetEmbeddingsRequest = z.object({\n model: z.custom<EmbeddingModelV1>(),\n config: Config(),\n embeddingRequests: EmbeddingRequests(),\n options: GatewayGetEmbeddingsRequestOptions.optional(),\n});\ntype GatewayGetEmbeddingsRequestType = z.infer<typeof GatewayGetEmbeddingsRequest>;\n\nconst GatewayProxyCompleteChatRequest = z.object({\n model: z.custom<ChatModelV1>(),\n data: z.any(),\n headers: z.record(z.string()),\n query: z.record(z.string()).optional(),\n});\ntype GatewayProxyCompleteChatRequestType = z.infer<typeof GatewayProxyCompleteChatRequest>;\n\nconst GatewayProxyStreamChatRequest = z.object({\n model: z.custom<ChatModelV1>(),\n data: z.any(),\n headers: z.record(z.string()),\n query: z.record(z.string()).optional(),\n});\ntype GatewayProxyStreamChatRequestType = z.infer<typeof GatewayProxyStreamChatRequest>;\n\nconst GatewayProxyGetEmbeddingsRequest = z.object({\n model: z.custom<EmbeddingModelV1>(),\n data: z.any(),\n headers: z.record(z.string()),\n query: z.record(z.string()).optional(),\n});\ntype GatewayProxyGetEmbeddingsRequestType = z.infer<typeof GatewayProxyGetEmbeddingsRequest>;\n\nconst GatewayGetChatUsageCostRequest = z\n .object({\n chatUsage: z.custom<ChatUsageType>(),\n chatModelPrice: z.custom<ChatModelPriceType>().optional(),\n model: z.custom<ChatModelV1>().optional(),\n })\n .refine(\n (data) => {\n // Ensure exactly one of chatModelPrice or model is provided\n return (data.chatModelPrice !== undefined) !== (data.model !== undefined);\n },\n {\n message: \"Exactly one of chatModelPrice or model must be provided, not both.\",\n path: [\"chatModelPrice\", \"model\"],\n }\n );\ntype GatewayGetChatUsageCostRequestType = z.infer<typeof GatewayGetChatUsageCostRequest>;\n\nconst GatewayGetToolResponsesRequestOptions = z.object({\n customHeaders: z.record(z.string()).optional(),\n metadataForCallbacks: z.any().optional(),\n});\ntype GatewayGetToolResponsesRequestOptionsType = z.infer<typeof GatewayGetToolResponsesRequestOptions>;\n\nconst GatewayGetToolResponsesRequest = z.object({\n tools: z.array(Tool()),\n messages: z.array(Message()),\n options: GatewayGetToolResponsesRequestOptions.optional(),\n abortSignal: z.instanceof(AbortSignal).optional(),\n});\ntype GatewayGetToolResponsesRequestType = z.infer<typeof GatewayGetToolResponsesRequest>;\n\nexport {\n GatewayCompleteChatRequest,\n GatewayCompleteChatRequestOptions,\n GatewayGetChatUsageCostRequest,\n GatewayGetEmbeddingsRequest,\n GatewayGetEmbeddingsRequestOptions,\n GatewayGetToolResponsesRequest,\n GatewayOptions,\n GatewayProxyCompleteChatRequest,\n GatewayProxyGetEmbeddingsRequest,\n GatewayProxyStreamChatRequest,\n GatewayStreamChatRequest,\n GatewayStreamChatRequestOptions,\n type GatewayCompleteChatRequestOptionsType,\n type GatewayCompleteChatRequestType,\n type GatewayGetChatUsageCostRequestType,\n type GatewayGetEmbeddingsRequestOptionsType,\n type GatewayGetEmbeddingsRequestType,\n type GatewayGetToolResponsesRequestOptionsType,\n type GatewayGetToolResponsesRequestType,\n type GatewayOptionsType,\n type GatewayProxyCompleteChatRequestType,\n type GatewayProxyGetEmbeddingsRequestType,\n type GatewayProxyStreamChatRequestType,\n type GatewayStreamChatRequestOptionsType,\n type GatewayStreamChatRequestType,\n};\n","import { z } from \"zod\";\n\nimport { ChatModelV1 } from \"@adaline/provider\";\nimport { ChatResponse, Config, Message, Tool } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\nimport { Cache, HttpRequestError } from \"../../plugins\";\n\nconst CompleteChatHandlerRequest = z.object({\n cache: z.custom<Cache<CompleteChatHandlerResponseType>>(),\n model: z.custom<ChatModelV1>(),\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n enableCache: z.boolean(),\n customHeaders: z.record(z.string()).optional(),\n callbacks: z.array(z.custom<CompleteChatCallbackType>()).nonempty().optional(),\n metadataForCallbacks: z.any().optional(),\n});\ntype CompleteChatHandlerRequestType = z.infer<typeof CompleteChatHandlerRequest>;\n\nconst CompleteChatHandlerResponse = z.object({\n request: z.object({\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n }),\n response: ChatResponse,\n cached: z.boolean(),\n latencyInMs: z.number().int().positive(),\n metadataForCallbacks: z.any().optional(),\n provider: z.object({\n request: z.any(),\n response: z.any(),\n }),\n});\ntype CompleteChatHandlerResponseType = z.infer<typeof CompleteChatHandlerResponse>;\n\ntype CompleteChatCallbackType<M = any> = {\n onChatStart?: (metadata?: M) => Promise<void> | void;\n onChatCached?: (metadata?: M, response?: CompleteChatHandlerResponseType) => Promise<void> | void;\n onChatComplete?: (metadata?: M, response?: CompleteChatHandlerResponseType) => Promise<void> | void;\n onChatError?: (metadata?: M, error?: GatewayError | HttpRequestError) => Promise<void> | void;\n};\n\nexport {\n CompleteChatHandlerRequest,\n CompleteChatHandlerResponse,\n type CompleteChatCallbackType,\n type CompleteChatHandlerRequestType,\n type CompleteChatHandlerResponseType,\n};\n","import { Context, context, Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nimport { GatewayError } from \"../../errors/errors\";\nimport { HttpClient, HttpRequestError, LoggerManager, TelemetryManager } from \"../../plugins\";\nimport { castToError, getCacheKeyHash, isRunningInBrowser, safelyInvokeCallbacks } from \"../../utils\";\nimport {\n CompleteChatCallbackType,\n CompleteChatHandlerRequest,\n CompleteChatHandlerRequestType,\n CompleteChatHandlerResponseType,\n} from \"./complete-chat.types\";\n\nasync function handleCompleteChat(\n request: CompleteChatHandlerRequestType,\n client: HttpClient,\n telemetryContext?: Context\n): Promise<CompleteChatHandlerResponseType> {\n const logger = LoggerManager.getLogger();\n const _handleCompleteChat = async (span?: Span) => {\n logger?.debug(\"handleCompleteChat invoked\");\n logger?.debug(\"handleCompleteChat request: \", { request });\n const data = CompleteChatHandlerRequest.parse(request);\n const callbacks = request.callbacks || [];\n const handlerTelemetryContext = context.active();\n\n try {\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatStart\",\n request.metadataForCallbacks\n );\n\n const providerData = {\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n };\n\n const providerRequest = {\n url: await data.model.getCompleteChatUrl(data.config, data.messages, data.tools),\n headers: await data.model.getCompleteChatHeaders(data.config, data.messages, data.tools),\n data: await data.model.getCompleteChatData(data.config, data.messages, data.tools),\n };\n\n if (!isRunningInBrowser()) {\n providerRequest.headers = {\n ...providerRequest.headers,\n source: \"adaline.ai\",\n };\n }\n if (data.customHeaders) {\n providerRequest.headers = {\n ...providerRequest.headers,\n ...data.customHeaders,\n };\n }\n\n logger?.debug(\"handleCompleteChat providerRequest: \", { providerRequest });\n const cacheKey = getCacheKeyHash(`complete-chat:${providerRequest.url}:${data.model.modelSchema.name}`, providerData);\n if (data.enableCache) {\n logger?.debug(\"handleCompleteChat checking cache\");\n const cachedResponse = await request.cache.get(cacheKey);\n if (cachedResponse) {\n cachedResponse.cached = true;\n logger?.debug(\"handleCompleteChat cached hit\");\n span?.setAttribute(\"cached\", true);\n span?.setStatus({ code: SpanStatusCode.OK });\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatCached\",\n request.metadataForCallbacks,\n cachedResponse\n );\n logger?.debug(\"handleCompleteChat cached response: \", { cachedResponse });\n return cachedResponse;\n }\n }\n\n logger?.debug(\"handleCompleteChat cache miss\");\n const now = Date.now();\n const providerResponse = await client.post(\n providerRequest.url,\n providerRequest.data,\n providerRequest.headers,\n undefined,\n handlerTelemetryContext\n );\n const latencyInMs = Date.now() - now;\n logger?.debug(\"handleCompleteChat providerResponse: \", { providerResponse });\n\n const response: CompleteChatHandlerResponseType = {\n request: providerData,\n response: data.model.transformCompleteChatResponse(providerResponse.data),\n cached: false,\n latencyInMs,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: providerResponse,\n },\n };\n\n logger?.debug(\"handleCompleteChat response: \", { response });\n if (data.enableCache) {\n await request.cache.set(cacheKey, response);\n logger?.debug(\"handleCompleteChat response cached\");\n }\n\n span?.setAttribute(\"cached\", false);\n span?.setStatus({ code: SpanStatusCode.OK });\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatComplete\",\n request.metadataForCallbacks,\n response\n );\n\n return response;\n } catch (error) {\n logger?.warn(\"handleCompleteChat error: \", { error });\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n // TODO: maybe only set if it's non HTTP Error ?\n // span?.setStatus({ code: SpanStatusCode.ERROR, message: safeError.message });\n safelyInvokeCallbacks<CompleteChatCallbackType, keyof CompleteChatCallbackType>(\n callbacks,\n \"onChatError\",\n request.metadataForCallbacks,\n safeError\n );\n\n throw safeError;\n } finally {\n span?.end();\n }\n };\n\n if (!telemetryContext) {\n return await _handleCompleteChat();\n }\n\n return await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"complete-chat.handler\", async (span: Span) => {\n return await _handleCompleteChat(span);\n });\n });\n}\n\nexport { handleCompleteChat };\n","import { ChatModelPriceType } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\nimport { GetChatUsageCostHandlerRequestType, GetChatUsageCostHandlerResponseType } from \"./get-chat-usage-cost.types\";\n\nfunction handleGetChatUsageCost(request: GetChatUsageCostHandlerRequestType): GetChatUsageCostHandlerResponseType {\n const { promptTokens, completionTokens } = request.chatUsage;\n let tokenRanges: ChatModelPriceType;\n if (request.chatModelPrice) {\n tokenRanges = request.chatModelPrice;\n } else if (request.model) {\n tokenRanges = request.model.getModelPricing();\n } else {\n throw new GatewayError(\"No chatModelPrice or model provided\");\n }\n\n // Helper: pick the per‑million rate for either input or output\n function getRate(tokens: number, kind: \"inputPricePerMillion\" | \"outputPricePerMillion\"): number {\n const tokenRange = tokenRanges.tokenRanges.find(\n (t) => tokens >= t.minTokens && (t.maxTokens === null || t.maxTokens === undefined || tokens < t.maxTokens)\n );\n if (!tokenRange) {\n throw new GatewayError(\"Unable to find a pricing tier for the given token count. Please check your model pricing configuration.\");\n }\n const rate = tokenRange.prices?.base?.[kind];\n if (rate === undefined) {\n throw new GatewayError(`Unable to find a pricing rate for the given token count. Please check your model pricing configuration.`);\n }\n return rate;\n }\n\n const inputRatePerMillion = getRate(promptTokens, \"inputPricePerMillion\");\n const outputRatePerMillion = getRate(promptTokens, \"outputPricePerMillion\");\n\n // rates are per‑1,000,000 tokens\n const inputCost = Number(((promptTokens / 1_000_000) * inputRatePerMillion).toFixed(6));\n const outputCost = Number(((completionTokens / 1_000_000) * outputRatePerMillion).toFixed(6));\n const totalCost = inputCost + outputCost;\n return {\n cost: totalCost,\n currency: tokenRanges.currency || \"USD\", // Default to USD if currency is not provided\n pricingModel: tokenRanges,\n usageTokens: request.chatUsage,\n };\n}\n\nexport { handleGetChatUsageCost };\n","import { z } from \"zod\";\n\nimport { EmbeddingModelV1 } from \"@adaline/provider\";\nimport { Config, EmbeddingRequests, EmbeddingResponse } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\nimport { Cache, HttpRequestError } from \"../../plugins\";\n\nconst GetEmbeddingsHandlerRequest = z.object({\n cache: z.custom<Cache<GetEmbeddingsHandlerResponseType>>(),\n model: z.custom<EmbeddingModelV1>(),\n config: Config(),\n embeddingRequests: EmbeddingRequests(),\n enableCache: z.boolean(),\n customHeaders: z.record(z.string()).optional(),\n callbacks: z.array(z.custom<GetEmbeddingsCallbackType>()).nonempty().optional(),\n metadataForCallbacks: z.any().optional(),\n});\ntype GetEmbeddingsHandlerRequestType = z.infer<typeof GetEmbeddingsHandlerRequest>;\n\nconst GetEmbeddingsHandlerResponse = z.object({\n request: z.object({\n config: Config(),\n embeddingRequests: EmbeddingRequests(),\n }),\n response: EmbeddingResponse,\n cached: z.boolean(),\n latencyInMs: z.number().int().positive(),\n metadataForCallbacks: z.any().optional(),\n provider: z.object({\n request: z.any(),\n response: z.any(),\n }),\n});\ntype GetEmbeddingsHandlerResponseType = z.infer<typeof GetEmbeddingsHandlerResponse>;\n\ntype GetEmbeddingsCallbackType<M = any> = {\n onGetEmbeddingsStart?: (metadata?: M) => Promise<void> | void;\n onGetEmbeddingsCached?: (metadata?: M, response?: GetEmbeddingsHandlerResponseType) => Promise<void> | void;\n onGetEmbeddingsComplete?: (metadata?: M, response?: GetEmbeddingsHandlerResponseType) => Promise<void> | void;\n onGetEmbeddingsError?: (metadata?: M, error?: GatewayError | HttpRequestError) => Promise<void> | void;\n};\n\nexport {\n GetEmbeddingsHandlerRequest,\n GetEmbeddingsHandlerResponse,\n type GetEmbeddingsHandlerRequestType,\n type GetEmbeddingsHandlerResponseType,\n type GetEmbeddingsCallbackType,\n};\n","import { Context, context, Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nimport { GatewayError } from \"../../errors/errors\";\nimport { HttpClient, HttpRequestError, LoggerManager, TelemetryManager } from \"../../plugins\";\nimport { castToError, getCacheKeyHash, isRunningInBrowser, safelyInvokeCallbacks } from \"../../utils\";\nimport {\n GetEmbeddingsCallbackType,\n GetEmbeddingsHandlerRequest,\n GetEmbeddingsHandlerRequestType,\n GetEmbeddingsHandlerResponseType,\n} from \"./get-embeddings.types\";\n\nasync function handleGetEmbeddings(\n request: GetEmbeddingsHandlerRequestType,\n client: HttpClient,\n telemetryContext?: Context\n): Promise<GetEmbeddingsHandlerResponseType> {\n const logger = LoggerManager.getLogger();\n const _handleGetEmbeddings = async (span?: Span) => {\n logger?.debug(\"handleGetEmbeddings invoked\");\n logger?.debug(\"handleGetEmbeddings request: \", { request });\n const data = GetEmbeddingsHandlerRequest.parse(request);\n const callbacks = request.callbacks || [];\n const handlerTelemetryContext = context.active();\n\n try {\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsStart\",\n request.metadataForCallbacks\n );\n\n const providerData = {\n config: data.config,\n embeddingRequests: data.embeddingRequests,\n };\n\n const providerRequest = {\n url: await data.model.getGetEmbeddingsUrl(data.config, data.embeddingRequests),\n headers: await data.model.getGetEmbeddingsHeaders(data.config, data.embeddingRequests),\n data: await data.model.getGetEmbeddingsData(data.config, data.embeddingRequests),\n };\n\n if (!isRunningInBrowser()) {\n providerRequest.headers = {\n ...providerRequest.headers,\n source: \"adaline.ai\",\n };\n }\n\n if (data.customHeaders) {\n providerRequest.headers = {\n ...providerRequest.headers,\n ...data.customHeaders,\n };\n }\n\n logger?.debug(\"handleGetEmbeddings providerRequest: \", { providerRequest });\n const cacheKey = getCacheKeyHash(`get-embeddings:${providerRequest.url}:${data.model.modelSchema.name}`, providerData);\n if (data.enableCache) {\n logger?.debug(\"handleGetEmbeddings checking cache\");\n const cachedResponse = await request.cache.get(cacheKey);\n if (cachedResponse) {\n cachedResponse.cached = true;\n logger?.debug(\"handleGetEmbeddings cached hit\");\n span?.setAttribute(\"cached\", true);\n span?.setStatus({ code: SpanStatusCode.OK });\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsCached\",\n request.metadataForCallbacks,\n cachedResponse\n );\n logger?.debug(\"handleGetEmbeddings cached response: \", { cachedResponse });\n return cachedResponse;\n }\n }\n\n logger?.debug(\"handleGetEmbeddings cache miss\");\n const now = Date.now();\n const providerResponse = await client.post(\n providerRequest.url,\n providerRequest.data,\n providerRequest.headers,\n undefined,\n handlerTelemetryContext\n );\n const latencyInMs = Date.now() - now;\n logger?.debug(\"handleGetEmbeddings providerResponse: \", { providerResponse });\n\n const response: GetEmbeddingsHandlerResponseType = {\n request: providerData,\n response: data.model.transformGetEmbeddingsResponse(providerResponse.data),\n cached: false,\n latencyInMs,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: providerResponse,\n },\n };\n\n logger?.debug(\"handleGetEmbeddings response: \", { response });\n if (data.enableCache) {\n await request.cache.set(cacheKey, response);\n logger?.debug(\"handleGetEmbeddings response cached\");\n }\n\n span?.setAttribute(\"cached\", false);\n span?.setStatus({ code: SpanStatusCode.OK });\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsComplete\",\n request.metadataForCallbacks,\n response\n );\n\n return response;\n } catch (error) {\n logger?.warn(\"handleGetEmbeddings error: \", { error });\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n // span?.setStatus({ code: SpanStatusCode.ERROR, message: safeError.message });\n safelyInvokeCallbacks<GetEmbeddingsCallbackType, keyof GetEmbeddingsCallbackType>(\n callbacks,\n \"onGetEmbeddingsError\",\n request.metadataForCallbacks,\n safeError\n );\n\n throw safeError;\n } finally {\n span?.end();\n }\n };\n\n if (!telemetryContext) {\n return await _handleGetEmbeddings();\n }\n\n return await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"get-embeddings.handler\", async (span: Span) => {\n return await _handleGetEmbeddings(span);\n });\n });\n}\n\nexport { handleGetEmbeddings };\n","import { z } from \"zod\";\n\nimport { Message, Tool, ToolCallContentType, ToolResponseContent, ToolResponseContentType } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\n\nconst GetToolResponsesHandlerRequest = z.object({\n messages: z.array(Message()),\n tools: z.array(Tool()),\n customHeaders: z.record(z.string()).optional(),\n callbacks: z.array(z.custom<GetToolResponsesCallbackType>()).nonempty().optional(),\n metadataForCallbacks: z.any().optional(),\n abortSignal: z.instanceof(AbortSignal).optional(),\n});\ntype GetToolResponsesHandlerRequestType = z.infer<typeof GetToolResponsesHandlerRequest>;\n\nconst GetToolResponsesHandlerResponse = z.object({\n toolResponses: z.record(z.string(), ToolResponseContent()),\n cached: z.boolean(),\n latencyInMs: z.number().int().positive(),\n metadataForCallbacks: z.any().optional(),\n});\ntype GetToolResponsesHandlerResponseType = z.infer<typeof GetToolResponsesHandlerResponse>;\n\ntype GetToolResponsesCallbackType<M = any> = {\n onGetToolResponseStart?: (toolCall: ToolCallContentType, metadata?: M) => Promise<void> | void;\n onGetToolResponseCached?: (toolCall: ToolCallContentType, toolResponse: ToolResponseContentType, metadata?: M) => Promise<void> | void;\n onGetToolResponseComplete?: (toolCall: ToolCallContentType, toolResponse: ToolResponseContentType, metadata?: M) => Promise<void> | void;\n onGetToolResponseError?: (\n toolCall: ToolCallContentType, \n toolResponse: ToolResponseContentType,\n error?: GatewayError,\n metadata?: M,\n ) => Promise<void> | void;\n};\n\nexport {\n GetToolResponsesHandlerRequest,\n GetToolResponsesHandlerResponse,\n type GetToolResponsesHandlerRequestType,\n type GetToolResponsesHandlerResponseType,\n type GetToolResponsesCallbackType,\n};\n","import { Context, context, Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nimport { ToolCallContentType, ToolResponseContentType } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors/errors\";\nimport { HttpClient, HttpRequestError, LoggerManager, TelemetryManager } from \"../../plugins\";\nimport { castToError, safelyInvokeCallbacks } from \"../../utils\";\nimport {\n GetToolResponsesHandlerRequest,\n GetToolResponsesHandlerRequestType,\n GetToolResponsesHandlerResponseType,\n} from \"./get-tool-responses.types\";\n\nasync function handleGetToolResponses(\n request: GetToolResponsesHandlerRequestType,\n client: HttpClient,\n telemetryContext?: Context\n): Promise<GetToolResponsesHandlerResponseType> {\n const logger = LoggerManager.getLogger();\n const _handleGetToolResponses = async (span?: Span) => {\n logger?.debug(\"handleGetToolResponses invoked\");\n logger?.debug(\"handleGetToolResponses request: \", { request });\n const data = GetToolResponsesHandlerRequest.parse(request);\n const tools = data.tools;\n const messages = data.messages;\n\n const toolCalls = messages.reduce((acc, message) => {\n const contentToolCalls = message.content.reduce((acc_, content) => {\n if (content.modality === \"tool-call\") {\n acc_.push(content);\n }\n return acc_;\n }, [] as ToolCallContentType[]);\n return [...acc, ...contentToolCalls];\n }, [] as ToolCallContentType[]);\n\n const callbacks = request.callbacks || [];\n const handlerTelemetryContext = context.active();\n\n try {\n const now = Date.now();\n\n const toolCallPromises = toolCalls.map(async (toolCall) => {\n const tool = tools.find((t) => t.definition.schema.name === toolCall.name);\n if (!tool?.request || tool.request.type !== \"http\") {\n return null;\n }\n\n const requestSettings = tool.request;\n const requestMethod = requestSettings.method.toLowerCase();\n const retrySettings = requestSettings.retry || {\n maxAttempts: 3,\n initialDelay: 1000,\n exponentialFactor: 2,\n };\n\n return await context.with(handlerTelemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(`tool-call.${toolCall.name}`, async (span: Span) => {\n try {\n span.setAttribute(\"tool.name\", toolCall.name);\n span.setAttribute(\"tool.id\", toolCall.id);\n\n if (callbacks) {\n await safelyInvokeCallbacks(callbacks, \"onGetToolResponseStart\", toolCall, request.metadataForCallbacks);\n }\n\n let queryParams: Record<string, string> | undefined;\n let body: Record<string, unknown> | undefined;\n try {\n const bodyOrQuery = JSON.parse(toolCall.arguments);\n if (requestMethod === \"get\") {\n queryParams = bodyOrQuery as Record<string, string>;\n } else {\n body = bodyOrQuery as Record<string, unknown>;\n }\n } catch (error) {\n const warningMessage =\n `executeToolCalls: Error parsing arguments for tool call: ${toolCall.name},` +\n ` arguments: ${toolCall.arguments}, error: ${error instanceof Error ? error.message : String(error)}`;\n logger?.warn(warningMessage);\n }\n\n let response;\n const url = requestSettings.url;\n const headers = {\n ...requestSettings.headers,\n \"Content-Type\": \"application/json\",\n }\n\n if (requestSettings.proxyUrl) {\n // encapsulate the original request for the proxy request\n response = await client.post(\n requestSettings.proxyUrl,\n {\n method: requestMethod,\n url,\n headers,\n ...(requestMethod === \"get\" ? { query: queryParams } : {}),\n ...(requestMethod === \"post\" ? { body } : {}),\n },\n requestSettings.proxyHeaders,\n { retry: retrySettings },\n handlerTelemetryContext\n );\n } else {\n if (requestMethod === \"get\") {\n response = await client.get(\n url,\n queryParams,\n headers,\n { retry: retrySettings },\n handlerTelemetryContext\n );\n } else if (requestMethod === \"post\") {\n response = await client.post(\n url,\n body,\n headers,\n { retry: retrySettings },\n handlerTelemetryContext\n );\n } else {\n throw new GatewayError(`Unsupported HTTP method: ${requestSettings.method}`, 400);\n }\n }\n span.setStatus({ code: SpanStatusCode.OK });\n\n const toolResponse = {\n modality: \"tool-response\" as const,\n index: toolCall.index,\n id: toolCall.id,\n name: toolCall.name,\n data: JSON.stringify(response.data),\n apiResponse: {\n statusCode: response.status.code,\n },\n } as ToolResponseContentType;\n\n if (callbacks) {\n await safelyInvokeCallbacks(\n callbacks, \n \"onGetToolResponseComplete\", \n toolCall, \n toolResponse, \n request.metadataForCallbacks\n );\n }\n\n return toolResponse;\n } catch (error) {\n const safeError = castToError(error);\n if (callbacks) {\n await safelyInvokeCallbacks(callbacks, \"onGetToolResponseError\", toolCall, request.metadataForCallbacks, safeError);\n }\n\n span.setStatus({ code: SpanStatusCode.ERROR, message: safeError.message });\n logger?.warn(`Tool call ${toolCall.name} failed:`, error);\n\n const toolResponse = {\n modality: \"tool-response\" as const,\n index: toolCall.index,\n id: toolCall.id,\n name: toolCall.name,\n data: safeError.message,\n apiResponse: {\n statusCode: safeError.status,\n },\n };\n\n if (callbacks) {\n await safelyInvokeCallbacks(\n callbacks,\n \"onGetToolResponseError\",\n toolCall,\n toolResponse,\n request.metadataForCallbacks,\n safeError\n );\n }\n\n return toolResponse;\n } finally {\n span.end();\n }\n });\n });\n });\n\n const allToolResponses = await Promise.all(toolCallPromises);\n const toolResponses = allToolResponses\n .filter((result) => result !== null)\n .reduce(\n (acc, result) => {\n acc[result.id] = result;\n return acc;\n },\n {} as Record<string, ToolResponseContentType>\n );\n\n const latencyInMs = Date.now() - now;\n logger?.debug(\"handleGetToolResponses toolResponses: \", { toolResponses });\n\n const response: GetToolResponsesHandlerResponseType = {\n toolResponses,\n cached: false,\n latencyInMs,\n metadataForCallbacks: request.metadataForCallbacks,\n };\n\n logger?.debug(\"handleGetToolResponses response: \", { response });\n span?.setStatus({ code: SpanStatusCode.OK });\n\n return response;\n } catch (error) {\n logger?.warn(\"handleGetToolResponses error: \", { error });\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n span?.setStatus({ code: SpanStatusCode.ERROR, message: safeError.message });\n throw safeError;\n } finally {\n span?.end();\n }\n };\n\n if (!telemetryContext) {\n return await _handleGetToolResponses();\n }\n\n return await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"get-tool-responses.handler\", async (span: Span) => {\n return await _handleGetToolResponses(span);\n });\n });\n}\n\nexport { handleGetToolResponses };\n","import { z } from \"zod\";\n\nimport { ChatModelV1 } from \"@adaline/provider\";\nimport { ChatResponse } from \"@adaline/types\";\n\nconst ProxyCompleteChatHandlerRequest = z.object({\n model: z.custom<ChatModelV1>(),\n data: z.any(),\n headers: z.record(z.string()),\n query: z.record(z.string()).optional(),\n});\n\ntype ProxyCompleteChatHandlerRequestType = z.infer<typeof ProxyCompleteChatHandlerRequest>;\n\nconst ProxyCompleteChatHandlerResponse = z.object({\n request: z.any(), // original proxy request from some SDK\n providerRequest: z.object({\n url: z.string().url(),\n headers: z.record(z.string()),\n data: z.any(),\n }), // request sent to provider\n providerResponse: z.any(), // response received from provider\n transformedResponse: z.optional(ChatResponse), // response received in Adaline chat types\n});\ntype ProxyCompleteChatHandlerResponseType = z.infer<typeof ProxyCompleteChatHandlerResponse>;\n\nexport {\n ProxyCompleteChatHandlerRequest,\n ProxyCompleteChatHandlerResponse,\n type ProxyCompleteChatHandlerRequestType,\n type ProxyCompleteChatHandlerResponseType,\n};\n","import { Context, context, Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nimport { GatewayError } from \"../../errors/errors\";\nimport { HttpClient, HttpRequestError, LoggerManager, TelemetryManager } from \"../../plugins\";\nimport { castToError } from \"../../utils\";\nimport type { ProxyCompleteChatHandlerRequestType, ProxyCompleteChatHandlerResponseType } from \"./proxy-complete-chat.types\";\nimport { ProxyCompleteChatHandlerRequest } from \"./proxy-complete-chat.types\";\n\nasync function handleProxyCompleteChat(\n request: ProxyCompleteChatHandlerRequestType,\n client: HttpClient,\n telemetryContext?: Context\n): Promise<ProxyCompleteChatHandlerResponseType> {\n const logger = LoggerManager.getLogger();\n const _handleProxyCompleteChat = async (span?: Span) => {\n logger?.debug(\"handleProxyCompleteChat invoked\");\n logger?.debug(\"handleProxyCompleteChat request: \", { request });\n const data = ProxyCompleteChatHandlerRequest.parse(request);\n const handlerTelemetryContext = context.active();\n\n try {\n data.headers = { ...data.headers, source: \"adaline.ai\" };\n\n const providerRequest = {\n url: await data.model.getProxyCompleteChatUrl(data.data, data.headers, data.query),\n headers: await data.model.getProxyCompleteChatHeaders(data.data, data.headers, data.query),\n data: data.data,\n };\n logger?.debug(\"handleProxyCompleteChat providerRequest: \", { providerRequest });\n\n const providerResponse = await client.post(\n providerRequest.url,\n providerRequest.data,\n providerRequest.headers,\n undefined,\n handlerTelemetryContext\n );\n logger?.debug(\"handleProxyCompleteChat providerResponse: \", { providerResponse });\n\n let transformedResponse;\n try {\n transformedResponse = data.model.transformCompleteChatResponse(providerResponse.data);\n } catch (transformationError) {\n logger?.warn(\"handleProxyCompleteChat transformation error: \", { transformationError });\n }\n\n const response: ProxyCompleteChatHandlerResponseType = {\n request: { header: data.headers, data: data.data, query: data.query },\n providerRequest: providerRequest,\n providerResponse: providerResponse,\n transformedResponse: transformedResponse,\n };\n\n logger?.debug(\"handleProxyCompleteChat response: \", { response });\n\n span?.setStatus({ code: SpanStatusCode.OK });\n\n return response;\n } catch (error) {\n logger?.warn(\"handleProxyCompleteChat error: \", { error });\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n throw safeError;\n } finally {\n span?.end();\n }\n };\n\n if (!telemetryContext) {\n return await _handleProxyCompleteChat();\n }\n\n return await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"proxy-complete-chat.handler\", async (span: Span) => {\n return await _handleProxyCompleteChat(span);\n });\n });\n}\n\nexport { handleProxyCompleteChat };\n","import { z } from \"zod\";\n\nimport { EmbeddingModelV1 } from \"@adaline/provider\";\nimport { EmbeddingResponse } from \"@adaline/types\";\n\nconst ProxyGetEmbeddingsHandlerRequest = z.object({\n model: z.custom<EmbeddingModelV1>(),\n data: z.any(),\n headers: z.record(z.string()),\n query: z.record(z.string()).optional(),\n});\n\ntype ProxyGetEmbeddingsHandlerRequestType = z.infer<typeof ProxyGetEmbeddingsHandlerRequest>;\n\nconst ProxyGetEmbeddingsHandlerResponse = z.object({\n request: z.any(), // Original proxy request from SDK\n providerRequest: z.object({\n url: z.string().url(),\n headers: z.record(z.string()),\n data: z.any(),\n }), // Actual request sent to provider\n providerResponse: z.any(), // Raw response from provider\n transformedResponse: z.optional(EmbeddingResponse), // Response in Adaline embedding types\n});\n\ntype ProxyGetEmbeddingsHandlerResponseType = z.infer<typeof ProxyGetEmbeddingsHandlerResponse>;\n\nexport {\n ProxyGetEmbeddingsHandlerRequest,\n ProxyGetEmbeddingsHandlerResponse,\n type ProxyGetEmbeddingsHandlerRequestType,\n type ProxyGetEmbeddingsHandlerResponseType,\n};\n","import { Context, context, Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nimport { GatewayError } from \"../../errors/errors\";\nimport { HttpClient, HttpRequestError, LoggerManager, TelemetryManager } from \"../../plugins\";\nimport { castToError } from \"../../utils\";\nimport type { ProxyGetEmbeddingsHandlerRequestType, ProxyGetEmbeddingsHandlerResponseType } from \"./proxy-get-embeddings.types\";\nimport { ProxyGetEmbeddingsHandlerRequest } from \"./proxy-get-embeddings.types\";\n\nasync function handleProxyGetEmbeddings(\n request: ProxyGetEmbeddingsHandlerRequestType,\n client: HttpClient,\n telemetryContext?: Context\n): Promise<ProxyGetEmbeddingsHandlerResponseType> {\n const logger = LoggerManager.getLogger();\n const _handleProxyGetEmbeddings = async (span?: Span) => {\n logger?.debug(\"handleProxyGetEmbeddings invoked\");\n logger?.debug(\"handleProxyGetEmbeddings request: \", { request });\n const data = ProxyGetEmbeddingsHandlerRequest.parse(request);\n const handlerTelemetryContext = context.active();\n\n try {\n const providerRequest = {\n url: await data.model.getGetEmbeddingsUrl(),\n headers: data.headers,\n data: data.data,\n };\n\n providerRequest.headers = {\n ...providerRequest.headers,\n source: \"adaline.ai\",\n };\n\n const sanitizedProviderRequest = { ...providerRequest };\n delete sanitizedProviderRequest.headers.host;\n delete sanitizedProviderRequest.headers[\"content-length\"];\n\n logger?.debug(\"handleProxyGetEmbeddings providerRequest: \", { providerRequest });\n\n const providerResponse = await client.post(\n sanitizedProviderRequest.url,\n sanitizedProviderRequest.data,\n sanitizedProviderRequest.headers,\n undefined,\n handlerTelemetryContext\n );\n logger?.debug(\"handleProxyGetEmbeddings providerResponse: \", { providerResponse });\n\n let transformedResponse;\n try {\n transformedResponse = data.model.transformGetEmbeddingsResponse(providerResponse.data);\n } catch (transformationError) {\n logger?.warn(\"handleProxyGetEmbeddings transformation error: \", { transformationError });\n }\n\n const response: ProxyGetEmbeddingsHandlerResponseType = {\n request: providerRequest,\n providerRequest: sanitizedProviderRequest,\n providerResponse: providerResponse,\n transformedResponse: transformedResponse,\n };\n\n logger?.debug(\"handleProxyGetEmbeddings response: \", { response });\n\n span?.setStatus({ code: SpanStatusCode.OK });\n\n return response;\n } catch (error) {\n logger?.warn(\"handleProxyGetEmbeddings error: \", { error });\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n throw safeError;\n } finally {\n span?.end();\n }\n };\n\n if (!telemetryContext) {\n return await _handleProxyGetEmbeddings();\n }\n\n return await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"proxy-get-embeddings.handler\", async (span: Span) => {\n return await _handleProxyGetEmbeddings(span);\n });\n });\n}\n\nexport { handleProxyGetEmbeddings };\n","import { z } from \"zod\";\n\nimport { ChatModelV1 } from \"@adaline/provider\";\nimport { PartialChatResponse } from \"@adaline/types\";\n\nconst ProxyStreamChatHandlerRequest = z.object({\n model: z.custom<ChatModelV1>(),\n data: z.any(),\n headers: z.record(z.string()),\n query: z.record(z.string()).optional(),\n});\n\ntype ProxyStreamChatHandlerRequestType = z.infer<typeof ProxyStreamChatHandlerRequest>;\n\nconst ProxyStreamChatHandlerResponse = z.object({\n request: z.any(), // original proxy request from some SDK\n providerRequest: z.object({\n url: z.string().url(),\n headers: z.record(z.string()),\n data: z.any(),\n }), // request sent to provider\n providerResponse: z.any(), // raw chunk from provider\n transformedResponse: z.array(PartialChatResponse).optional(), // transformed partial response\n});\n\ntype ProxyStreamChatHandlerResponseType = z.infer<typeof ProxyStreamChatHandlerResponse>;\n\nexport {\n ProxyStreamChatHandlerRequest,\n ProxyStreamChatHandlerResponse,\n type ProxyStreamChatHandlerRequestType,\n type ProxyStreamChatHandlerResponseType,\n};\n","import { Context, context, Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nimport { PartialChatResponseType } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors/errors\";\nimport { HttpClient, HttpRequestError, LoggerManager, TelemetryManager } from \"../../plugins\";\nimport { castToError } from \"../../utils\";\nimport type { ProxyStreamChatHandlerRequestType, ProxyStreamChatHandlerResponseType } from \"./proxy-stream-chat.types\";\nimport { ProxyStreamChatHandlerRequest } from \"./proxy-stream-chat.types\";\n\nasync function* handleProxyStreamChat(\n request: ProxyStreamChatHandlerRequestType,\n client: HttpClient,\n telemetryContext?: Context\n): AsyncGenerator<ProxyStreamChatHandlerResponseType, void, unknown> {\n const logger = LoggerManager.getLogger();\n const _handleProxyStreamChat = async function* (span?: Span): AsyncGenerator<ProxyStreamChatHandlerResponseType, void, unknown> {\n logger?.debug(\"handleProxyStreamChat invoked\");\n logger?.debug(\"handleProxyStreamChat request: \", { request });\n const handlerTelemetryContext = context.active();\n\n const data = ProxyStreamChatHandlerRequest.parse(request);\n\n try {\n data.headers = { ...data.headers, source: \"adaline.ai\" };\n const providerRequest = {\n url: await data.model.getProxyStreamChatUrl(data.data, data.headers, data.query),\n headers: await data.model.getProxyStreamChatHeaders(data.data, data.headers, data.query),\n data: data.data,\n };\n\n logger?.debug(\"handleProxyStreamChat providerRequest: \", { providerRequest });\n\n let buffer = \"\";\n for await (const chunk of client.stream(\n providerRequest.url,\n \"post\",\n providerRequest.data,\n providerRequest.headers,\n undefined,\n handlerTelemetryContext\n )) {\n let accumulatedPartialResponse: PartialChatResponseType[] | undefined = [];\n try {\n for await (const transformed of data.model.transformProxyStreamChatResponseChunk(\n chunk as string,\n buffer,\n data.data,\n data.headers,\n data.query\n )) {\n buffer = transformed.buffer;\n\n // Check if the partial response contains messages or usage information\n const hasMessages = transformed.partialResponse?.partialMessages?.length > 0;\n // Assuming usage information might be present in the partialResponse object, e.g., transformed.partialResponse.usage\n const hasUsage = transformed.partialResponse?.usage != null; // Adjust this check based on the actual structure of usage data\n\n if (hasMessages || hasUsage) {\n accumulatedPartialResponse.push(transformed.partialResponse);\n }\n }\n } catch (transformationError) {\n logger?.warn(\"handleProxyStreamChat transformation error\", { transformationError });\n accumulatedPartialResponse = undefined;\n }\n const streamResponse: ProxyStreamChatHandlerResponseType = {\n request: { header: data.headers, data: data.data, query: data.query },\n providerRequest: providerRequest,\n providerResponse: chunk,\n transformedResponse: accumulatedPartialResponse,\n };\n\n logger?.debug(\"handleProxyStreamChat streamResponse: \", { streamResponse });\n yield streamResponse;\n }\n\n span?.setStatus({ code: SpanStatusCode.OK });\n } catch (error) {\n logger?.warn(\"handleProxyStreamChat error: \", { error });\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n throw safeError;\n } finally {\n span?.end();\n }\n };\n\n if (!telemetryContext) {\n return yield* _handleProxyStreamChat();\n }\n\n return yield* await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"proxy-stream-chat.handler\", async (span: Span) => {\n return await _handleProxyStreamChat(span);\n });\n });\n}\n\nexport { handleProxyStreamChat };\n","import { z } from \"zod\";\n\nimport { ChatModelV1 } from \"@adaline/provider\";\nimport { Config, Message, PartialChatResponse, Tool } from \"@adaline/types\";\n\nimport { GatewayError } from \"../../errors\";\nimport { HttpRequestError } from \"../../plugins\";\n\nconst StreamChatHandlerRequest = z.object({\n model: z.custom<ChatModelV1>(),\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n customHeaders: z.record(z.string()).optional(),\n callbacks: z.array(z.custom<StreamChatCallbackType>()).nonempty().optional(),\n metadataForCallbacks: z.any().optional(),\n abortSignal: z.instanceof(AbortSignal).optional(),\n});\ntype StreamChatHandlerRequestType = z.infer<typeof StreamChatHandlerRequest>;\n\nconst StreamChatHandlerResponse = z.object({\n request: z.object({\n config: Config(),\n messages: z.array(Message()),\n tools: z.array(Tool()).optional(),\n }),\n response: PartialChatResponse,\n metadataForCallbacks: z.any().optional(),\n provider: z.object({\n request: z.any(),\n response: z.any(),\n }),\n});\ntype StreamChatHandlerResponseType = z.infer<typeof StreamChatHandlerResponse>;\n\ntype StreamChatCallbackType<M = any> = {\n onStreamStart?: (metadata?: M) => Promise<void> | void;\n onStreamFirstResponse?: (metadata?: M, response?: StreamChatHandlerResponseType, chunk?: unknown) => Promise<void> | void;\n onStreamNewResponse?: (metadata?: M, response?: StreamChatHandlerResponseType, chunk?: unknown) => Promise<void> | void;\n onStreamEnd?: (metadata?: M, response?: StreamChatHandlerResponseType) => Promise<void> | void;\n onStreamError?: (metadata?: M, error?: GatewayError | HttpRequestError) => Promise<void> | void;\n};\n\nexport {\n StreamChatHandlerRequest,\n StreamChatHandlerResponse,\n type StreamChatCallbackType,\n type StreamChatHandlerRequestType,\n type StreamChatHandlerResponseType,\n};\n","import { Context, context, Span, SpanStatusCode } from \"@opentelemetry/api\";\n\nimport { GatewayError } from \"../../errors/errors\";\nimport { HttpClient, HttpRequestError, LoggerManager, TelemetryManager } from \"../../plugins\";\nimport { castToError, isRunningInBrowser, safelyInvokeCallbacks } from \"../../utils\";\nimport {\n StreamChatCallbackType,\n StreamChatHandlerRequest,\n StreamChatHandlerRequestType,\n StreamChatHandlerResponseType,\n} from \"./stream-chat.types\";\n\nasync function* handleStreamChat<M>(\n request: StreamChatHandlerRequestType,\n client: HttpClient,\n telemetryContext?: Context\n): AsyncGenerator<StreamChatHandlerResponseType, void, unknown> {\n const logger = LoggerManager.getLogger();\n const _handleStreamChat = async function* (span?: Span): AsyncGenerator<StreamChatHandlerResponseType, void, unknown> {\n logger?.debug(\"handleStreamChat invoked\");\n logger?.debug(\"handleStreamChat request: \", { request });\n const data = StreamChatHandlerRequest.parse(request);\n const callbacks = request.callbacks || [];\n const handlerTelemetryContext = context.active();\n\n const stable = {\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n };\n\n try {\n safelyInvokeCallbacks<StreamChatCallbackType, keyof StreamChatCallbackType>(callbacks, \"onStreamStart\", request.metadataForCallbacks);\n\n const providerRequest = {\n url: await data.model.getStreamChatUrl(data.config, data.messages, data.tools),\n headers: await data.model.getStreamChatHeaders(data.config, data.messages, data.tools),\n data: await data.model.getStreamChatData(data.config, data.messages, data.tools),\n };\n\n if (!isRunningInBrowser()) {\n providerRequest.headers = {\n ...providerRequest.headers,\n source: \"adaline.ai\",\n };\n }\n\n if (data.customHeaders) {\n providerRequest.headers = {\n ...providerRequest.headers,\n ...data.customHeaders,\n };\n }\n logger?.debug(\"handleStreamChat providerRequest: \", { providerRequest });\n\n let buffer = \"\";\n let isFirstResponse = true;\n for await (const chunk of client.stream(\n providerRequest.url,\n \"post\",\n providerRequest.data,\n providerRequest.headers,\n {\n abortSignal: request.abortSignal,\n },\n handlerTelemetryContext\n )) {\n for await (const transformed of data.model.transformStreamChatResponseChunk(chunk as string, buffer)) {\n // Update the buffer with the remainder returned by the transformer\n buffer = transformed.buffer;\n\n // Check if the partial response contains messages or usage information\n const hasMessages = transformed.partialResponse?.partialMessages?.length > 0;\n // Assuming usage information might be present in the partialResponse object, e.g., transformed.partialResponse.usage\n const hasUsage = transformed.partialResponse?.usage != null; // Adjust this check based on the actual structure of usage data\n\n // Yield the response if it contains messages or usage data\n if (hasMessages || hasUsage) {\n const streamResponse = {\n request: stable,\n response: transformed.partialResponse,\n metadataForCallbacks: request.metadataForCallbacks,\n provider: {\n request: providerRequest,\n response: chunk,\n },\n };\n\n safelyInvokeCallbacks<StreamChatCallbackType<M>, keyof StreamChatCallbackType<M>>(\n callbacks,\n isFirstResponse ? \"onStreamFirstResponse\" : \"onStreamNewResponse\",\n request.metadataForCallbacks,\n streamResponse\n );\n\n if (isFirstResponse) {\n isFirstResponse = false;\n }\n\n logger?.debug(\"handleStreamChat streamResponse: \", { streamResponse });\n yield streamResponse;\n }\n // If the transformed part contains neither messages nor usage,\n // we simply continue with the updated buffer to process the next part or chunk.\n }\n }\n\n span?.setStatus({ code: SpanStatusCode.OK });\n safelyInvokeCallbacks<StreamChatCallbackType<M>, keyof StreamChatCallbackType<M>>(\n callbacks,\n \"onStreamEnd\",\n request.metadataForCallbacks\n );\n } catch (error) {\n logger?.warn(\"handleStreamChat error: \", { error });\n let safeError: GatewayError | HttpRequestError;\n\n if (HttpRequestError.isHttpRequestError(error)) {\n safeError = error;\n } else if (error instanceof GatewayError) {\n safeError = error;\n } else {\n safeError = castToError(error);\n }\n\n // span?.setStatus({ code: SpanStatusCode.ERROR, message: safeError.message });\n safelyInvokeCallbacks<StreamChatCallbackType<M>, keyof StreamChatCallbackType<M>>(\n callbacks,\n \"onStreamError\",\n request.metadataForCallbacks,\n safeError\n );\n\n throw safeError;\n } finally {\n span?.end();\n }\n };\n\n if (!telemetryContext) {\n return yield* _handleStreamChat();\n }\n\n return yield* await context.with(telemetryContext, async () => {\n const tracer = TelemetryManager.getTracer();\n return await tracer.startActiveSpan(\"stream-chat.handler\", async (span: Span) => {\n return await _handleStreamChat(span);\n });\n });\n}\n\nexport { handleStreamChat };\n","import { Context, context, Meter, Span, SpanStatusCode, trace, Tracer } from \"@opentelemetry/api\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { GatewayError } from \"./errors\";\nimport {\n GatewayCompleteChatRequest,\n GatewayCompleteChatRequestType,\n GatewayGetChatUsageCostRequest,\n GatewayGetChatUsageCostRequestType,\n GatewayGetEmbeddingsRequest,\n GatewayGetEmbeddingsRequestType,\n GatewayGetToolResponsesRequest,\n GatewayGetToolResponsesRequestType,\n GatewayOptions,\n GatewayOptionsType,\n GatewayProxyCompleteChatRequest,\n GatewayProxyCompleteChatRequestType,\n GatewayProxyGetEmbeddingsRequest,\n GatewayProxyGetEmbeddingsRequestType,\n GatewayProxyStreamChatRequest,\n GatewayProxyStreamChatRequestType,\n GatewayStreamChatRequest,\n GatewayStreamChatRequestType,\n} from \"./gateway.types\";\nimport {\n CompleteChatHandlerResponseType,\n GetChatUsageCostHandlerResponseType,\n GetEmbeddingsHandlerResponseType,\n GetToolResponsesHandlerResponseType,\n ProxyCompleteChatHandlerResponseType,\n ProxyGetEmbeddingsHandlerResponseType,\n ProxyStreamChatHandlerResponseType,\n StreamChatHandlerResponseType,\n} from \"./handlers\";\nimport { handleCompleteChat } from \"./handlers/complete-chat/complete-chat.handler\";\nimport { handleGetChatUsageCost } from \"./handlers/get-chat-usage-cost/get-chat-usage-cost.handler\";\nimport { handleGetEmbeddings } from \"./handlers/get-embeddings/get-embeddings.handler\";\nimport { handleGetToolResponses } from \"./handlers/get-tool-responses/get-tool-responses.handler\";\nimport { handleProxyCompleteChat } from \"./handlers/proxy-complete-chat/proxy-complete-chat.handler\";\nimport { handleProxyGetEmbeddings } from \"./handlers/proxy-get-embeddings/proxy-get-embeddings.handler\";\nimport { handleProxyStreamChat } from \"./handlers/proxy-stream-chat/proxy-stream-chat.handler\";\nimport { handleStreamChat } from \"./handlers/stream-chat/stream-chat.handler\";\nimport { Cache, HttpClient, IsomorphicHttpClient, LRUCache, Queue, QueueTask, SimpleQueue } from \"./plugins\";\nimport { AnalyticsManager, AnalyticsRecorder } from \"./plugins/analytics\";\nimport { Logger, LoggerManager } from \"./plugins/logger\";\nimport { TelemetryManager } from \"./plugins/telemetry\";\nimport { isRunningInBrowser } from \"./utils\";\n\nclass Gateway {\n private options: GatewayOptionsType;\n\n private logger?: Logger;\n private tracer: Tracer;\n private meter: Meter;\n private analytics: AnalyticsRecorder;\n\n private httpClient: HttpClient;\n private queues: {\n completeChat: Queue<GatewayCompleteChatRequestType, CompleteChatHandlerResponseType>;\n getEmbeddings: Queue<GatewayGetEmbeddingsRequestType, GetEmbeddingsHandlerResponseType>;\n proxyCompleteChat: Queue<GatewayProxyCompleteChatRequestType, ProxyCompleteChatHandlerResponseType>;\n proxyGetEmbeddings: Queue<GatewayProxyGetEmbeddingsRequestType, ProxyGetEmbeddingsHandlerResponseType>;\n };\n private caches: {\n completeChat: Cache<CompleteChatHandlerResponseType>;\n getEmbeddings: Cache<GetEmbeddingsHandlerResponseType>;\n getToolResponses: Cache<GetToolResponsesHandlerResponseType>;\n };\n\n constructor(options: GatewayOptionsType = {}) {\n if (!options.dangerouslyAllowBrowser && isRunningInBrowser()) {\n throw new GatewayError(\n \"It looks like you're running in a browser-like environment. \\\n This is disabled by default, as it risks exposing your provider secrets to attackers. \\\n If you understand the risks and have appropriate mitigation in place, \\\n you can set the `dangerouslyAllowBrowser` option to `true`.\"\n );\n }\n\n this.options = GatewayOptions.parse(options);\n\n LoggerManager.setLogger(options.logger);\n this.logger = options.logger;\n\n this.analytics = AnalyticsManager.getAnalyticsRecorder(\n this.options.enableAnalytics === undefined ? true : this.options.enableAnalytics\n );\n\n TelemetryManager.setTracer(options.telemetry?.tracer);\n this.tracer = TelemetryManager.getTracer();\n\n TelemetryManager.setMeter(options.telemetry?.meter);\n this.meter = TelemetryManager.getMeter();\n\n const queueOptions = {\n maxConcurrentTasks: this.options.queueOptions?.maxConcurrentTasks || 4,\n retryCount: this.options.queueOptions?.retryCount || 3,\n retry: this.options.queueOptions?.retry || {\n initialDelay: 3500,\n exponentialFactor: 2,\n },\n timeout: this.options.queueOptions?.timeout || 120000,\n };\n\n this.queues = {\n completeChat: new SimpleQueue(queueOptions),\n getEmbeddings: new SimpleQueue(queueOptions),\n proxyCompleteChat: new SimpleQueue(queueOptions),\n proxyGetEmbeddings: new SimpleQueue(queueOptions),\n };\n\n this.options.enableProxyAgent = this.options.enableProxyAgent === undefined ? true : this.options.enableProxyAgent;\n\n // httpClient timeout is 90% of queue timeout\n this.httpClient =\n options.httpClient ||\n new IsomorphicHttpClient({ timeoutInMilliseconds: queueOptions.timeout * 0.9, enableProxyAgent: this.options.enableProxyAgent });\n\n this.caches = {\n completeChat: options.completeChatCache || new LRUCache<CompleteChatHandlerResponseType>(),\n getEmbeddings: options.getEmbeddingsCache || new LRUCache<GetEmbeddingsHandlerResponseType>(),\n getToolResponses: options.getToolResponsesCache || new LRUCache<GetToolResponsesHandlerResponseType>(),\n };\n this.logger?.debug(\"gateway initialized\");\n }\n\n async completeChat(request: GatewayCompleteChatRequestType): Promise<CompleteChatHandlerResponseType> {\n this.logger?.info(\"gateway.completeChat invoked\");\n this.logger?.debug(\"request: \", { request });\n const data = GatewayCompleteChatRequest.parse(request);\n const modelName = data.model.modelSchema.name;\n // const counter = this.meter.createCounter(\"completeChat.counter\");\n // counter.add(1, { modelName });\n return await this.tracer.startActiveSpan(\"complete-chat\", async (span: Span) => {\n span.setAttribute(\"modelName\", modelName);\n return new Promise<CompleteChatHandlerResponseType>((resolve, reject) => {\n const task: QueueTask<GatewayCompleteChatRequestType, CompleteChatHandlerResponseType> = {\n id: uuidv4(),\n request: data,\n cache: this.caches.completeChat,\n resolve: (response: CompleteChatHandlerResponseType) => {\n this.analytics.record(\"completeChat\", \"success\", { modelName, usage: response.response.usage || {} });\n resolve(response);\n },\n reject: (error: any) => {\n console.log(\"completeChat error\", error);\n this.analytics.record(\"completeChat\", \"error\", { modelName });\n reject(error);\n },\n execute: this.executeCompleteChat.bind(this),\n telemetryContext: context.active(),\n };\n this.queues.completeChat.enqueue(task);\n this.logger?.debug(`gateway.completeChat task enqueued, id: ${task.id}`);\n });\n });\n }\n\n private async executeCompleteChat(\n request: GatewayCompleteChatRequestType,\n telemetryContext: Context\n ): Promise<CompleteChatHandlerResponseType> {\n this.logger?.debug(\"gateway.executeCompleteChat invoked\");\n const data = GatewayCompleteChatRequest.parse(request);\n return handleCompleteChat(\n {\n cache: this.caches.completeChat,\n model: data.model,\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n enableCache: data.options?.enableCache ?? true,\n callbacks: this.options.completeChatCallbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n },\n this.httpClient,\n telemetryContext\n );\n }\n\n async *streamChat(request: GatewayStreamChatRequestType): AsyncGenerator<StreamChatHandlerResponseType, void, unknown> {\n this.logger?.info(\"gateway.streamChat invoked\");\n this.logger?.debug(\"request: \", { request });\n const data = GatewayStreamChatRequest.parse(request);\n const modelName = data.model.modelSchema.name;\n\n let status = \"success\";\n const span = this.tracer.startSpan(\"stream-chat\");\n const activeContext = trace.setSpan(context.active(), span);\n\n try {\n span.setAttribute(\"modelName\", modelName);\n return yield* await context.with(activeContext, async () => {\n return handleStreamChat(\n {\n model: data.model,\n config: data.config,\n messages: data.messages,\n tools: data.tools,\n callbacks: this.options.streamChatCallbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n abortSignal: data.abortSignal,\n },\n this.httpClient,\n activeContext\n );\n });\n } catch (error) {\n status = \"error\";\n span.setStatus({ code: SpanStatusCode.ERROR, message: \"stream failed\" });\n this.logger?.error(\"gateway.streamChat error: \", { error });\n if (error instanceof GatewayError) throw error;\n else throw new GatewayError((error as any)?.message, 500, (error as any)?.response?.data);\n } finally {\n this.analytics.record(\"streamChat\", status, { modelName });\n span.end();\n }\n }\n\n async getEmbeddings(request: GatewayGetEmbeddingsRequestType): Promise<GetEmbeddingsHandlerResponseType> {\n this.logger?.info(\"gateway.getEmbeddings invoked\");\n this.logger?.debug(\"request: \", { request });\n const data = GatewayGetEmbeddingsRequest.parse(request);\n const modelName = data.model.modelSchema.name;\n return await this.tracer.startActiveSpan(\"get-embeddings\", async (span: Span) => {\n span.setAttribute(\"modelName\", modelName);\n return new Promise<GetEmbeddingsHandlerResponseType>((resolve, reject) => {\n const task: QueueTask<GatewayGetEmbeddingsRequestType, GetEmbeddingsHandlerResponseType> = {\n id: uuidv4(),\n request: data,\n cache: this.caches.getEmbeddings,\n resolve: (response: GetEmbeddingsHandlerResponseType) => {\n this.analytics.record(\"getEmbeddings\", \"success\", { modelName, usage: response.response.usage || {} });\n resolve(response);\n },\n reject: (error: any) => {\n this.analytics.record(\"getEmbeddings\", \"error\", { modelName });\n reject(error);\n },\n execute: this.executeGetEmbeddings.bind(this),\n telemetryContext: context.active(),\n };\n this.queues.getEmbeddings.enqueue(task);\n this.logger?.debug(`gateway.getEmbeddings task enqueued, id: ${task.id}`);\n });\n });\n }\n\n private async executeGetEmbeddings(\n request: GatewayGetEmbeddingsRequestType,\n telemetryContext: Context\n ): Promise<GetEmbeddingsHandlerResponseType> {\n this.logger?.debug(\"gateway.executeGetEmbeddings invoked\");\n const data = GatewayGetEmbeddingsRequest.parse(request);\n return handleGetEmbeddings(\n {\n cache: this.caches.getEmbeddings,\n model: data.model,\n config: data.config,\n embeddingRequests: data.embeddingRequests,\n enableCache: data.options?.enableCache ?? true,\n callbacks: this.options.getEmbeddingsCallbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n },\n this.httpClient,\n telemetryContext\n );\n }\n\n async proxyCompleteChat(request: GatewayProxyCompleteChatRequestType): Promise<ProxyCompleteChatHandlerResponseType> {\n this.logger?.info(\"gateway.proxyCompleteChat invoked\");\n this.logger?.debug(\"request: \", { request });\n const data = GatewayProxyCompleteChatRequest.parse(request);\n const modelName = data.model.modelSchema.name;\n // const counter = this.meter.createCounter(\"completeChat.counter\");\n // counter.add(1, { modelName });\n return await this.tracer.startActiveSpan(\"proxy-complete-chat\", async (span: Span) => {\n span.setAttribute(\"modelName\", modelName);\n return new Promise<ProxyCompleteChatHandlerResponseType>((resolve, reject) => {\n const task: QueueTask<GatewayProxyCompleteChatRequestType, ProxyCompleteChatHandlerResponseType> = {\n id: uuidv4(),\n request: data,\n resolve: (response: ProxyCompleteChatHandlerResponseType) => {\n this.analytics.record(\"proxyCompleteChat\", \"success\", { modelName, usage: response.transformedResponse?.usage || {} });\n resolve(response);\n },\n reject: (error: any) => {\n console.log(\"proxyCompleteChat error\", error);\n this.analytics.record(\"proxyCompleteChat\", \"error\", { modelName });\n reject(error);\n },\n execute: this.executeProxyCompleteChat.bind(this),\n telemetryContext: context.active(),\n };\n this.queues.proxyCompleteChat.enqueue(task);\n this.logger?.debug(`gateway.proxyCompleteChat task enqueued, id: ${task.id}`);\n });\n });\n }\n\n private async executeProxyCompleteChat(\n request: GatewayProxyCompleteChatRequestType,\n telemetryContext: Context\n ): Promise<ProxyCompleteChatHandlerResponseType> {\n this.logger?.debug(\"gateway.executeCompleteChat invoked\");\n const data = GatewayProxyCompleteChatRequest.parse(request);\n return handleProxyCompleteChat(\n {\n model: data.model,\n data: data.data,\n headers: data.headers,\n query: data.query,\n },\n this.httpClient,\n telemetryContext\n );\n }\n\n async *proxyStreamChat(request: GatewayProxyStreamChatRequestType): AsyncGenerator<ProxyStreamChatHandlerResponseType, void, unknown> {\n this.logger?.info(\"gateway.proxyStreamChat invoked\");\n this.logger?.debug(\"proxyStreamChat request: \", { request });\n const data = GatewayProxyStreamChatRequest.parse(request);\n const modelName = data.model.modelSchema.name;\n\n let status = \"success\";\n const span = this.tracer.startSpan(\"proxy-stream-chat\");\n const activeContext = trace.setSpan(context.active(), span);\n\n try {\n span.setAttribute(\"modelName\", modelName);\n return yield* await context.with(activeContext, async () => {\n return handleProxyStreamChat(\n {\n model: data.model,\n data: data.data,\n headers: data.headers,\n query: data.query,\n },\n this.httpClient,\n activeContext\n );\n });\n } catch (error) {\n status = \"error\";\n span.setStatus({ code: SpanStatusCode.ERROR, message: \"proxy stream failed\" });\n this.logger?.error(\"gateway.proxyStreamChat error: \", { error });\n if (error instanceof GatewayError) throw error;\n else throw new GatewayError((error as any)?.message, 500, (error as any)?.response?.data);\n } finally {\n this.analytics.record(\"proxyStreamChat\", status, { modelName });\n span.end();\n }\n }\n async proxyGetEmbeddings(request: GatewayProxyGetEmbeddingsRequestType): Promise<ProxyGetEmbeddingsHandlerResponseType> {\n this.logger?.info(\"gateway.proxyGetEmbeddings invoked\");\n this.logger?.debug(\"request: \", { request });\n\n // Parse and validate the incoming request\n const data = GatewayProxyGetEmbeddingsRequest.parse(request);\n const modelName = data.model.modelSchema.name;\n\n return await this.tracer.startActiveSpan(\"proxy-get-embeddings\", async (span: Span) => {\n span.setAttribute(\"modelName\", modelName);\n\n return new Promise<ProxyGetEmbeddingsHandlerResponseType>((resolve, reject) => {\n const task: QueueTask<GatewayProxyGetEmbeddingsRequestType, ProxyGetEmbeddingsHandlerResponseType> = {\n id: uuidv4(),\n request: data,\n resolve: (response: ProxyGetEmbeddingsHandlerResponseType) => {\n this.analytics.record(\"proxyGetEmbeddings\", \"success\", { modelName, usage: response.transformedResponse?.usage || {} });\n resolve(response);\n },\n reject: (error: any) => {\n this.analytics.record(\"proxyGetEmbeddings\", \"error\", { modelName });\n reject(error);\n },\n execute: this.executeProxyGetEmbeddings.bind(this),\n telemetryContext: context.active(),\n };\n this.queues.proxyGetEmbeddings.enqueue(task);\n this.logger?.debug(`gateway.proxyGetEmbeddings task enqueued, id: ${task.id}`);\n });\n });\n }\n\n private async executeProxyGetEmbeddings(\n request: GatewayProxyGetEmbeddingsRequestType,\n telemetryContext: Context\n ): Promise<ProxyGetEmbeddingsHandlerResponseType> {\n this.logger?.debug(\"gateway.executeProxyGetEmbeddings invoked\");\n const data = GatewayProxyGetEmbeddingsRequest.parse(request);\n return handleProxyGetEmbeddings(\n {\n model: data.model,\n headers: data.headers,\n data: data.data,\n query: data.query,\n },\n this.httpClient,\n telemetryContext\n );\n }\n\n async getToolResponses(request: GatewayGetToolResponsesRequestType): Promise<GetToolResponsesHandlerResponseType> {\n this.logger?.info(\"gateway.getToolResponses invoked\");\n this.logger?.debug(\"request: \", { request });\n const data = GatewayGetToolResponsesRequest.parse(request);\n\n let status = \"success\";\n const span = this.tracer.startSpan(\"get-tool-responses\");\n const activeContext = trace.setSpan(context.active(), span);\n\n try {\n return await context.with(activeContext, async () => {\n return handleGetToolResponses(\n {\n // cache: this.caches.getToolResponses,\n tools: data.tools,\n messages: data.messages,\n customHeaders: data.options?.customHeaders,\n callbacks: this.options.getToolResponsesCallbacks,\n metadataForCallbacks: data.options?.metadataForCallbacks,\n abortSignal: data.abortSignal,\n },\n this.httpClient,\n activeContext\n );\n });\n } catch (error) {\n status = \"error\";\n span.setStatus({ code: SpanStatusCode.ERROR, message: \"get tool responses failed\" });\n this.logger?.error(\"gateway.getToolResponses error: \", { error });\n if (error instanceof GatewayError) throw error;\n else throw new GatewayError((error as any)?.message, 500, (error as any)?.response?.data);\n } finally {\n this.analytics.record(\"getToolResponses\", status, {});\n span.end();\n }\n }\n\n static getChatUsageCost(request: GatewayGetChatUsageCostRequestType): GetChatUsageCostHandlerResponseType {\n const data = GatewayGetChatUsageCostRequest.parse(request);\n\n return handleGetChatUsageCost({ model: data.model, chatModelPrice: data.chatModelPrice, chatUsage: data.chatUsage });\n }\n\n static GatewayError = GatewayError;\n}\n\nexport { Gateway, type GatewayOptionsType };\n","import { z } from \"zod\";\n\nimport { ChatModelV1 } from \"@adaline/provider\";\nimport { ChatModelPriceType, ChatUsageType } from \"@adaline/types\";\n\nconst GetChatUsageCostHandlerRequest = z\n .object({\n chatUsage: z.custom<ChatUsageType>(),\n chatModelPrice: z.custom<ChatModelPriceType>().optional(),\n model: z.custom<ChatModelV1>().optional(),\n })\n .refine(\n (data) => {\n // Ensure exactly one of chatModelPrice or model is provided\n return (data.chatModelPrice !== undefined) !== (data.model !== undefined);\n },\n {\n message: \"Exactly one of chatModelPrice or model must be provided, not both.\",\n path: [\"chatModelPrice\", \"model\"],\n }\n );\n\ntype GetChatUsageCostHandlerRequestType = z.infer<typeof GetChatUsageCostHandlerRequest>;\n\nconst GetChatUsageCostHandlerResponse = z.object({\n cost: z.number(),\n currency: z.string(),\n pricingModel: z.custom<ChatModelPriceType>(),\n usageTokens: z.custom<ChatUsageType>(),\n});\ntype GetChatUsageCostHandlerResponseType = z.infer<typeof GetChatUsageCostHandlerResponse>;\n\nexport {\n GetChatUsageCostHandlerRequest,\n GetChatUsageCostHandlerResponse,\n type GetChatUsageCostHandlerRequestType,\n type GetChatUsageCostHandlerResponseType,\n};\n"]}
|