{"version":3,"sources":["../src/http-client/index.js","../src/errors.js","../src/http-client/errors.js","../src/http-client/retry.js"],"sourcesContent":["/**\n * HttpClient - Resilient HTTP Client with Retry Logic\n *\n * A production-ready HTTP client that:\n * - Wraps axios with enhanced error handling and retry logic\n * - Never throws exceptions - always returns unified response format\n * - Uses exponential backoff with jitter for retries\n * - Provides human-readable error classifications\n * - Supports comprehensive logging\n * - Handles all HTTP methods consistently\n */\n\nimport axios, { } from \"axios\";\n\n\n\n\n\n\n\n\nimport { HttpClientError } from \"../errors.js\";\nimport { classifyError, getErrorDescription } from \"./errors.js\";\nimport { calculateRetryDelay, sleep, shouldRetryError, } from \"./retry.js\";\n\nexport { HttpClientError };\n\n/**\n * Resilient HTTP Client with automatic retry logic.\n * Use HttpClient.init(context, options) when running with init/context; constructor(config) for standalone.\n */\nexport class HttpClient {\n    axiosInstance;\n    config;\n    logger;\n\n    constructor(contextOrConfig = {}, config) {\n        const hasContext = config !== undefined;\n        const options = hasContext ? config : (contextOrConfig || {});\n        const context = hasContext ? contextOrConfig : undefined;\n\n        this.config = {\n            ...options,\n            logger: context?.logger ?? options.logger ?? console,\n        };\n        this.logger = this.config.logger;\n\n        this.axiosInstance = axios.create({\n            timeout: this.config.timeout,\n            validateStatus: () => true,\n            maxRedirects: this.config.maxRedirects,\n            headers: { \"User-Agent\": this.config.userAgent },\n            httpsAgent: this.config.validateSSL ? undefined : { rejectUnauthorized: false } ,\n        });\n\n        // Add response interceptor for logging (optional - only if debug enabled)\n        this.axiosInstance.interceptors.response.use(\n            (response) => response,\n            (error) => {\n                // Log network-level errors here if needed\n                // (HTTP errors are handled in the request method)\n                return Promise.reject(error);\n            }\n        );\n    }\n\n    /**\n     * Static init - discovers params via getAllForModule(defs). Whatever is in options goes.\n     */\n    static init(context, options = {}) {\n        const defs = {\n            timeout: \"number default 30000\",\n            retryCount: \"number default 3\",\n            retryDelay: \"number default 1000\",\n            maxRetryDelay: \"number default 30000\",\n            retryJitter: \"number default 0.1\",\n            userAgent: \"string default HttpClient/v1.0\",\n            validateSSL: \"boolean default true\",\n            maxRedirects: \"number default 5\",\n        };\n        const discovered = context?.params?.getAllForModule?.(defs) ?? {};\n        const merged = { ...discovered, ...options, logger: options.logger ?? context?.logger };\n        return new HttpClient(context, merged);\n    }\n\n    /**\n     * Make an HTTP request with automatic retry logic\n     * Never throws - always returns HttpClientResponse\n     */\n    async request(\n        method,\n        url,\n        options = {}\n    ) {\n        const startTime = Date.now();\n\n        // Merge request options with defaults\n        const requestConfig = {\n            method,\n            url,\n            timeout: options.timeout ?? this.config.timeout,\n            headers: {\n                \"User-Agent\": options.userAgent ?? this.config.userAgent,\n                ...options.headers\n            },\n            params: options.params,\n            data: options.data\n        };\n\n        const retryCount = options.retryCount ?? this.config.retryCount;\n        const retryDelay = options.retryDelay ?? this.config.retryDelay;\n\n        // Initialize retry context\n        const _retryContext = null;\n        let _lastError = null;\n\n        // Attempt the request with retries\n        for (let attempt = 1; attempt <= retryCount + 1; attempt++) {\n            try {\n                if (options.debug) {\n                    this.logger.debug?.(`[HttpClient] ${method} ${url} (attempt ${attempt}/${retryCount + 1})`);\n                }\n\n                const response = await this.axiosInstance.request(requestConfig);\n                const duration = Date.now() - startTime;\n\n                // Success! Return unified response format\n                const customStatus = this.mapHttpStatusToCustomStatus(response.status);\n\n                if (options.debug) {\n                    this.logger.debug?.(`[HttpClient] ${method} ${url} → ${response.status} ${customStatus} (${duration}ms)`);\n                }\n\n                return {\n                    status: customStatus,\n                    code: response.status,\n                    headers: response.headers ,\n                    data: response.data,\n                    duration,\n                    retryCount: attempt - 1,\n                    finalUrl: response.request?.res?.responseUrl || url\n                };\n\n            } catch (error) {\n                _lastError = error;\n                const duration = Date.now() - startTime;\n\n                // Classify the error\n                const classification = classifyError(error);\n                const errorDescription = getErrorDescription(classification.type);\n\n                // Log the error\n                if (classification.retryable && attempt <= retryCount) {\n                    this.logger.warn?.(`[HttpClient] ${method} ${url} failed (${classification.type}): ${errorDescription}. Retrying in ${retryDelay}ms...`);\n                } else if (!classification.retryable || attempt > retryCount) {\n                    this.logger.error?.(`[HttpClient] ${method} ${url} failed (${classification.type}): ${errorDescription}`);\n                }\n\n                // Check if we should retry\n                if (attempt <= retryCount && shouldRetryError(classification)) {\n                    // Calculate delay and wait\n                    const delay = calculateRetryDelay(\n                        attempt,\n                        retryDelay,\n                        this.config.maxRetryDelay,\n                        this.config.retryJitter\n                    );\n\n                    if (options.debug) {\n                        this.logger.debug?.(`[HttpClient] Waiting ${delay}ms before retry ${attempt + 1}`);\n                    }\n\n                    await sleep(delay);\n                    continue;\n                }\n\n                // No more retries or not retryable - return error response\n                return {\n                    status: classification.status,\n                    code: error.response?.status || null,\n                    error: classification.type,\n                    headers: error.response?.headers || null,\n                    data: error.response?.data || null,\n                    duration,\n                    retryCount: attempt - 1,\n                    finalUrl: url\n                };\n            }\n        }\n\n        // This should never be reached, but just in case\n        return {\n            status: \"unknown\",\n            code: null,\n            error: \"unknown\",\n            headers: null,\n            data: null,\n            duration: Date.now() - startTime,\n            retryCount: retryCount,\n            finalUrl: url\n        };\n    }\n\n    /**\n     * GET request\n     */\n    async get(url, options = {}) {\n        return this.request(\"GET\", url, options);\n    }\n\n    /**\n     * POST request\n     */\n    async post(url, options = {}) {\n        return this.request(\"POST\", url, options);\n    }\n\n    /**\n     * PUT request\n     */\n    async put(url, options = {}) {\n        return this.request(\"PUT\", url, options);\n    }\n\n    /**\n     * DELETE request\n     */\n    async delete(url, options = {}) {\n        return this.request(\"DELETE\", url, options);\n    }\n\n    /**\n     * PATCH request\n     */\n    async patch(url, options = {}) {\n        return this.request(\"PATCH\", url, options);\n    }\n\n    /**\n     * HEAD request\n     */\n    async head(url, options = {}) {\n        return this.request(\"HEAD\", url, options);\n    }\n\n    /**\n     * OPTIONS request\n     */\n    async options(url, options = {}) {\n        return this.request(\"OPTIONS\", url, options);\n    }\n\n    /**\n     * Map HTTP status code to custom status\n     */\n    mapHttpStatusToCustomStatus(httpStatus) {\n        if (httpStatus >= 200 && httpStatus < 300) {\n            return \"success\";\n        } else if (httpStatus === 401) {\n            return \"authRequired\";\n        } else if (httpStatus === 403) {\n            return \"authFailed\";\n        } else if (httpStatus >= 400 && httpStatus < 500) {\n            return \"clientError\";\n        } else if (httpStatus >= 500) {\n            return \"serverError\";\n        }\n        return \"unknown\";\n    }\n\n    /**\n     * Get current configuration (for debugging)\n     */\n    getConfig() {\n        return { ...this.config };\n    }\n}\n","/**\n * Error classes for the CLI toolkit\n */\n\nexport class FrameworkError extends Error {\n    constructor(message) {\n        super(message);\n        this.name = \"FrameworkError\";\n    }\n}\n\nexport class ParamError extends FrameworkError {\n    constructor(message) {\n        super(message);\n        this.name = \"ParamError\";\n    }\n}\n\nexport class InitError extends FrameworkError {\n    constructor(message) {\n        super(message);\n        this.name = \"InitError\";\n    }\n}\n\nexport class CriticalRequestError extends FrameworkError {\n    constructor(message) {\n        super(message);\n        this.name = \"CriticalRequestError\";\n    }\n}\n\nexport class ControlFlowError extends Error {\n    constructor(message) {\n        super(message);\n        this.name = \"ControlFlowError\";\n    }\n}\n\nexport class HttpClientError extends FrameworkError {\n    constructor(message,   cause) {\n        super(message);this.cause = cause;;\n        this.name = \"HttpClientError\";\n    }\n}\n\nexport class FileDatabaseError extends FrameworkError {\n    constructor(message) {\n        super(message);\n        this.name = \"FileDatabaseError\";\n    }\n}\n\n","\n\n\n\n\n\n\n\n/**\n * Classify an error and determine retry behavior\n */\nexport function classifyError(error) {\n    // Handle axios response errors (HTTP errors)\n    if (error.response) {\n        const { status } = error.response;\n\n        switch (status) {\n            case 400:\n                return { type: \"badRequest\", retryable: false, isAuth: false, status: \"clientError\" };\n            case 401:\n                return { type: \"unauthorized\", retryable: false, isAuth: true, status: \"authRequired\" };\n            case 403:\n                return { type: \"forbidden\", retryable: false, isAuth: true, status: \"authFailed\" };\n            case 404:\n                return { type: \"notFound\", retryable: false, isAuth: false, status: \"clientError\" };\n            case 405:\n                return { type: \"methodNotAllowed\", retryable: false, isAuth: false, status: \"clientError\" };\n            case 409:\n                return { type: \"conflict\", retryable: false, isAuth: false, status: \"clientError\" };\n            case 422:\n                return { type: \"unprocessableEntity\", retryable: false, isAuth: false, status: \"clientError\" };\n            case 429:\n                return { type: \"tooManyRequests\", retryable: true, isAuth: false, status: \"clientError\" };\n            case 500:\n                return { type: \"internalServerError\", retryable: true, isAuth: false, status: \"serverError\" };\n            case 502:\n                return { type: \"badGateway\", retryable: true, isAuth: false, status: \"serverError\" };\n            case 503:\n                return { type: \"serviceUnavailable\", retryable: true, isAuth: false, status: \"serverError\" };\n            case 504:\n                return { type: \"gatewayTimeout\", retryable: true, isAuth: false, status: \"serverError\" };\n            default:\n                if (status >= 400 && status < 500) {\n                    return { type: \"clientError\" , retryable: false, isAuth: false, status: \"clientError\" };\n                } else if (status >= 500) {\n                    return { type: \"serverError\" , retryable: true, isAuth: false, status: \"serverError\" };\n                }\n                break;\n        }\n    }\n\n    // Handle network/connection errors (no response)\n    if (error.code) {\n        switch (error.code) {\n            case \"ECONNREFUSED\":\n            case \"ECONNRESET\":\n            case \"EPIPE\":\n            case \"ENOTFOUND\":\n            case \"EHOSTUNREACH\":\n            case \"ENETUNREACH\":\n                return { type: \"connectionFailed\", retryable: true, isAuth: false, status: \"networkError\" };\n\n            case \"ETIMEDOUT\":\n            case \"ECONNABORTED\":\n            case \"ESOCKETTIMEDOUT\":\n                return { type: \"timeout\", retryable: true, isAuth: false, status: \"timeout\" };\n\n            case \"EAUTH\":\n            case \"EACCES\":\n                return { type: \"unauthorized\", retryable: false, isAuth: true, status: \"authRequired\" };\n\n            default:\n                return { type: \"networkError\", retryable: true, isAuth: false, status: \"networkError\" };\n        }\n    }\n\n    // Handle timeout errors\n    if (error.message && (\n        error.message.includes(\"timeout\") ||\n        error.message.includes(\"TIMEOUT\") ||\n        error.message.includes(\"aborted\")\n    )) {\n        return { type: \"timeout\", retryable: true, isAuth: false, status: \"timeout\" };\n    }\n\n    // Handle cancellation\n    if (error.name === \"AbortError\" || error.message?.includes(\"cancelled\")) {\n        return { type: \"requestCancelled\", retryable: false, isAuth: false, status: \"unknown\" };\n    }\n\n    // Default fallback — treat as transient (socket/TLS glitches often lack a code).\n    return { type: \"unknown\", retryable: true, isAuth: false, status: \"unknown\" };\n}\n\n/**\n * Get a human-readable description for an error type\n */\nexport function getErrorDescription(errorType) {\n    const descriptions = {\n        connectionFailed: \"Failed to establish a connection to the server\",\n        timeout: \"Request timed out before completing\",\n        networkError: \"Network connection issue occurred\",\n        badRequest: \"Request was malformed or invalid\",\n        unauthorized: \"Authentication credentials are required\",\n        forbidden: \"Access to the requested resource is forbidden\",\n        notFound: \"The requested resource was not found\",\n        methodNotAllowed: \"HTTP method not allowed for this resource\",\n        conflict: \"Request conflicts with current server state\",\n        unprocessableEntity: \"Request data could not be processed\",\n        tooManyRequests: \"Too many requests sent in a short time\",\n        internalServerError: \"Server encountered an internal error\",\n        badGateway: \"Invalid response from upstream server\",\n        serviceUnavailable: \"Server is temporarily unavailable\",\n        gatewayTimeout: \"Upstream server timed out\",\n        unknown: \"An unknown error occurred\",\n        requestCancelled: \"Request was cancelled before completion\"\n    };\n\n    return descriptions[errorType] || \"An unknown error occurred\";\n}\n","\n\n\n\n\n\n\n\n/**\n * Calculate the next retry delay using exponential backoff with jitter\n *\n * Formula: delay = baseDelay * (2 ^ (attempt - 1)) + randomJitter\n *\n * Jitter prevents the \"thundering herd\" problem where multiple failed requests\n * all retry at the exact same time, overwhelming the server.\n */\nexport function calculateRetryDelay(\n    attempt,\n    baseDelay,\n    maxDelay,\n    jitterFactor = 0.1\n) {\n    // Exponential backoff: baseDelay * (2 ^ (attempt - 1))\n    const exponentialDelay = baseDelay * Math.pow(2, attempt - 1);\n\n    // Cap at maximum delay\n    const cappedDelay = Math.min(exponentialDelay, maxDelay);\n\n    // Add jitter: random variation up to jitterFactor of the delay\n    const jitter = cappedDelay * jitterFactor * Math.random();\n\n    return Math.floor(cappedDelay + jitter);\n}\n\n/**\n * Sleep for the specified number of milliseconds\n */\nexport function sleep(ms) {\n    return new Promise(resolve => setTimeout(resolve, ms));\n}\n\n/**\n * Determine if an error should be retried based on classification\n */\nexport function shouldRetryError(classification) {\n    // Never retry auth errors (they won't succeed with the same credentials)\n    if (classification.isAuth) {\n        return false;\n    }\n\n    // Retry if the error is classified as retryable\n    return classification.retryable;\n}\n\n/**\n * Create a retry context for tracking retry attempts\n */\nexport function createRetryContext(\n    maxAttempts,\n    baseDelay,\n    maxDelay,\n    jitterFactor\n) {\n    return {\n        attempt: 1,\n        maxAttempts,\n        lastError: new Error(\"Initial attempt\"),\n        totalDelay: 0,\n        nextDelay: calculateRetryDelay(1, baseDelay, maxDelay, jitterFactor)\n    };\n}\n\n/**\n * Update retry context for the next attempt\n */\nexport function updateRetryContext(\n    context,\n    lastError,\n    baseDelay,\n    maxDelay,\n    jitterFactor\n) {\n    const nextAttempt = context.attempt + 1;\n    const nextDelay = calculateRetryDelay(nextAttempt, baseDelay, maxDelay, jitterFactor);\n\n    return {\n        attempt: nextAttempt,\n        maxAttempts: context.maxAttempts,\n        lastError,\n        totalDelay: context.totalDelay + context.nextDelay,\n        nextDelay\n    };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,mBAAuB;;;ACRhB,IAAM,iBAAN,cAA6B,MAAM;AAAA,EACtC,YAAY,SAAS;AACjB,UAAM,OAAO;AACb,SAAK,OAAO;AAAA,EAChB;AACJ;AA8BO,IAAM,kBAAN,cAA8B,eAAe;AAAA,EAChD,YAAY,SAAW,OAAO;AAC1B,UAAM,OAAO;AAAE,SAAK,QAAQ;AAAM;AAClC,SAAK,OAAO;AAAA,EAChB;AACJ;;;ACjCO,SAAS,cAAc,OAAO;AAEjC,MAAI,MAAM,UAAU;AAChB,UAAM,EAAE,OAAO,IAAI,MAAM;AAEzB,YAAQ,QAAQ;AAAA,MACZ,KAAK;AACD,eAAO,EAAE,MAAM,cAAc,WAAW,OAAO,QAAQ,OAAO,QAAQ,cAAc;AAAA,MACxF,KAAK;AACD,eAAO,EAAE,MAAM,gBAAgB,WAAW,OAAO,QAAQ,MAAM,QAAQ,eAAe;AAAA,MAC1F,KAAK;AACD,eAAO,EAAE,MAAM,aAAa,WAAW,OAAO,QAAQ,MAAM,QAAQ,aAAa;AAAA,MACrF,KAAK;AACD,eAAO,EAAE,MAAM,YAAY,WAAW,OAAO,QAAQ,OAAO,QAAQ,cAAc;AAAA,MACtF,KAAK;AACD,eAAO,EAAE,MAAM,oBAAoB,WAAW,OAAO,QAAQ,OAAO,QAAQ,cAAc;AAAA,MAC9F,KAAK;AACD,eAAO,EAAE,MAAM,YAAY,WAAW,OAAO,QAAQ,OAAO,QAAQ,cAAc;AAAA,MACtF,KAAK;AACD,eAAO,EAAE,MAAM,uBAAuB,WAAW,OAAO,QAAQ,OAAO,QAAQ,cAAc;AAAA,MACjG,KAAK;AACD,eAAO,EAAE,MAAM,mBAAmB,WAAW,MAAM,QAAQ,OAAO,QAAQ,cAAc;AAAA,MAC5F,KAAK;AACD,eAAO,EAAE,MAAM,uBAAuB,WAAW,MAAM,QAAQ,OAAO,QAAQ,cAAc;AAAA,MAChG,KAAK;AACD,eAAO,EAAE,MAAM,cAAc,WAAW,MAAM,QAAQ,OAAO,QAAQ,cAAc;AAAA,MACvF,KAAK;AACD,eAAO,EAAE,MAAM,sBAAsB,WAAW,MAAM,QAAQ,OAAO,QAAQ,cAAc;AAAA,MAC/F,KAAK;AACD,eAAO,EAAE,MAAM,kBAAkB,WAAW,MAAM,QAAQ,OAAO,QAAQ,cAAc;AAAA,MAC3F;AACI,YAAI,UAAU,OAAO,SAAS,KAAK;AAC/B,iBAAO,EAAE,MAAM,eAAgB,WAAW,OAAO,QAAQ,OAAO,QAAQ,cAAc;AAAA,QAC1F,WAAW,UAAU,KAAK;AACtB,iBAAO,EAAE,MAAM,eAAgB,WAAW,MAAM,QAAQ,OAAO,QAAQ,cAAc;AAAA,QACzF;AACA;AAAA,IACR;AAAA,EACJ;AAGA,MAAI,MAAM,MAAM;AACZ,YAAQ,MAAM,MAAM;AAAA,MAChB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,eAAO,EAAE,MAAM,oBAAoB,WAAW,MAAM,QAAQ,OAAO,QAAQ,eAAe;AAAA,MAE9F,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,eAAO,EAAE,MAAM,WAAW,WAAW,MAAM,QAAQ,OAAO,QAAQ,UAAU;AAAA,MAEhF,KAAK;AAAA,MACL,KAAK;AACD,eAAO,EAAE,MAAM,gBAAgB,WAAW,OAAO,QAAQ,MAAM,QAAQ,eAAe;AAAA,MAE1F;AACI,eAAO,EAAE,MAAM,gBAAgB,WAAW,MAAM,QAAQ,OAAO,QAAQ,eAAe;AAAA,IAC9F;AAAA,EACJ;AAGA,MAAI,MAAM,YACN,MAAM,QAAQ,SAAS,SAAS,KAChC,MAAM,QAAQ,SAAS,SAAS,KAChC,MAAM,QAAQ,SAAS,SAAS,IACjC;AACC,WAAO,EAAE,MAAM,WAAW,WAAW,MAAM,QAAQ,OAAO,QAAQ,UAAU;AAAA,EAChF;AAGA,MAAI,MAAM,SAAS,gBAAgB,MAAM,SAAS,SAAS,WAAW,GAAG;AACrE,WAAO,EAAE,MAAM,oBAAoB,WAAW,OAAO,QAAQ,OAAO,QAAQ,UAAU;AAAA,EAC1F;AAGA,SAAO,EAAE,MAAM,WAAW,WAAW,MAAM,QAAQ,OAAO,QAAQ,UAAU;AAChF;AAKO,SAAS,oBAAoB,WAAW;AAC3C,QAAM,eAAe;AAAA,IACjB,kBAAkB;AAAA,IAClB,SAAS;AAAA,IACT,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,cAAc;AAAA,IACd,WAAW;AAAA,IACX,UAAU;AAAA,IACV,kBAAkB;AAAA,IAClB,UAAU;AAAA,IACV,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,IACjB,qBAAqB;AAAA,IACrB,YAAY;AAAA,IACZ,oBAAoB;AAAA,IACpB,gBAAgB;AAAA,IAChB,SAAS;AAAA,IACT,kBAAkB;AAAA,EACtB;AAEA,SAAO,aAAa,SAAS,KAAK;AACtC;;;ACvGO,SAAS,oBACZ,SACA,WACA,UACA,eAAe,KACjB;AAEE,QAAM,mBAAmB,YAAY,KAAK,IAAI,GAAG,UAAU,CAAC;AAG5D,QAAM,cAAc,KAAK,IAAI,kBAAkB,QAAQ;AAGvD,QAAM,SAAS,cAAc,eAAe,KAAK,OAAO;AAExD,SAAO,KAAK,MAAM,cAAc,MAAM;AAC1C;AAKO,SAAS,MAAM,IAAI;AACtB,SAAO,IAAI,QAAQ,aAAW,WAAW,SAAS,EAAE,CAAC;AACzD;AAKO,SAAS,iBAAiB,gBAAgB;AAE7C,MAAI,eAAe,QAAQ;AACvB,WAAO;AAAA,EACX;AAGA,SAAO,eAAe;AAC1B;;;AHrBO,IAAM,aAAN,MAAM,YAAW;AAAA,EACpB;AAAA,EACA;AAAA,EACA;AAAA,EAEA,YAAY,kBAAkB,CAAC,GAAG,QAAQ;AACtC,UAAM,aAAa,WAAW;AAC9B,UAAM,UAAU,aAAa,SAAU,mBAAmB,CAAC;AAC3D,UAAM,UAAU,aAAa,kBAAkB;AAE/C,SAAK,SAAS;AAAA,MACV,GAAG;AAAA,MACH,QAAQ,SAAS,UAAU,QAAQ,UAAU;AAAA,IACjD;AACA,SAAK,SAAS,KAAK,OAAO;AAE1B,SAAK,gBAAgB,aAAAA,QAAM,OAAO;AAAA,MAC9B,SAAS,KAAK,OAAO;AAAA,MACrB,gBAAgB,MAAM;AAAA,MACtB,cAAc,KAAK,OAAO;AAAA,MAC1B,SAAS,EAAE,cAAc,KAAK,OAAO,UAAU;AAAA,MAC/C,YAAY,KAAK,OAAO,cAAc,SAAY,EAAE,oBAAoB,MAAM;AAAA,IAClF,CAAC;AAGD,SAAK,cAAc,aAAa,SAAS;AAAA,MACrC,CAAC,aAAa;AAAA,MACd,CAAC,UAAU;AAGP,eAAO,QAAQ,OAAO,KAAK;AAAA,MAC/B;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,OAAO,KAAK,SAAS,UAAU,CAAC,GAAG;AAC/B,UAAM,OAAO;AAAA,MACT,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,eAAe;AAAA,MACf,aAAa;AAAA,MACb,WAAW;AAAA,MACX,aAAa;AAAA,MACb,cAAc;AAAA,IAClB;AACA,UAAM,aAAa,SAAS,QAAQ,kBAAkB,IAAI,KAAK,CAAC;AAChE,UAAM,SAAS,EAAE,GAAG,YAAY,GAAG,SAAS,QAAQ,QAAQ,UAAU,SAAS,OAAO;AACtF,WAAO,IAAI,YAAW,SAAS,MAAM;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,QACF,QACA,KACA,UAAU,CAAC,GACb;AACE,UAAM,YAAY,KAAK,IAAI;AAG3B,UAAM,gBAAgB;AAAA,MAClB;AAAA,MACA;AAAA,MACA,SAAS,QAAQ,WAAW,KAAK,OAAO;AAAA,MACxC,SAAS;AAAA,QACL,cAAc,QAAQ,aAAa,KAAK,OAAO;AAAA,QAC/C,GAAG,QAAQ;AAAA,MACf;AAAA,MACA,QAAQ,QAAQ;AAAA,MAChB,MAAM,QAAQ;AAAA,IAClB;AAEA,UAAM,aAAa,QAAQ,cAAc,KAAK,OAAO;AACrD,UAAM,aAAa,QAAQ,cAAc,KAAK,OAAO;AAGrD,UAAM,gBAAgB;AACtB,QAAI,aAAa;AAGjB,aAAS,UAAU,GAAG,WAAW,aAAa,GAAG,WAAW;AACxD,UAAI;AACA,YAAI,QAAQ,OAAO;AACf,eAAK,OAAO,QAAQ,gBAAgB,MAAM,IAAI,GAAG,aAAa,OAAO,IAAI,aAAa,CAAC,GAAG;AAAA,QAC9F;AAEA,cAAM,WAAW,MAAM,KAAK,cAAc,QAAQ,aAAa;AAC/D,cAAM,WAAW,KAAK,IAAI,IAAI;AAG9B,cAAM,eAAe,KAAK,4BAA4B,SAAS,MAAM;AAErE,YAAI,QAAQ,OAAO;AACf,eAAK,OAAO,QAAQ,gBAAgB,MAAM,IAAI,GAAG,WAAM,SAAS,MAAM,IAAI,YAAY,KAAK,QAAQ,KAAK;AAAA,QAC5G;AAEA,eAAO;AAAA,UACH,QAAQ;AAAA,UACR,MAAM,SAAS;AAAA,UACf,SAAS,SAAS;AAAA,UAClB,MAAM,SAAS;AAAA,UACf;AAAA,UACA,YAAY,UAAU;AAAA,UACtB,UAAU,SAAS,SAAS,KAAK,eAAe;AAAA,QACpD;AAAA,MAEJ,SAAS,OAAO;AACZ,qBAAa;AACb,cAAM,WAAW,KAAK,IAAI,IAAI;AAG9B,cAAM,iBAAiB,cAAc,KAAK;AAC1C,cAAM,mBAAmB,oBAAoB,eAAe,IAAI;AAGhE,YAAI,eAAe,aAAa,WAAW,YAAY;AACnD,eAAK,OAAO,OAAO,gBAAgB,MAAM,IAAI,GAAG,YAAY,eAAe,IAAI,MAAM,gBAAgB,iBAAiB,UAAU,OAAO;AAAA,QAC3I,WAAW,CAAC,eAAe,aAAa,UAAU,YAAY;AAC1D,eAAK,OAAO,QAAQ,gBAAgB,MAAM,IAAI,GAAG,YAAY,eAAe,IAAI,MAAM,gBAAgB,EAAE;AAAA,QAC5G;AAGA,YAAI,WAAW,cAAc,iBAAiB,cAAc,GAAG;AAE3D,gBAAM,QAAQ;AAAA,YACV;AAAA,YACA;AAAA,YACA,KAAK,OAAO;AAAA,YACZ,KAAK,OAAO;AAAA,UAChB;AAEA,cAAI,QAAQ,OAAO;AACf,iBAAK,OAAO,QAAQ,wBAAwB,KAAK,mBAAmB,UAAU,CAAC,EAAE;AAAA,UACrF;AAEA,gBAAM,MAAM,KAAK;AACjB;AAAA,QACJ;AAGA,eAAO;AAAA,UACH,QAAQ,eAAe;AAAA,UACvB,MAAM,MAAM,UAAU,UAAU;AAAA,UAChC,OAAO,eAAe;AAAA,UACtB,SAAS,MAAM,UAAU,WAAW;AAAA,UACpC,MAAM,MAAM,UAAU,QAAQ;AAAA,UAC9B;AAAA,UACA,YAAY,UAAU;AAAA,UACtB,UAAU;AAAA,QACd;AAAA,MACJ;AAAA,IACJ;AAGA,WAAO;AAAA,MACH,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,MACT,MAAM;AAAA,MACN,UAAU,KAAK,IAAI,IAAI;AAAA,MACvB;AAAA,MACA,UAAU;AAAA,IACd;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,IAAI,KAAK,UAAU,CAAC,GAAG;AACzB,WAAO,KAAK,QAAQ,OAAO,KAAK,OAAO;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,KAAK,KAAK,UAAU,CAAC,GAAG;AAC1B,WAAO,KAAK,QAAQ,QAAQ,KAAK,OAAO;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,IAAI,KAAK,UAAU,CAAC,GAAG;AACzB,WAAO,KAAK,QAAQ,OAAO,KAAK,OAAO;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO,KAAK,UAAU,CAAC,GAAG;AAC5B,WAAO,KAAK,QAAQ,UAAU,KAAK,OAAO;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MAAM,KAAK,UAAU,CAAC,GAAG;AAC3B,WAAO,KAAK,QAAQ,SAAS,KAAK,OAAO;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,KAAK,KAAK,UAAU,CAAC,GAAG;AAC1B,WAAO,KAAK,QAAQ,QAAQ,KAAK,OAAO;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,QAAQ,KAAK,UAAU,CAAC,GAAG;AAC7B,WAAO,KAAK,QAAQ,WAAW,KAAK,OAAO;AAAA,EAC/C;AAAA;AAAA;AAAA;AAAA,EAKA,4BAA4B,YAAY;AACpC,QAAI,cAAc,OAAO,aAAa,KAAK;AACvC,aAAO;AAAA,IACX,WAAW,eAAe,KAAK;AAC3B,aAAO;AAAA,IACX,WAAW,eAAe,KAAK;AAC3B,aAAO;AAAA,IACX,WAAW,cAAc,OAAO,aAAa,KAAK;AAC9C,aAAO;AAAA,IACX,WAAW,cAAc,KAAK;AAC1B,aAAO;AAAA,IACX;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,YAAY;AACR,WAAO,EAAE,GAAG,KAAK,OAAO;AAAA,EAC5B;AACJ;","names":["axios"]}