@streamflow/common 11.0.4 → 11.1.0-alpha.p335.b571df3

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.js","../../solana/account-filters.ts","../../solana/instructions.ts","../../solana/types.ts","../../../../node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.mjs","../../../../node_modules/.pnpm/p-timeout@6.1.2/node_modules/p-timeout/index.js","../../../../node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/lower-bound.js","../../../../node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/priority-queue.js","../../../../node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/index.js","../../lib/utils.ts","../../lib/assertions.ts","../../solana/descriptor/idl/partner_oracle.json","../../solana/utils.ts","../../solana/lib/deserialize-raw-transaction.ts","../../solana/lib/public-key.ts","../../solana/lib/estimate.ts","../../solana/rpc/consume-limit-estimate/estimate.ts","../../solana/lib/unwrap-auto-simulate-ext.ts","../../lib/fetch-token-price.ts"],"names":["prefix","EventEmitter","getAssociatedTokenAddress","NATIVE_MINT","createAssociatedTokenAccountInstruction","SystemProgram","createSyncNativeInstruction","ICluster","_queue","BN","Keypair","TransactionMessage","VersionedTransaction","bs58","SendTransactionError","ComputeBudgetProgram","TOKEN_PROGRAM_ID","TOKEN_2022_PROGRAM_ID","unpackMint","Program","Buffer","Transaction","message","accounts","writableAccounts","PublicKey"],"mappings":"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","file":"index.cjs","sourcesContent":["'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","import type { MemcmpFilter, PublicKey } from \"@solana/web3.js\";\n\nexport const getFilters = <T extends Record<string, number | PublicKey>>(\n criteria: T,\n byteOffsets: Record<keyof T, number>,\n): MemcmpFilter[] => {\n return Object.entries(criteria).reduce((acc, [key, value]) => {\n const criteriaKey = key as keyof typeof criteria;\n const effectiveByteOffset = byteOffsets[criteriaKey];\n if (criteria[criteriaKey] && effectiveByteOffset) {\n acc.push({\n memcmp: {\n offset: effectiveByteOffset,\n bytes: value.toString(),\n },\n });\n }\n return acc;\n }, [] as MemcmpFilter[]);\n};\n","import {\n getAssociatedTokenAddress,\n NATIVE_MINT,\n createAssociatedTokenAccountInstruction,\n createSyncNativeInstruction,\n} from \"@solana/spl-token\";\nimport type { Connection, PublicKey, TransactionInstruction } from \"@solana/web3.js\";\nimport { SystemProgram } from \"@solana/web3.js\";\nimport type BN from \"bn.js\";\n\nexport const prepareWrappedAccount = async (\n connection: Connection,\n senderAddress: PublicKey,\n amount: BN,\n): Promise<TransactionInstruction[]> => {\n const tokenAccount = await getAssociatedTokenAddress(NATIVE_MINT, senderAddress, true);\n\n const accInfo = await connection.getParsedAccountInfo(tokenAccount);\n\n const instructions =\n (accInfo.value?.lamports ?? 0) > 0\n ? []\n : [createAssociatedTokenAccountInstruction(senderAddress, tokenAccount, senderAddress, NATIVE_MINT)];\n\n return [\n ...instructions,\n SystemProgram.transfer({\n fromPubkey: senderAddress,\n toPubkey: tokenAccount,\n lamports: amount.toNumber(),\n }),\n createSyncNativeInstruction(tokenAccount),\n ];\n};\n","import {\n type TransactionInstruction,\n type AccountInfo,\n type BlockhashWithExpiryBlockHeight,\n type Commitment,\n type Context,\n type PublicKey,\n type VersionedTransaction,\n} from \"@solana/web3.js\";\nimport type PQueue from \"p-queue\";\nimport type { Idl, IdlAccounts, IdlTypes, Program } from \"@coral-xyz/anchor\";\n\nimport type { PartnerOracle as PartnerOracle } from \"./descriptor/partner_oracle.js\";\n\nexport type ComputePriceEstimate = (tx: string | (string | PublicKey)[]) => Promise<number>;\nexport type ComputeLimitEstimate = (tx: VersionedTransaction) => Promise<number>;\n\n/**\n * Additional parameter for Solana Transaction processing.\n *\n * computePrice - compute price per CU in micro-lamports to be set in a transaction - priority fee, accepts:\n * - a constant number;\n * - a callable that returns a price for a built transaction;\n * computeLimit - compute limit in CUs to set for a transaction, `computePrice` is paid per every allocated CU, accepts:\n * - a constant number;\n * - a callable that returns a CU limit for a built transaction;\n * - `autoSimulate` - will be unwrapped by `unwrapExecutionParams` and converted to a callable that runs a simulation to estimate CUs and set a limit with some margin;\n * feePayer - account that will be set as sol fee payer in instructions that accept such account, i.e. ATA creation:\n * - should be only when building instructions via `prepare` methods, as tx executing methods will fail without a signer;\n * - currently supported only when claiming an Airdrop;\n */\nexport interface ITransactionExt {\n computePrice?: number | ComputePriceEstimate;\n computeLimit?: number | ComputeLimitEstimate | \"autoSimulate\";\n feePayer?: PublicKey;\n}\n\n/**\n * Acceptable type with resolved values.\n * Function types may be omitted if passed to destinations that do not support them.\n */\ntype ITransactionExtResolvedValues = {\n computePrice?: number | ComputePriceEstimate;\n computeLimit?: number | ComputeLimitEstimate;\n feePayer?: PublicKey;\n};\n\ntype KeysNotOfA<T, ToExclude> = Pick<T, Exclude<keyof T, keyof ToExclude>>;\n\nexport type ITransactionExtResolved<T extends ITransactionExt = ITransactionExt> = {\n [AK in keyof KeysNotOfA<T, ITransactionExt>]: T[AK];\n} & ITransactionExtResolvedValues;\n\nexport interface IInteractExt extends ITransactionExt {\n invoker: {\n publicKey: string | PublicKey | null;\n };\n}\n\nexport interface Account {\n pubkey: PublicKey;\n account: AccountInfo<Buffer>;\n}\n\nexport interface CheckAssociatedTokenAccountsData {\n sender: PublicKey;\n recipient: PublicKey;\n partner: PublicKey;\n streamflowTreasury: PublicKey;\n mint: PublicKey;\n}\n\nexport interface AtaParams {\n mint: PublicKey;\n owner: PublicKey;\n programId?: PublicKey;\n}\n\nexport interface ConfirmationParams {\n hash: BlockhashWithExpiryBlockHeight;\n context: Context;\n commitment?: Commitment;\n}\n\nexport interface ThrottleParams {\n sendRate?: number;\n sendThrottler?: PQueue;\n waitBeforeConfirming?: number | undefined;\n}\n\nexport interface TransactionExecutionParams extends ThrottleParams {\n skipSimulation?: boolean;\n}\n\nexport interface IProgramAccount<T> {\n publicKey: PublicKey;\n account: T;\n}\n\nexport class TransactionFailedError extends Error {\n constructor(m: string) {\n super(m);\n Object.setPrototypeOf(this, TransactionFailedError.prototype);\n this.name = \"TransactionFailedError\";\n }\n}\n\nexport interface ITransactionResult {\n ixs: TransactionInstruction[];\n txId: string;\n}\n\n// Utility types\nexport enum ICluster {\n Mainnet = \"mainnet\",\n Devnet = \"devnet\",\n Testnet = \"testnet\",\n Local = \"local\",\n}\n\n/// Anchor type extractions\nexport type IdlInstruction<IDL extends Idl, Name extends IDL[\"instructions\"][number][\"name\"]> = Extract<\n IDL[\"instructions\"][number],\n { name: Name }\n>;\n\nexport type IdlAccountsOfMethod<IDL extends Idl, M extends keyof Program<IDL>[\"methods\"]> = Parameters<\n ReturnType<Program<IDL>[\"methods\"][M]>[\"accounts\"]\n>[0];\nexport type IdlArgsOfMethod<IDL extends Idl, M extends keyof Program<IDL>[\"methods\"]> = Parameters<\n Program<IDL>[\"methods\"][M]\n>;\n\n// Common Partner oracle\nexport type PartnerOracleTypes = IdlTypes<PartnerOracle>;\nexport type PartnerOracleAccounts = IdlAccounts<PartnerOracle>;\n\n/**\n * Error wrapper for calls made to the contract on chain\n */\nexport class ContractError extends Error {\n public contractErrorCode: string | null;\n\n public description: string | null;\n\n /**\n * Constructs the Error Wrapper\n * @param error Original error raised probably by the chain SDK\n * @param code extracted code from the error if managed to parse it\n */\n constructor(error: Error, code?: string | null, description?: string | null) {\n super(error.message, { cause: error }); // Call the base class constructor with the error message\n this.contractErrorCode = code ?? null;\n this.description = description ?? null;\n // Copy properties from the original error\n Object.setPrototypeOf(this, ContractError.prototype);\n this.name = \"ContractError\"; // Set the name property\n this.stack = error.stack;\n }\n}\n","import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n","export class TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\n/**\nAn error to be thrown when the request is aborted by AbortController.\nDOMException is thrown instead of this Error when DOMException is available.\n*/\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\n/**\nTODO: Remove AbortError and just throw DOMException when targeting Node 18.\n*/\nconst getDOMException = errorMessage => globalThis.DOMException === undefined\n\t? new AbortError(errorMessage)\n\t: new DOMException(errorMessage);\n\n/**\nTODO: Remove below function and just 'reject(signal.reason)' when targeting Node 18.\n*/\nconst getAbortedReason = signal => {\n\tconst reason = signal.reason === undefined\n\t\t? getDOMException('This operation was aborted.')\n\t\t: signal.reason;\n\n\treturn reason instanceof Error ? reason : getDOMException(reason);\n};\n\nexport default function pTimeout(promise, options) {\n\tconst {\n\t\tmilliseconds,\n\t\tfallback,\n\t\tmessage,\n\t\tcustomTimers = {setTimeout, clearTimeout},\n\t} = options;\n\n\tlet timer;\n\n\tconst wrappedPromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (options.signal) {\n\t\t\tconst {signal} = options;\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t}\n\n\t\t\tsignal.addEventListener('abort', () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t});\n\t\t}\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\tpromise.then(resolve, reject);\n\t\t\treturn;\n\t\t}\n\n\t\t// We create the error outside of `setTimeout` to preserve the stack trace.\n\t\tconst timeoutError = new TimeoutError();\n\n\t\ttimer = customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (fallback) {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\tif (message === false) {\n\t\t\t\tresolve();\n\t\t\t} else if (message instanceof Error) {\n\t\t\t\treject(message);\n\t\t\t} else {\n\t\t\t\ttimeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\t\treject(timeoutError);\n\t\t\t}\n\t\t}, milliseconds);\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tresolve(await promise);\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t})();\n\t});\n\n\tconst cancelablePromise = wrappedPromise.finally(() => {\n\t\tcancelablePromise.clear();\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\tcustomTimers.clearTimeout.call(undefined, timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n","import lowerBound from './lower-bound.js';\nexport default class PriorityQueue {\n #queue = [];\n enqueue(run, options) {\n options = {\n priority: 0,\n ...options,\n };\n const element = {\n priority: options.priority,\n run,\n };\n if (this.size && this.#queue[this.size - 1].priority >= options.priority) {\n this.#queue.push(element);\n return;\n }\n const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n dequeue() {\n const item = this.#queue.shift();\n return item?.run;\n }\n filter(options) {\n return this.#queue.filter((element) => element.priority === options.priority).map((element) => element.run);\n }\n get size() {\n return this.#queue.length;\n }\n}\n","import { EventEmitter } from 'eventemitter3';\nimport pTimeout, { TimeoutError } from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n #carryoverConcurrencyCount;\n #isIntervalIgnored;\n #intervalCount = 0;\n #intervalCap;\n #interval;\n #intervalEnd = 0;\n #intervalId;\n #timeoutId;\n #queue;\n #queueClass;\n #pending = 0;\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n #concurrency;\n #isPaused;\n #throwOnTimeout;\n /**\n Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already.\n\n Applies to each future operation.\n */\n timeout;\n // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()`\n constructor(options) {\n super();\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverConcurrencyCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap?.toString() ?? ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval?.toString() ?? ''}\\` (${typeof options.interval})`);\n }\n this.#carryoverConcurrencyCount = options.carryoverConcurrencyCount;\n this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;\n this.#intervalCap = options.intervalCap;\n this.#interval = options.interval;\n this.#queue = new options.queueClass();\n this.#queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n this.timeout = options.timeout;\n this.#throwOnTimeout = options.throwOnTimeout === true;\n this.#isPaused = options.autoStart === false;\n }\n get #doesIntervalAllowAnother() {\n return this.#isIntervalIgnored || this.#intervalCount < this.#intervalCap;\n }\n get #doesConcurrentAllowAnother() {\n return this.#pending < this.#concurrency;\n }\n #next() {\n this.#pending--;\n this.#tryToStartAnother();\n this.emit('next');\n }\n #onResumeInterval() {\n this.#onInterval();\n this.#initializeIntervalIfNeeded();\n this.#timeoutId = undefined;\n }\n get #isIntervalPaused() {\n const now = Date.now();\n if (this.#intervalId === undefined) {\n const delay = this.#intervalEnd - now;\n if (delay < 0) {\n // Act as the interval was done\n // We don't need to resume it here because it will be resumed on line 160\n this.#intervalCount = (this.#carryoverConcurrencyCount) ? this.#pending : 0;\n }\n else {\n // Act as the interval is pending\n if (this.#timeoutId === undefined) {\n this.#timeoutId = setTimeout(() => {\n this.#onResumeInterval();\n }, delay);\n }\n return true;\n }\n }\n return false;\n }\n #tryToStartAnother() {\n if (this.#queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n if (this.#intervalId) {\n clearInterval(this.#intervalId);\n }\n this.#intervalId = undefined;\n this.emit('empty');\n if (this.#pending === 0) {\n this.emit('idle');\n }\n return false;\n }\n if (!this.#isPaused) {\n const canInitializeInterval = !this.#isIntervalPaused;\n if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {\n const job = this.#queue.dequeue();\n if (!job) {\n return false;\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n this.#initializeIntervalIfNeeded();\n }\n return true;\n }\n }\n return false;\n }\n #initializeIntervalIfNeeded() {\n if (this.#isIntervalIgnored || this.#intervalId !== undefined) {\n return;\n }\n this.#intervalId = setInterval(() => {\n this.#onInterval();\n }, this.#interval);\n this.#intervalEnd = Date.now() + this.#interval;\n }\n #onInterval() {\n if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {\n clearInterval(this.#intervalId);\n this.#intervalId = undefined;\n }\n this.#intervalCount = this.#carryoverConcurrencyCount ? this.#pending : 0;\n this.#processQueue();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */\n #processQueue() {\n // eslint-disable-next-line no-empty\n while (this.#tryToStartAnother()) { }\n }\n get concurrency() {\n return this.#concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this.#concurrency = newConcurrency;\n this.#processQueue();\n }\n async #throwOnAbort(signal) {\n return new Promise((_resolve, reject) => {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n }, { once: true });\n });\n }\n async add(function_, options = {}) {\n options = {\n timeout: this.timeout,\n throwOnTimeout: this.#throwOnTimeout,\n ...options,\n };\n return new Promise((resolve, reject) => {\n this.#queue.enqueue(async () => {\n this.#pending++;\n this.#intervalCount++;\n try {\n options.signal?.throwIfAborted();\n let operation = function_({ signal: options.signal });\n if (options.timeout) {\n operation = pTimeout(Promise.resolve(operation), { milliseconds: options.timeout });\n }\n if (options.signal) {\n operation = Promise.race([operation, this.#throwOnAbort(options.signal)]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n if (error instanceof TimeoutError && !options.throwOnTimeout) {\n resolve();\n return;\n }\n reject(error);\n this.emit('error', error);\n }\n finally {\n this.#next();\n }\n }, options);\n this.emit('add');\n this.#tryToStartAnother();\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!this.#isPaused) {\n return this;\n }\n this.#isPaused = false;\n this.#processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n this.#isPaused = true;\n }\n /**\n Clear the queue.\n */\n clear() {\n this.#queue = new this.#queueClass();\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the queue is empty.\n if (this.#queue.size < limit) {\n return;\n }\n await this.#onEvent('next', () => this.#queue.size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.#pending === 0 && this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('idle');\n }\n async #onEvent(event, filter) {\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n this.off(event, listener);\n resolve();\n };\n this.on(event, listener);\n });\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return this.#queue.size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return this.#queue.filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return this.#pending;\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return this.#isPaused;\n }\n}\n","import BN from \"bn.js\";\n\nimport { ContractError } from \"../solana/types.js\";\n\n/**\n * Used for conversion of token amounts to their Big Number representation.\n * Get Big Number representation in the smallest units from the same value in the highest units.\n * @param {number} value - Number of tokens you want to convert to its BN representation.\n * @param {number} decimals - Number of decimals the token has.\n */\nexport const getBN = (value: number, decimals: number): BN => {\n const decimalPart = value - Math.trunc(value);\n const integerPart = new BN(Math.trunc(value));\n\n const decimalE = new BN(decimalPart * 1e9);\n\n const sum = integerPart.mul(new BN(1e9)).add(decimalE);\n const resultE = sum.mul(new BN(10).pow(new BN(decimals)));\n return resultE.div(new BN(1e9));\n};\n\n/**\n * Used for token amounts conversion from their Big Number representation to number.\n * Get value in the highest units from BN representation of the same value in the smallest units.\n * @param {BN} value - Big Number representation of value in the smallest units.\n * @param {number} decimals - Number of decimals the token has.\n */\nexport const getNumberFromBN = (value: BN, decimals: number): number =>\n value.gt(new BN(2 ** 53 - 1)) ? value.div(new BN(10 ** decimals)).toNumber() : value.toNumber() / 10 ** decimals;\n\n/**\n * Used to make on chain calls to the contract and wrap raised errors if any\n * @param func function that interacts with the contract\n * @param callback callback that may be used to extract error code\n * @returns {T}\n */\nexport async function handleContractError<T>(\n func: () => Promise<T>,\n callback?: (err: Error) => string | null,\n): Promise<T> {\n try {\n return await func();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (err: any) {\n if (err instanceof Error) {\n if (callback) {\n throw new ContractError(err, callback(err));\n }\n throw new ContractError(err);\n }\n throw err;\n }\n}\n\n/**\n * Pause async function execution for given amount of milliseconds\n * @param ms millisecond to sleep for\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport const divCeilN = (n: bigint, d: bigint): bigint => n / d + (n % d ? BigInt(1) : BigInt(0));\n\n/**\n * Multiply a bigint by a JS number using string-based fixed-point to avoid overflow/precision issues.\n * Returns floor(x * y).\n */\nexport function multiplyBigIntByNumber(x: bigint, y: number, scaleDigits = 9): bigint {\n if (!Number.isFinite(y) || y === 0) return 0n;\n const isNegative = (x < 0n) !== (y < 0);\n const absX = x < 0n ? -x : x;\n const absY = Math.abs(y);\n\n const s = absY.toFixed(scaleDigits);\n const [intPart, fracPartRaw = \"\"] = s.split(\".\");\n const fracPart = fracPartRaw.padEnd(scaleDigits, \"0\").slice(0, scaleDigits);\n const yScaled = BigInt(intPart + fracPart); // absY * 10^scaleDigits\n const scale = 10n ** BigInt(scaleDigits);\n const product = (absX * yScaled) / scale;\n return isNegative ? -product : product;\n}\n","import type { PublicKey } from \"@solana/web3.js\";\n\nconst prefix = \"Assertion failed\";\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const invariant: (condition: any, message?: string | (() => string)) => asserts condition = (\n condition,\n message,\n) => {\n if (condition) {\n return;\n }\n const provided: string | undefined = typeof message === \"function\" ? message() : message;\n const value: string = provided ? `${prefix}: ${provided}` : prefix;\n throw new Error(value);\n};\n\nexport function assertHasPublicKey<T extends { publicKey?: PublicKey | null }>(\n value: T,\n message?: string | (() => string),\n): asserts value is T & { publicKey: PublicKey } {\n invariant(value.publicKey, message ?? \"publicKey is missing\");\n}\n\n","{\n \"address\": \"pardpVtPjC8nLj1Dwncew62mUzfChdCX1EaoZe8oCAa\",\n \"metadata\": {\n \"name\": \"partner_oracle\",\n \"version\": \"1.0.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Created with Anchor\"\n },\n \"instructions\": [\n {\n \"name\": \"airdrop_clear_expired_fees\",\n \"discriminator\": [\n 203,\n 5,\n 237,\n 235,\n 32,\n 38,\n 150,\n 235\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"docs\": [\n \"Account that stores the config\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"airdrop_get_fees\",\n \"discriminator\": [\n 185,\n 20,\n 28,\n 207,\n 70,\n 243,\n 32,\n 62\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"docs\": [\n \"Account that stores the config\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"pubkey\",\n \"type\": \"pubkey\"\n }\n ],\n \"returns\": {\n \"defined\": {\n \"name\": \"AirdropFees\"\n }\n }\n },\n {\n \"name\": \"airdrop_initialize_config\",\n \"discriminator\": [\n 2,\n 110,\n 102,\n 10,\n 34,\n 83,\n 164,\n 55\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Account that will cover tx fees, can be anybody since the instruction is safe\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"airdrop_remove_fees\",\n \"discriminator\": [\n 119,\n 246,\n 202,\n 91,\n 59,\n 94,\n 252,\n 239\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Fee Authority\"\n ],\n \"writable\": true,\n \"signer\": true,\n \"address\": \"CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7\"\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"Account that stores the config\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"pubkey\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"airdrop_write_default_fees\",\n \"discriminator\": [\n 37,\n 104,\n 254,\n 202,\n 136,\n 124,\n 245,\n 94\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Fee Authority\"\n ],\n \"writable\": true,\n \"signer\": true,\n \"address\": \"CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7\"\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"Account that stores the config\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"creation_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"price_oracle_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_min_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_max_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"allocation_factor\",\n \"type\": \"f64\"\n },\n {\n \"name\": \"clawback_token_fee_percent\",\n \"type\": \"f64\"\n }\n ]\n },\n {\n \"name\": \"airdrop_write_fees\",\n \"discriminator\": [\n 71,\n 165,\n 178,\n 215,\n 19,\n 70,\n 146,\n 71\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Fee Authority\"\n ],\n \"writable\": true,\n \"signer\": true,\n \"address\": \"CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7\"\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"Account that stores the config\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"pubkey\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creation_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"price_oracle_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_min_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_max_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"allocation_factor\",\n \"type\": \"f64\"\n },\n {\n \"name\": \"clawback_token_fee_percent\",\n \"type\": \"f64\"\n },\n {\n \"name\": \"expiry_ts\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"vesting_get_fees\",\n \"discriminator\": [\n 239,\n 230,\n 28,\n 173,\n 134,\n 247,\n 57,\n 176\n ],\n \"accounts\": [\n {\n \"name\": \"partners\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 114,\n 109,\n 95,\n 102,\n 101,\n 101,\n 115\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"pubkey\",\n \"type\": \"pubkey\"\n }\n ],\n \"returns\": {\n \"defined\": {\n \"name\": \"VestingFees\"\n }\n }\n },\n {\n \"name\": \"vesting_initialize_partners\",\n \"discriminator\": [\n 205,\n 170,\n 148,\n 219,\n 143,\n 38,\n 77,\n 196\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Account that will cover tx fees, can be anybody since the instruction is safe\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"partners\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 114,\n 109,\n 95,\n 102,\n 101,\n 101,\n 115\n ]\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"vesting_remove_fees\",\n \"discriminator\": [\n 233,\n 176,\n 222,\n 64,\n 79,\n 14,\n 48,\n 168\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Account that will cover tx fees, should be equal to creator if not is not expired\"\n ],\n \"writable\": true,\n \"signer\": true,\n \"address\": \"CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7\"\n },\n {\n \"name\": \"partners\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 114,\n 109,\n 95,\n 102,\n 101,\n 101,\n 115\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"pubkey\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"vesting_write_default_fees\",\n \"discriminator\": [\n 96,\n 198,\n 97,\n 81,\n 162,\n 50,\n 51,\n 10\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Account that will cover tx fees, should be equal to creator if not is not expired\"\n ],\n \"writable\": true,\n \"signer\": true,\n \"address\": \"CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7\"\n },\n {\n \"name\": \"partners\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 114,\n 109,\n 95,\n 102,\n 101,\n 101,\n 115\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"creation_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"auto_claim_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"token_fee_percent\",\n \"type\": \"f32\"\n }\n ]\n },\n {\n \"name\": \"vesting_write_fees\",\n \"discriminator\": [\n 251,\n 24,\n 6,\n 241,\n 182,\n 56,\n 93,\n 100\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Account that will cover tx fees, should be equal to creator if not is not expired\"\n ],\n \"writable\": true,\n \"signer\": true,\n \"address\": \"CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7\"\n },\n {\n \"name\": \"partners\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 114,\n 109,\n 95,\n 102,\n 101,\n 101,\n 115\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"pubkey\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creation_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"auto_claim_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"token_fee_percent\",\n \"type\": \"f32\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"AirdropConfig\",\n \"discriminator\": [\n 194,\n 149,\n 223,\n 142,\n 42,\n 98,\n 128,\n 16\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"Unauthorized\",\n \"msg\": \"Account is not authorized to execute this instruction\"\n },\n {\n \"code\": 6001,\n \"name\": \"ArithmeticError\",\n \"msg\": \"Arithmetic Error (overflow/underflow)\"\n },\n {\n \"code\": 6100,\n \"name\": \"InvalidExpiry\",\n \"msg\": \"Provided expiry ts is invalid\"\n },\n {\n \"code\": 6101,\n \"name\": \"NoExpiredFees\",\n \"msg\": \"No expired fees found, transaction won't change the config\"\n },\n {\n \"code\": 6200,\n \"name\": \"InvalidVestingFee\",\n \"msg\": \"Received invalid Vesting Fee configuration\"\n },\n {\n \"code\": 6300,\n \"name\": \"InvalidAirdropFee\",\n \"msg\": \"Received invalid Airdrop Fee configuration\"\n },\n {\n \"code\": 6301,\n \"name\": \"AirdropConfigFull\",\n \"msg\": \"Airdrop config is full, can not write fees\"\n }\n ],\n \"types\": [\n {\n \"name\": \"AirdropConfig\",\n \"serialization\": \"bytemuck\",\n \"repr\": {\n \"kind\": \"c\"\n },\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"usd_multiplier\",\n \"docs\": [\n \"Multiplier to apply when calculating ALL fees\"\n ],\n \"type\": \"f32\"\n },\n {\n \"name\": \"solana_price\",\n \"docs\": [\n \"Last solana price used\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"creation_fee\",\n \"docs\": [\n \"Creation SOL fee\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"price_oracle_fee\",\n \"docs\": [\n \"Fee for custom price oracle used in dynamic airdrops\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_min_fee\",\n \"docs\": [\n \"Dynamic claim fee in SOL, min\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_max_fee\",\n \"docs\": [\n \"Dynamic claim fee in SOL, max\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"allocation_factor\",\n \"docs\": [\n \"Factor to multiple claimable SOL by when calculating fee\"\n ],\n \"type\": \"f64\"\n },\n {\n \"name\": \"clawback_token_fee_percent\",\n \"docs\": [\n \"Toke % fee on clawback\"\n ],\n \"type\": \"f64\"\n },\n {\n \"name\": \"buffer\",\n \"type\": {\n \"array\": [\n \"u8\",\n 144\n ]\n }\n },\n {\n \"name\": \"partners\",\n \"type\": {\n \"array\": [\n {\n \"defined\": {\n \"name\": \"AirdropPartner\"\n }\n },\n 100\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"AirdropFees\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"pubkey\",\n \"docs\": [\n \"Account for which the fees were configured\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creation_fee\",\n \"docs\": [\n \"Creation SOL fee\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"price_oracle_fee\",\n \"docs\": [\n \"Fee for custom price oracle used in dynamic airdrops\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_min_fee\",\n \"docs\": [\n \"Dynamic claim fee in SOL, min\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_max_fee\",\n \"docs\": [\n \"Dynamic claim fee in SOL, max\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"allocation_factor\",\n \"docs\": [\n \"Factor to multiple claimable SOL by when calculating fee\"\n ],\n \"type\": \"f64\"\n },\n {\n \"name\": \"clawback_token_fee_percent\",\n \"docs\": [\n \"Token % fee on clawback\"\n ],\n \"type\": \"f64\"\n }\n ]\n }\n },\n {\n \"name\": \"AirdropPartner\",\n \"serialization\": \"bytemuck\",\n \"repr\": {\n \"kind\": \"c\"\n },\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"pubkey\",\n \"docs\": [\n \"Pubkey of the partner\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creation_fee\",\n \"docs\": [\n \"Creation SOL fee\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"price_oracle_fee\",\n \"docs\": [\n \"Fee for custom price oracle used in dynamic airdrops\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_min_fee\",\n \"docs\": [\n \"Dynamic claim fee in SOL, min\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_max_fee\",\n \"docs\": [\n \"Dynamic claim fee in SOL, max\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"allocation_factor\",\n \"docs\": [\n \"Factor to multiple claimable SOL by when calculating fee\"\n ],\n \"type\": \"f64\"\n },\n {\n \"name\": \"clawback_token_fee_percent\",\n \"docs\": [\n \"Toke % fee on clawback\"\n ],\n \"type\": \"f64\"\n },\n {\n \"name\": \"expiry_ts\",\n \"docs\": [\n \"Time when fee configuration expires\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"buffer\",\n \"docs\": [\n \"Buffer for additional fields\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 16\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"VestingFees\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"pubkey\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creation_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"auto_claim_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"token_fee_percent\",\n \"type\": \"f32\"\n }\n ]\n }\n }\n ]\n}","import {\n createAssociatedTokenAccountInstruction,\n getAssociatedTokenAddress,\n unpackMint,\n type Mint,\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n} from \"@solana/spl-token\";\nimport type { SignerWalletAdapter } from \"@solana/wallet-adapter-base\";\nimport bs58 from \"bs58\";\nimport PQueue from \"p-queue\";\nimport {\n ComputeBudgetProgram,\n Keypair,\n type PublicKey,\n SendTransactionError,\n type Transaction,\n type TransactionInstruction,\n TransactionMessage,\n VersionedTransaction,\n type AccountInfo,\n type BlockhashWithExpiryBlockHeight,\n type Commitment,\n type Connection,\n type Context,\n type RpcResponseAndContext,\n type SignatureStatus,\n type SimulatedTransactionResponse,\n type AddressLookupTableAccount,\n} from \"@solana/web3.js\";\nimport { Program } from \"@coral-xyz/anchor\";\n\nimport {\n type Account,\n type AtaParams,\n type ConfirmationParams,\n type ITransactionExt,\n type ThrottleParams,\n type TransactionExecutionParams,\n TransactionFailedError,\n} from \"./types.js\";\nimport { sleep } from \"../lib/utils.js\";\nimport { assertHasPublicKey, invariant } from \"../lib/assertions.js\";\nimport type { PartnerOracle } from \"./descriptor/partner_oracle.js\";\nimport PartnerOracleIDL from \"./descriptor/idl/partner_oracle.json\";\n\nconst SIMULATE_TRIES = 3;\n\nexport const buildSendThrottler = (sendRate: number, sendInterval = 1000): PQueue => {\n return new PQueue({ concurrency: sendRate, intervalCap: 1, interval: sendInterval });\n};\n\n/**\n * Wrapper function for Solana web3 getProgramAccounts with slightly better call interface\n * @param {Connection} connection - Solana web3 connection object.\n * @param {PublicKey} wallet - PublicKey to compare against.\n * @param {number} offset - Offset of bits of the PublicKey in the account binary.\n * @param {PublicKey} programId - Solana program ID.\n * @return {Promise<Account[]>} - Array of resulting accounts.\n */\nexport async function getProgramAccounts(\n connection: Connection,\n wallet: PublicKey,\n offset: number,\n programId: PublicKey,\n): Promise<Account[]> {\n const programAccounts = await connection?.getProgramAccounts(programId, {\n filters: [\n {\n memcmp: {\n offset,\n bytes: wallet.toBase58(),\n },\n },\n ],\n });\n\n return [...programAccounts];\n}\n\n/**\n * Utility function to check if the transaction initiator is a Wallet object\n * @param {Keypair | SignerWalletAdapter} walletOrKeypair - Wallet or Keypair in question\n * @return {boolean} - Returns true if parameter is a Wallet.\n */\nexport function isSignerWallet(walletOrKeypair: Keypair | SignerWalletAdapter): walletOrKeypair is SignerWalletAdapter {\n return (<SignerWalletAdapter>walletOrKeypair).signTransaction !== undefined;\n}\n\n/**\n * Utility function to check if the transaction initiator a Keypair object, tries to mitigate version mismatch issues\n * @param walletOrKeypair {Keypair | SignerWalletAdapter} walletOrKeypair - Wallet or Keypair in question\n * @returns {boolean} - Returns true if parameter is a Keypair.\n */\nexport function isSignerKeypair(walletOrKeypair: Keypair | SignerWalletAdapter): walletOrKeypair is Keypair {\n return (\n walletOrKeypair instanceof Keypair ||\n walletOrKeypair.constructor === Keypair ||\n walletOrKeypair.constructor.name === Keypair.prototype.constructor.name\n );\n}\n\n/**\n * Utility function to check whether given transaction is Versioned\n * @param tx {Transaction | VersionedTransaction} - Transaction to check\n * @returns {boolean} - Returns true if transaction is Versioned.\n */\nexport function isTransactionVersioned(tx: Transaction | VersionedTransaction): tx is VersionedTransaction {\n return \"message\" in tx;\n}\n\n/**\n * Creates a Transaction with given instructions and optionally signs it.\n * @param connection - Solana client connection\n * @param ixs - Instructions to add to the Transaction\n * @param payer - PublicKey of payer\n * @param commitment - optional Commitment that will be used to fetch latest blockhash\n * @param partialSigners - optional signers that will be used to partially sign a Transaction\n * @param lookupTables - lookup table accounts to use in the transaction\n * @returns Transaction and Blockhash\n */\nexport async function prepareTransaction(\n connection: Connection,\n ixs: TransactionInstruction[],\n payer: PublicKey | undefined | null,\n commitment?: Commitment,\n partialSigners?: (Keypair | undefined)[],\n lookupTables?: AddressLookupTableAccount[],\n): Promise<{\n tx: VersionedTransaction;\n hash: BlockhashWithExpiryBlockHeight;\n context: Context;\n}> {\n if (!payer) {\n throw new Error(\"Payer public key is not provided!\");\n }\n\n const { value: hash, context } = await connection.getLatestBlockhashAndContext(commitment);\n\n return {\n tx: createVersionedTransaction(ixs, payer, hash.blockhash, partialSigners, lookupTables),\n hash,\n context,\n };\n}\n\nexport function createVersionedTransaction(\n ixs: TransactionInstruction[],\n payer: PublicKey | undefined | null,\n recentBlockhash: BlockhashWithExpiryBlockHeight[\"blockhash\"],\n partialSigners?: (Keypair | undefined)[],\n lookupTables?: AddressLookupTableAccount[],\n): VersionedTransaction {\n invariant(payer, \"Payer public key is not provided!\");\n const messageV0 = new TransactionMessage({\n payerKey: payer,\n recentBlockhash,\n instructions: ixs,\n }).compileToV0Message(lookupTables);\n const tx = new VersionedTransaction(messageV0);\n const signers = partialSigners?.filter((item): item is Keypair => !!item) ?? undefined;\n if (signers) {\n tx.sign(signers);\n }\n\n return tx;\n}\n\nexport async function signTransaction<T extends Transaction | VersionedTransaction>(\n invoker: Keypair | SignerWalletAdapter,\n tx: T,\n): Promise<T> {\n let signedTx: T;\n if (isSignerWallet(invoker)) {\n signedTx = await invoker.signTransaction(tx);\n } else {\n if (isTransactionVersioned(tx)) {\n tx.sign([invoker]);\n } else {\n tx.partialSign(invoker);\n }\n signedTx = tx;\n }\n return signedTx;\n}\n\n/**\n * Signs, sends and confirms Transaction\n * @param connection - Solana client connection\n * @param invoker - Keypair used as signer\n * @param tx - Transaction instance\n * @param confirmationParams - Confirmation Params that will be used for execution\n * @param transactionExecutionParams - rate or throttler instance to throttle TX sending - to not spam the blockchain too much and solana execution params (eg. skipSimulation)\n * @returns Transaction signature\n */\nexport async function signAndExecuteTransaction(\n connection: Connection,\n invoker: Keypair | SignerWalletAdapter,\n tx: Transaction | VersionedTransaction,\n confirmationParams: ConfirmationParams,\n transactionExecutionParams: TransactionExecutionParams,\n): Promise<string> {\n const signedTx = await signTransaction(invoker, tx);\n\n return executeTransaction(connection, signedTx, confirmationParams, transactionExecutionParams);\n}\n\n/**\n * Sends and confirms Transaction\n * Uses custom confirmation logic that:\n * - simulates tx before sending separately\n * - sends transaction without preFlight checks but with some valuable flags https://twitter.com/jordaaash/status/1774892862049800524?s=46&t=bhZ10V0r7IX5Lk5kKzxfGw\n * - rebroadcasts a tx every 500 ms\n * - after broadcasting check whether tx has executed once\n * - catch errors for every actionable item, throw only the ones that signal that tx has failed\n * - otherwise there is a chance of marking a landed tx as failed if it was broadcasted at least once\n * @param connection - Solana client connection\n * @param tx - Transaction instance\n * @param confirmationParams - Confirmation Params that will be used for execution\n * @param transactionExecutionParams - rate or throttler instance to throttle TX sending - to not spam the blockchain too much and solana execution params (eg. skipSimulation)\n * @returns Transaction signature\n */\nexport async function executeTransaction(\n connection: Connection,\n tx: Transaction | VersionedTransaction,\n confirmationParams: ConfirmationParams,\n transactionExecutionParams: TransactionExecutionParams,\n): Promise<string> {\n if (tx.signatures.length === 0) {\n throw Error(\"Error with transaction parameters.\");\n }\n if (!transactionExecutionParams.skipSimulation) {\n await simulateTransaction(connection, tx);\n }\n return sendAndConfirmTransaction(connection, tx, confirmationParams, transactionExecutionParams);\n}\n\n/**\n * Launches a PromisePool with all transaction being executed at the same time, allows to throttle all TXs through one Queue\n * @param connection - Solana client connection\n * @param txs - Transactions\n * @param confirmationParams - Confirmation Params that will be used for execution\n * @param throttleParams - rate or throttler instance to throttle TX sending - to not spam the blockchain too much\n * @param throttleParams.sendRate - rate\n * @param throttleParams.sendThrottler - throttler instance\n * @returns Raw Promise Results - should be handled by the consumer and unwrapped accordingly\n */\nexport async function executeMultipleTransactions(\n connection: Connection,\n txs: (Transaction | VersionedTransaction)[],\n confirmationParams: ConfirmationParams,\n { sendRate = 1, sendThrottler, ...throttlingParams }: ThrottleParams,\n): Promise<PromiseSettledResult<string>[]> {\n if (!sendThrottler) {\n sendThrottler = buildSendThrottler(sendRate);\n }\n return Promise.allSettled(\n txs.map((tx) =>\n executeTransaction(connection, tx, confirmationParams, {\n ...throttlingParams,\n sendRate: sendRate,\n sendThrottler: sendThrottler,\n }),\n ),\n );\n}\n\n/**\n * Sends and confirm transaction in a loop, constantly re-broadcsting the tx until Blockheight expires.\n * - we add additional 30 bocks to account for validators in an PRC pool divergence\n * @param connection - Solana client connection\n * @param tx - Transaction instance\n * @param confirmationParams - Confirmation Params that will be used for execution\n * @param confirmationParams.hash - blockhash information, the same hash should be used in the Transaction\n * @param confirmationParams.context - context at which blockhash has been retrieve\n * @param confirmationParams.commitment - optional commitment that will be used for simulation and confirmation\n * @param throttleParams - rate or throttler instance to throttle TX sending - to not spam the blockchain too much\n * @param throttleParams.sendRate - rate\n * @param throttleParams.sendThrottler - throttler instance\n */\nexport async function sendAndConfirmTransaction(\n connection: Connection,\n tx: Transaction | VersionedTransaction,\n { hash, context, commitment }: ConfirmationParams,\n { sendRate = 1, sendThrottler, waitBeforeConfirming }: ThrottleParams,\n): Promise<string> {\n const isVersioned = isTransactionVersioned(tx);\n\n let signature: string;\n if (isVersioned) {\n signature = bs58.encode(tx.signatures[0]!);\n } else {\n signature = bs58.encode(tx.signature!);\n }\n\n if (!sendThrottler) {\n sendThrottler = buildSendThrottler(sendRate);\n }\n\n let blockheight = await connection.getBlockHeight(commitment);\n let transactionSent = false;\n const rawTransaction = tx.serialize();\n while (blockheight < hash.lastValidBlockHeight + 15) {\n try {\n if (blockheight < hash.lastValidBlockHeight || !transactionSent) {\n await sendThrottler.add(async () =>\n connection.sendRawTransaction(rawTransaction, {\n maxRetries: 0,\n minContextSlot: context.slot,\n preflightCommitment: commitment,\n skipPreflight: true,\n }),\n );\n transactionSent = true;\n }\n } catch (e) {\n if (\n transactionSent ||\n (e instanceof SendTransactionError && e.message.includes(\"Minimum context slot has not been reached\"))\n ) {\n await sleep(500);\n continue;\n }\n throw e;\n }\n // Wait at least 5 slots (~400ms before confirming)\n await sleep(waitBeforeConfirming ?? 2000);\n try {\n const value = await confirmAndEnsureTransaction(connection, signature);\n if (value) {\n return signature;\n }\n } catch (e) {\n if (e instanceof TransactionFailedError) {\n throw e;\n }\n await sleep(500);\n }\n try {\n blockheight = await connection.getBlockHeight(commitment);\n } catch (_e) {\n await sleep(500);\n }\n }\n throw new Error(`Transaction ${signature} expired.`);\n}\n\nexport async function simulateTransaction(\n connection: Connection,\n tx: Transaction | VersionedTransaction,\n): Promise<RpcResponseAndContext<SimulatedTransactionResponse>> {\n let res: RpcResponseAndContext<SimulatedTransactionResponse>;\n for (let i = 0; i < SIMULATE_TRIES; i++) {\n if (isTransactionVersioned(tx)) {\n res = await connection.simulateTransaction(tx);\n } else {\n res = await connection.simulateTransaction(tx);\n }\n if (res.value.err) {\n const errMessage = JSON.stringify(res.value.err);\n if (!errMessage.includes(\"BlockhashNotFound\") || i === SIMULATE_TRIES - 1) {\n throw new SendTransactionError({\n action: \"simulate\",\n signature: \"\",\n transactionMessage: `failed to simulate transaction: ${\n typeof res.value.err === \"string\" ? res.value.err : errMessage\n }`,\n logs: res.value.logs ?? undefined,\n });\n }\n continue;\n }\n return res;\n }\n\n throw new SendTransactionError({\n action: \"simulate\",\n signature: \"\",\n transactionMessage: \"failed to simulate transaction\",\n });\n}\n\n/**\n * Confirms and validates transaction success once\n * @param connection - Solana client connection\n * @param signature - Transaction signature\n * @param ignoreError - return status even if tx failed\n * @returns Transaction Status\n */\nexport async function confirmAndEnsureTransaction(\n connection: Connection,\n signature: string,\n ignoreError?: boolean,\n): Promise<SignatureStatus | null> {\n const response = await connection.getSignatureStatuses([signature]);\n if (!response || response.value.length === 0 || response.value[0] === null) {\n return null;\n }\n const value = response.value[0];\n if (!value) {\n return null;\n }\n if (!ignoreError && value.err) {\n // That's how solana-web3js does it, `err` here is an object that won't really be handled\n throw new TransactionFailedError(`Raw transaction ${signature} failed (${JSON.stringify({ err: value.err })})`);\n }\n switch (connection.commitment) {\n case \"confirmed\":\n case \"single\":\n case \"singleGossip\": {\n if (value.confirmationStatus === \"processed\") {\n return null;\n }\n break;\n }\n case \"finalized\":\n case \"max\":\n case \"root\": {\n if (value.confirmationStatus === \"processed\" || value.confirmationStatus === \"confirmed\") {\n return null;\n }\n break;\n }\n // exhaust enums to ensure full coverage\n case \"processed\":\n case \"recent\":\n }\n return value;\n}\n\n/**\n * Shorthand call signature for getAssociatedTokenAddress, with allowance for address to be offCurve\n * @param {PublicKey} mint - SPL token Mint address.\n * @param {PublicKey} owner - Owner of the Associated Token Address\n * @param {PublicKey} programId - Program ID of the mint\n * @return {Promise<PublicKey>} - Associated Token Address\n */\nexport function ata(mint: PublicKey, owner: PublicKey, programId?: PublicKey): Promise<PublicKey> {\n return getAssociatedTokenAddress(mint, owner, true, programId);\n}\n\n/**\n * Function that checks whether ATA exists for each provided owner\n * @param connection - Solana client connection\n * @param paramsBatch - Array of Params for each ATA account: {mint, owner}\n * @returns Array of boolean where each member corresponds to an owner\n */\nexport async function ataBatchExist(connection: Connection, paramsBatch: AtaParams[]): Promise<boolean[]> {\n const tokenAccounts = await Promise.all(\n paramsBatch.map(async ({ mint, owner, programId }) => {\n return ata(mint, owner, programId);\n }),\n );\n const response = await connection.getMultipleAccountsInfo(tokenAccounts);\n return response.map((accInfo) => !!accInfo);\n}\n\nexport async function enrichAtaParams(connection: Connection, paramsBatch: AtaParams[]): Promise<AtaParams[]> {\n const programIdByMint: { [key: string]: PublicKey } = {};\n return Promise.all(\n paramsBatch.map(async (params) => {\n if (params.programId) {\n return params;\n }\n const mintStr = params.mint.toString();\n if (!(mintStr in programIdByMint)) {\n const { tokenProgramId } = await getMintAndProgram(connection, params.mint);\n programIdByMint[mintStr] = tokenProgramId;\n }\n params.programId = programIdByMint[mintStr];\n return params;\n }),\n );\n}\n\n/**\n * Generates a Transaction to create ATA for an array of owners\n * @param connection - Solana client connection\n * @param payer - Transaction invoker, should be a signer\n * @param paramsBatch - Array of Params for an each ATA account: {mint, owner}\n * @param commitment - optional commitment that will be used to fetch Blockhash\n * @returns Unsigned Transaction with create ATA instructions\n */\nexport async function generateCreateAtaBatchTx(\n connection: Connection,\n payer: PublicKey,\n paramsBatch: AtaParams[],\n commitment?: Commitment,\n): Promise<{\n tx: VersionedTransaction;\n hash: BlockhashWithExpiryBlockHeight;\n context: Context;\n}> {\n paramsBatch = await enrichAtaParams(connection, paramsBatch);\n const ixs: TransactionInstruction[] = await Promise.all(\n paramsBatch.map(async ({ mint, owner, programId }) => {\n return createAssociatedTokenAccountInstruction(payer, await ata(mint, owner), owner, mint, programId);\n }),\n );\n const { value: hash, context } = await connection.getLatestBlockhashAndContext({ commitment });\n return { tx: createVersionedTransaction(ixs, payer, hash.blockhash), hash, context };\n}\n\n/**\n * Creates ATA for an array of owners\n * @param connection - Solana client connection\n * @param invoker - Transaction invoker and payer\n * @param paramsBatch - Array of Params for an each ATA account: {mint, owner}\n * @param commitment - optional commitment that will be used to fetch Blockhash\n * @param rate - throttle rate for tx sending\n * @returns Transaction signature\n */\nexport async function createAtaBatch(\n connection: Connection,\n invoker: Keypair | SignerWalletAdapter,\n paramsBatch: AtaParams[],\n commitment?: Commitment,\n rate?: number,\n): Promise<string> {\n const { tx, hash, context } = await generateCreateAtaBatchTx(\n connection,\n invoker.publicKey!,\n await enrichAtaParams(connection, paramsBatch),\n commitment,\n );\n return signAndExecuteTransaction(connection, invoker, tx, { hash, context, commitment }, { sendRate: rate });\n}\n\n/**\n * Utility function that checks whether associated token accounts exist and return instructions to populate them if not\n * @param connection - Solana client connection\n * @param owners - Array of ATA owners\n * @param mint - Mint for which ATA will be checked\n * @param invoker - Transaction invoker and payer\n * @param programId - Program ID of the Mint\n * @param payer - optional payer account, will be used instead of invoker as `source`\n * @returns Array of Transaction Instructions that should be added to a transaction\n */\nexport async function checkOrCreateAtaBatch(\n connection: Connection,\n owners: PublicKey[],\n mint: PublicKey,\n invoker: { publicKey: PublicKey | null },\n programId?: PublicKey,\n payer?: PublicKey,\n): Promise<TransactionInstruction[]> {\n assertHasPublicKey(invoker, \"Invoker's PublicKey is not available, check passed wallet adapter!\");\n const ixs: TransactionInstruction[] = [];\n if (!programId) {\n programId = (await getMintAndProgram(connection, mint)).tokenProgramId;\n }\n // TODO: optimize fetching and maps/arrays\n const atas: PublicKey[] = [];\n for (const owner of owners) {\n atas.push(await ata(mint, owner, programId));\n }\n const response = await connection.getMultipleAccountsInfo(atas);\n for (let i = 0; i < response.length; i++) {\n if (!response[i]) {\n ixs.push(\n createAssociatedTokenAccountInstruction(payer ?? invoker.publicKey, atas[i]!, owners[i]!, mint, programId),\n );\n }\n }\n return ixs;\n}\n\n/**\n * Create Base instructions for Solana\n * - sets compute price if `computePrice` is provided. If `computePrice` is a function, it will be ignored (the value must be resolved before calling this function).\n * - sets compute limit if `computeLimit` is provided. If `computeLimit` is a function, it will be ignored (the value must be resolved before calling this function).\n */\nexport function prepareBaseInstructions(\n connection: Connection,\n { computePrice, computeLimit }: ITransactionExt,\n): TransactionInstruction[] {\n const ixs: TransactionInstruction[] = [];\n\n if (computePrice && typeof computePrice !== \"function\") {\n ixs.push(ComputeBudgetProgram.setComputeUnitPrice({ microLamports: computePrice }));\n }\n if (computeLimit && typeof computeLimit === \"number\") {\n ixs.push(ComputeBudgetProgram.setComputeUnitLimit({ units: computeLimit }));\n }\n\n return ixs;\n}\n\n/**\n * Retrieve information about a mint and its program ID, supports all Token Programs.\n *\n * @param connection Connection to use\n * @param address Mint account\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Mint information\n */\nexport async function getMintAndProgram(\n connection: Connection,\n address: PublicKey,\n commitment?: Commitment,\n): Promise<{ mint: Mint; tokenProgramId: PublicKey }> {\n const accountInfo = await connection.getAccountInfo(address, commitment);\n let programId = accountInfo?.owner;\n if (!programId?.equals(TOKEN_PROGRAM_ID) && !programId?.equals(TOKEN_2022_PROGRAM_ID)) {\n programId = TOKEN_PROGRAM_ID;\n }\n return {\n mint: unpackMint(address, accountInfo, programId),\n tokenProgramId: programId!,\n };\n}\n\n/**\n * Split fetching of Multiple Accounts Info into batches of 100\n * as the maximum number of accounts that can be fetched in a single call is 100\n *\n * @param connection Connection to use\n * @param pubKeys Array of public keys to fetch account info for\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Array of AccountInfo objects\n */\nexport async function getMultipleAccountsInfoBatched(\n connection: Connection,\n pubKeys: PublicKey[],\n commitment?: Commitment,\n): Promise<(AccountInfo<Buffer> | null)[]> {\n const batchSize = 99;\n const batches: Promise<(AccountInfo<Buffer> | null)[]>[] = [];\n\n for (let i = 0; i < pubKeys.length; i += batchSize) {\n const batch = pubKeys.slice(i, i + batchSize);\n batches.push(connection.getMultipleAccountsInfo(batch, commitment));\n }\n\n const results = await Promise.all(batches);\n return results.flat();\n}\n\n/**\n * Build a partner oracle program without a wallet, just to fetch accounts.\n */\nexport function buildPartnerOracle(connection: Connection): Program<PartnerOracle> {\n return new Program(PartnerOracleIDL, { connection });\n}\n","import { Transaction, VersionedTransaction, type PublicKey } from \"@solana/web3.js\";\nimport { Buffer } from \"buffer\";\n\ninterface TransactionAccountsProvider {\n accountKeys: PublicKey[];\n}\n\nexport function deserializeRawTransaction(serializedTx: string) {\n const txBuffer = Buffer.from(serializedTx, \"base64\");\n try {\n const tx = Transaction.from(txBuffer);\n return resolveTransactionAccounts(tx);\n } catch (error) {\n try {\n const vtx = VersionedTransaction.deserialize(txBuffer);\n return resolveTransactionAccounts(vtx);\n } catch (vError) {\n throw new Error(\"Failed to deserialize transaction: \" + (vError instanceof Error ? vError.message : vError), {\n cause: vError,\n });\n }\n }\n}\n\nexport const resolveTransactionAccounts = (tx: VersionedTransaction | Transaction) => {\n if (tx instanceof Transaction) {\n const message = tx.compileMessage();\n const accounts = message.accountKeys;\n const writableAccounts = accounts.filter((_, idx) => message.isAccountWritable(idx));\n return {\n type: \"legacy\",\n transaction: tx,\n accounts,\n writableAccounts,\n };\n }\n\n const message = tx.message;\n const accounts =\n \"staticAccountKeys\" in message\n ? message.staticAccountKeys\n : (message as unknown as TransactionAccountsProvider).accountKeys;\n\n const writableAccounts = accounts.filter((_, idx) => message.isAccountWritable(idx));\n return {\n type: \"versioned\",\n transaction: tx,\n accounts,\n writableAccounts,\n };\n};\n","import { PublicKey } from \"@solana/web3.js\";\n\n/**\n * Converts a string or PublicKey to a PublicKey object.\n * @param address - The input address as a string or PublicKey.\n * @returns The PublicKey object.\n */\nexport const pk = (address: string | PublicKey): PublicKey => {\n return typeof address === \"string\" ? new PublicKey(address) : address;\n};\n","import type { TransactionInstruction } from \"@solana/web3.js\";\n\nimport { invariant } from \"../../lib/assertions.js\";\nimport type { ComputePriceEstimate, IInteractExt, ITransactionExtResolved } from \"../types.js\";\nimport { createVersionedTransaction } from \"../utils.js\";\nimport { pk } from \"./public-key.js\";\nimport { resolveTransactionAccounts } from \"./deserialize-raw-transaction.js\";\n\nconst createTestTransaction = (\n ixs: Parameters<typeof createVersionedTransaction>[0],\n payer: Parameters<typeof createVersionedTransaction>[1],\n recentBlockhash?: Parameters<typeof createVersionedTransaction>[2],\n partialSigners?: Parameters<typeof createVersionedTransaction>[3],\n) => {\n return createVersionedTransaction(ixs, payer, recentBlockhash ?? \"11111111111111111111111111111111\", partialSigners);\n};\n\nexport async function estimateComputeUnitPrice(\n estimate: ComputePriceEstimate,\n testTx: ReturnType<typeof createTestTransaction>,\n): Promise<number> {\n return estimate(resolveTransactionAccounts(testTx).writableAccounts);\n}\n\nexport async function createAndEstimateTransaction<\n ParamsT extends ITransactionExtResolved<IInteractExt>,\n CreateFn extends (extParams: ParamsT) => Promise<TransactionInstruction[]>,\n>(createFn: CreateFn, extParams: ParamsT): Promise<Awaited<ReturnType<CreateFn>>>;\n\nexport async function createAndEstimateTransaction<\n ParamsT extends ITransactionExtResolved<IInteractExt>,\n CreateFn extends (extParams: ParamsT) => Promise<any>,\n>(\n createFn: CreateFn,\n extParams: ParamsT,\n select: (result: Awaited<ReturnType<CreateFn>>) => TransactionInstruction[]\n): Promise<Awaited<ReturnType<CreateFn>>>;\n\nexport async function createAndEstimateTransaction<\n ParamsT extends ITransactionExtResolved<IInteractExt>,\n CreateFn extends (extParams: ParamsT) => Promise<any>,\n>(\n createFn: CreateFn,\n extParams: ParamsT,\n select?: (result: Awaited<ReturnType<CreateFn>>) => TransactionInstruction[],\n): Promise<Awaited<ReturnType<CreateFn>>> {\n select = select ?? ((value: Awaited<ReturnType<CreateFn>>) => value);\n const createResult = await createFn(extParams);\n const prepareIxs = select(createResult);\n\n const { computePrice, computeLimit } = extParams;\n const invoker = extParams.invoker.publicKey;\n invariant(invoker, \"Invoker's PublicKey is not available, check passed wallet adapter!\");\n const testTx = createTestTransaction(prepareIxs, pk(invoker), undefined, undefined);\n const estimatedComputeLimit = typeof computeLimit === \"function\" ? await computeLimit(testTx) : computeLimit;\n\n if (typeof computePrice !== \"function\") {\n if (typeof computeLimit !== \"function\") {\n return createResult;\n }\n\n return createFn({\n ...extParams,\n computeLimit: estimatedComputeLimit,\n });\n }\n\n const estimatedComputeUnitPrice =\n typeof computePrice === \"function\"\n ? await estimateComputeUnitPrice(computePrice, testTx)\n : // unachievable because we don't execute estimation for constant or undefined priority fee\n computePrice;\n\n return createFn({\n ...extParams,\n computePrice: estimatedComputeUnitPrice,\n computeLimit: estimatedComputeLimit,\n });\n}\n","import type { VersionedTransaction, Connection } from \"@solana/web3.js\";\n\nimport type { GetConsumeLimitEstimateOptions } from \"../types.js\";\n\n/**\n * Estimate the consume limit of a transaction based on the simulation results of the transaction.\n * @param connection - The connection to the RPC\n * @param tx - The transaction to estimate the consume limit for\n * @param options - The options for the estimate\n * @returns The consume limit estimate multiplied by a multiplier percent or undefined and the native simulation results\n */\nexport const estimateConsumeLimit = async (\n connection: Connection,\n tx: VersionedTransaction,\n options: GetConsumeLimitEstimateOptions = {},\n) => {\n const { increaseFactor = 0.05 } = options;\n const simulationResults = await connection.simulateTransaction(tx, {\n sigVerify: false,\n replaceRecentBlockhash: true,\n });\n return {\n unitsConsumed: simulationResults.value.unitsConsumed\n ? Math.ceil(simulationResults.value.unitsConsumed * (1 + increaseFactor))\n : simulationResults.value.unitsConsumed,\n data: simulationResults,\n };\n};\n","import type { Connection, VersionedTransaction } from \"@solana/web3.js\";\n\nimport type { IInteractExt, ITransactionExtResolved, ComputeLimitEstimate } from \"../types.js\";\nimport { estimateConsumeLimit } from \"../rpc/consume-limit-estimate/estimate.js\";\n\ntype UnwrapAutoSimulate<T extends IInteractExt = IInteractExt> = Omit<T, \"computeLimit\"> & {\n skipSimulation: boolean;\n computeLimit?: ITransactionExtResolved[\"computeLimit\"];\n};\nexport const unwrapExecutionParams = <T extends IInteractExt>(\n { computeLimit, ...rest }: T,\n connection: Connection,\n): UnwrapAutoSimulate<T> => {\n const consumeLimitFn: T[\"computeLimit\"] =\n computeLimit === \"autoSimulate\"\n ? (((tx: VersionedTransaction) =>\n estimateConsumeLimit(connection, tx).then((limit) => limit.unitsConsumed ?? 0)) as ComputeLimitEstimate)\n : computeLimit;\n\n return { ...rest, computeLimit: consumeLimitFn, skipSimulation: computeLimit === \"autoSimulate\" };\n};\n","import { ICluster } from \"../solana/types.js\";\n\nexport type TokensPricesResponse = {\n data: Record<string, TokenPriceResult>;\n};\n\nexport type TokenPriceResult = { id: string; value: number | undefined };\n\nexport interface FetchTokenPriceOptions {\n fetchImpl?: typeof fetch;\n timeoutMs?: number;\n}\n\nexport const fetchTokenPrice = async (\n mintId: string,\n cluster: ICluster = ICluster.Mainnet,\n options?: FetchTokenPriceOptions,\n): Promise<TokenPriceResult> => {\n const url = `https://token-api.streamflow.finance/price?ids=${encodeURIComponent(mintId)}&cluster=${encodeURIComponent(cluster)}`;\n\n const impl = options?.fetchImpl ?? fetch;\n const controller = new AbortController();\n const timeout = options?.timeoutMs\n ? setTimeout(() => controller.abort(), options.timeoutMs)\n : undefined;\n\n try {\n const res = await impl(url, {\n headers: { \"Content-Type\": \"application/json\" },\n signal: controller.signal,\n });\n if (!res.ok) {\n throw new Error(`Price API error: ${res.status} ${res.statusText}`);\n }\n const json = (await res.json()) as TokensPricesResponse;\n const entry = json?.data?.[mintId];\n return { id: mintId, value: typeof entry?.value === \"number\" ? entry.value : undefined };\n } finally {\n if (timeout) clearTimeout(timeout);\n }\n};"]}
1
+ {"version":3,"sources":["../../../../node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.js","../../solana/account-filters.ts","../../solana/instructions.ts","../../solana/types.ts","../../../../node_modules/.pnpm/eventemitter3@5.0.1/node_modules/eventemitter3/index.mjs","../../../../node_modules/.pnpm/p-timeout@6.1.2/node_modules/p-timeout/index.js","../../../../node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/lower-bound.js","../../../../node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/priority-queue.js","../../../../node_modules/.pnpm/p-queue@8.0.1/node_modules/p-queue/dist/index.js","../../lib/utils.ts","../../lib/assertions.ts","../../solana/descriptor/idl/partner_oracle.json","../../solana/utils.ts","../../solana/lib/deserialize-raw-transaction.ts","../../solana/lib/public-key.ts","../../solana/lib/estimate.ts","../../solana/rpc/consume-limit-estimate/estimate.ts","../../solana/lib/unwrap-auto-simulate-ext.ts","../../lib/fetch-token-price.ts"],"names":["prefix","EventEmitter","getAssociatedTokenAddress","NATIVE_MINT","createAssociatedTokenAccountInstruction","SystemProgram","createSyncNativeInstruction","ICluster","_queue","BN","Keypair","TransactionMessage","VersionedTransaction","bs58","SendTransactionError","ComputeBudgetProgram","TOKEN_PROGRAM_ID","TOKEN_2022_PROGRAM_ID","unpackMint","Program","Buffer","Transaction","message","accounts","writableAccounts","PublicKey"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,qBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,kFAAA,CAAA,OAAA,EAAA,MAAA,EAAA;AAEA,IAAI,IAAA,GAAA,GAAM,OAAO,SAAU,CAAA,cAAA;AAA3B,IAAA,IACIA,OAAS,GAAA,GAAA;AASb,IAAA,SAAS,MAAS,GAAA;AAAA;AASlB,IAAA,IAAI,OAAO,MAAQ,EAAA;AACjB,MAAO,MAAA,CAAA,SAAA,mBAAmB,MAAA,CAAA,MAAA,CAAO,IAAI,CAAA;AAMrC,MAAA,IAAI,CAAC,IAAI,MAAA,EAAS,CAAA,SAAA,EAAWA,OAAS,GAAA,KAAA;AAAA;AAYxC,IAAS,SAAA,EAAA,CAAG,EAAI,EAAA,OAAA,EAAS,IAAM,EAAA;AAC7B,MAAA,IAAA,CAAK,EAAK,GAAA,EAAA;AACV,MAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AACf,MAAA,IAAA,CAAK,OAAO,IAAQ,IAAA,KAAA;AAAA;AActB,IAAA,SAAS,WAAY,CAAA,OAAA,EAAS,KAAO,EAAA,EAAA,EAAI,SAAS,IAAM,EAAA;AACtD,MAAI,IAAA,OAAO,OAAO,UAAY,EAAA;AAC5B,QAAM,MAAA,IAAI,UAAU,iCAAiC,CAAA;AAAA;AAGvD,MAAI,IAAA,QAAA,GAAW,IAAI,EAAA,CAAG,EAAI,EAAA,OAAA,IAAW,OAAS,EAAA,IAAI,CAC9C,EAAA,GAAA,GAAMA,OAASA,GAAAA,OAAAA,GAAS,KAAQ,GAAA,KAAA;AAEpC,MAAI,IAAA,CAAC,OAAQ,CAAA,OAAA,CAAQ,GAAG,CAAA,UAAW,OAAQ,CAAA,GAAG,CAAI,GAAA,QAAA,EAAU,OAAQ,CAAA,YAAA,EAAA;AAAA,WAC3D,IAAA,CAAC,OAAQ,CAAA,OAAA,CAAQ,GAAG,CAAA,CAAE,EAAI,EAAA,OAAA,CAAQ,OAAQ,CAAA,GAAG,CAAE,CAAA,IAAA,CAAK,QAAQ,CAAA;AAAA,WAChE,OAAA,CAAQ,QAAQ,GAAG,CAAA,GAAI,CAAC,OAAQ,CAAA,OAAA,CAAQ,GAAG,CAAA,EAAG,QAAQ,CAAA;AAE3D,MAAO,OAAA,OAAA;AAAA;AAUT,IAAS,SAAA,UAAA,CAAW,SAAS,GAAK,EAAA;AAChC,MAAA,IAAI,EAAE,OAAQ,CAAA,YAAA,KAAiB,GAAW,OAAA,CAAA,OAAA,GAAU,IAAI,MAAO,EAAA;AAAA,WAC1D,OAAO,OAAQ,CAAA,OAAA,CAAQ,GAAG,CAAA;AAAA;AAUjC,IAAA,SAASC,aAAe,GAAA;AACtB,MAAK,IAAA,CAAA,OAAA,GAAU,IAAI,MAAO,EAAA;AAC1B,MAAA,IAAA,CAAK,YAAe,GAAA,CAAA;AAAA;AAUtB,IAAAA,aAAa,CAAA,SAAA,CAAU,UAAa,GAAA,SAAS,UAAa,GAAA;AACxD,MAAI,IAAA,KAAA,GAAQ,EAAC,EACT,MACA,EAAA,IAAA;AAEJ,MAAI,IAAA,IAAA,CAAK,YAAiB,KAAA,CAAA,EAAU,OAAA,KAAA;AAEpC,MAAK,KAAA,IAAA,IAAS,MAAS,GAAA,IAAA,CAAK,OAAU,EAAA;AACpC,QAAA,IAAI,GAAI,CAAA,IAAA,CAAK,MAAQ,EAAA,IAAI,CAAG,EAAA,KAAA,CAAM,IAAKD,CAAAA,OAAAA,GAAS,IAAK,CAAA,KAAA,CAAM,CAAC,CAAA,GAAI,IAAI,CAAA;AAAA;AAGtE,MAAA,IAAI,OAAO,qBAAuB,EAAA;AAChC,QAAA,OAAO,KAAM,CAAA,MAAA,CAAO,MAAO,CAAA,qBAAA,CAAsB,MAAM,CAAC,CAAA;AAAA;AAG1D,MAAO,OAAA,KAAA;AAAA,KACT;AASA,IAAAC,aAAa,CAAA,SAAA,CAAU,SAAY,GAAA,SAAS,UAAU,KAAO,EAAA;AAC3D,MAAI,IAAA,GAAA,GAAMD,UAASA,OAAS,GAAA,KAAA,GAAQ,OAChC,QAAW,GAAA,IAAA,CAAK,QAAQ,GAAG,CAAA;AAE/B,MAAI,IAAA,CAAC,QAAU,EAAA,OAAO,EAAC;AACvB,MAAA,IAAI,QAAS,CAAA,EAAA,EAAW,OAAA,CAAC,SAAS,EAAE,CAAA;AAEpC,MAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,QAAA,CAAS,MAAQ,EAAA,EAAA,GAAK,IAAI,KAAA,CAAM,CAAC,CAAA,EAAG,CAAI,GAAA,CAAA,EAAG,CAAK,EAAA,EAAA;AAClE,QAAA,EAAA,CAAG,CAAC,CAAA,GAAI,QAAS,CAAA,CAAC,CAAE,CAAA,EAAA;AAAA;AAGtB,MAAO,OAAA,EAAA;AAAA,KACT;AASA,IAAAC,aAAa,CAAA,SAAA,CAAU,aAAgB,GAAA,SAAS,cAAc,KAAO,EAAA;AACnE,MAAI,IAAA,GAAA,GAAMD,UAASA,OAAS,GAAA,KAAA,GAAQ,OAChC,SAAY,GAAA,IAAA,CAAK,QAAQ,GAAG,CAAA;AAEhC,MAAI,IAAA,CAAC,WAAkB,OAAA,CAAA;AACvB,MAAI,IAAA,SAAA,CAAU,IAAW,OAAA,CAAA;AACzB,MAAA,OAAO,SAAU,CAAA,MAAA;AAAA,KACnB;AASA,IAAAC,aAAAA,CAAa,SAAU,CAAA,IAAA,GAAO,SAAS,IAAA,CAAK,OAAO,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA;AACrE,MAAI,IAAA,GAAA,GAAMD,OAASA,GAAAA,OAAAA,GAAS,KAAQ,GAAA,KAAA;AAEpC,MAAA,IAAI,CAAC,IAAA,CAAK,OAAQ,CAAA,GAAG,GAAU,OAAA,KAAA;AAE/B,MAAI,IAAA,SAAA,GAAY,KAAK,OAAQ,CAAA,GAAG,GAC5B,GAAM,GAAA,SAAA,CAAU,QAChB,IACA,EAAA,CAAA;AAEJ,MAAA,IAAI,UAAU,EAAI,EAAA;AAChB,QAAI,IAAA,SAAA,CAAU,MAAW,IAAA,CAAA,cAAA,CAAe,OAAO,SAAU,CAAA,EAAA,EAAI,QAAW,IAAI,CAAA;AAE5E,QAAA,QAAQ,GAAK;AAAA,UACX,KAAK,CAAA;AAAG,YAAA,OAAO,SAAU,CAAA,EAAA,CAAG,IAAK,CAAA,SAAA,CAAU,OAAO,CAAG,EAAA,IAAA;AAAA,UACrD,KAAK,CAAA;AAAG,YAAA,OAAO,UAAU,EAAG,CAAA,IAAA,CAAK,SAAU,CAAA,OAAA,EAAS,EAAE,CAAG,EAAA,IAAA;AAAA,UACzD,KAAK,CAAA;AAAG,YAAA,OAAO,UAAU,EAAG,CAAA,IAAA,CAAK,UAAU,OAAS,EAAA,EAAA,EAAI,EAAE,CAAG,EAAA,IAAA;AAAA,UAC7D,KAAK,CAAA;AAAG,YAAO,OAAA,SAAA,CAAU,GAAG,IAAK,CAAA,SAAA,CAAU,SAAS,EAAI,EAAA,EAAA,EAAI,EAAE,CAAG,EAAA,IAAA;AAAA,UACjE,KAAK,CAAA;AAAG,YAAO,OAAA,SAAA,CAAU,GAAG,IAAK,CAAA,SAAA,CAAU,SAAS,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA,EAAE,CAAG,EAAA,IAAA;AAAA,UACrE,KAAK,CAAA;AAAG,YAAO,OAAA,SAAA,CAAU,EAAG,CAAA,IAAA,CAAK,SAAU,CAAA,OAAA,EAAS,IAAI,EAAI,EAAA,EAAA,EAAI,EAAI,EAAA,EAAE,CAAG,EAAA,IAAA;AAAA;AAG3E,QAAK,KAAA,CAAA,GAAI,CAAG,EAAA,IAAA,GAAO,IAAI,KAAA,CAAM,MAAK,CAAC,CAAA,EAAG,CAAI,GAAA,GAAA,EAAK,CAAK,EAAA,EAAA;AAClD,UAAA,IAAA,CAAK,CAAI,GAAA,CAAC,CAAI,GAAA,SAAA,CAAU,CAAC,CAAA;AAAA;AAG3B,QAAA,SAAA,CAAU,EAAG,CAAA,KAAA,CAAM,SAAU,CAAA,OAAA,EAAS,IAAI,CAAA;AAAA,OACrC,MAAA;AACL,QAAI,IAAA,MAAA,GAAS,UAAU,MACnB,EAAA,CAAA;AAEJ,QAAA,KAAK,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,MAAA,EAAQ,CAAK,EAAA,EAAA;AAC3B,UAAA,IAAI,SAAU,CAAA,CAAC,CAAE,CAAA,IAAA,EAAW,IAAA,CAAA,cAAA,CAAe,KAAO,EAAA,SAAA,CAAU,CAAC,CAAA,CAAE,EAAI,EAAA,MAAA,EAAW,IAAI,CAAA;AAElF,UAAA,QAAQ,GAAK;AAAA,YACX,KAAK,CAAA;AAAG,cAAA,SAAA,CAAU,CAAC,CAAE,CAAA,EAAA,CAAG,KAAK,SAAU,CAAA,CAAC,EAAE,OAAO,CAAA;AAAG,cAAA;AAAA,YACpD,KAAK,CAAA;AAAG,cAAU,SAAA,CAAA,CAAC,EAAE,EAAG,CAAA,IAAA,CAAK,UAAU,CAAC,CAAA,CAAE,SAAS,EAAE,CAAA;AAAG,cAAA;AAAA,YACxD,KAAK,CAAA;AAAG,cAAU,SAAA,CAAA,CAAC,EAAE,EAAG,CAAA,IAAA,CAAK,UAAU,CAAC,CAAA,CAAE,OAAS,EAAA,EAAA,EAAI,EAAE,CAAA;AAAG,cAAA;AAAA,YAC5D,KAAK,CAAA;AAAG,cAAU,SAAA,CAAA,CAAC,CAAE,CAAA,EAAA,CAAG,IAAK,CAAA,SAAA,CAAU,CAAC,CAAE,CAAA,OAAA,EAAS,EAAI,EAAA,EAAA,EAAI,EAAE,CAAA;AAAG,cAAA;AAAA,YAChE;AACE,cAAA,IAAI,CAAC,IAAA,EAAW,KAAA,CAAA,GAAI,CAAG,EAAA,IAAA,GAAO,IAAI,KAAA,CAAM,GAAK,GAAA,CAAC,CAAG,EAAA,CAAA,GAAI,KAAK,CAAK,EAAA,EAAA;AAC7D,gBAAA,IAAA,CAAK,CAAI,GAAA,CAAC,CAAI,GAAA,SAAA,CAAU,CAAC,CAAA;AAAA;AAG3B,cAAU,SAAA,CAAA,CAAC,EAAE,EAAG,CAAA,KAAA,CAAM,UAAU,CAAC,CAAA,CAAE,SAAS,IAAI,CAAA;AAAA;AACpD;AACF;AAGF,MAAO,OAAA,IAAA;AAAA,KACT;AAWA,IAAAC,cAAa,SAAU,CAAA,EAAA,GAAK,SAAS,EAAG,CAAA,KAAA,EAAO,IAAI,OAAS,EAAA;AAC1D,MAAA,OAAO,WAAY,CAAA,IAAA,EAAM,KAAO,EAAA,EAAA,EAAI,SAAS,KAAK,CAAA;AAAA,KACpD;AAWA,IAAAA,cAAa,SAAU,CAAA,IAAA,GAAO,SAAS,IAAK,CAAA,KAAA,EAAO,IAAI,OAAS,EAAA;AAC9D,MAAA,OAAO,WAAY,CAAA,IAAA,EAAM,KAAO,EAAA,EAAA,EAAI,SAAS,IAAI,CAAA;AAAA,KACnD;AAYA,IAAAA,aAAAA,CAAa,UAAU,cAAiB,GAAA,SAAS,eAAe,KAAO,EAAA,EAAA,EAAI,SAAS,IAAM,EAAA;AACxF,MAAI,IAAA,GAAA,GAAMD,OAASA,GAAAA,OAAAA,GAAS,KAAQ,GAAA,KAAA;AAEpC,MAAA,IAAI,CAAC,IAAA,CAAK,OAAQ,CAAA,GAAG,GAAU,OAAA,IAAA;AAC/B,MAAA,IAAI,CAAC,EAAI,EAAA;AACP,QAAA,UAAA,CAAW,MAAM,GAAG,CAAA;AACpB,QAAO,OAAA,IAAA;AAAA;AAGT,MAAI,IAAA,SAAA,GAAY,IAAK,CAAA,OAAA,CAAQ,GAAG,CAAA;AAEhC,MAAA,IAAI,UAAU,EAAI,EAAA;AAChB,QACE,IAAA,SAAA,CAAU,EAAO,KAAA,EAAA,KAChB,CAAC,IAAA,IAAQ,SAAU,CAAA,IAAA,CAAA,KACnB,CAAC,OAAA,IAAW,SAAU,CAAA,OAAA,KAAY,OACnC,CAAA,EAAA;AACA,UAAA,UAAA,CAAW,MAAM,GAAG,CAAA;AAAA;AACtB,OACK,MAAA;AACL,QAAS,KAAA,IAAA,CAAA,GAAI,CAAG,EAAA,MAAA,GAAS,EAAC,EAAG,SAAS,SAAU,CAAA,MAAA,EAAQ,CAAI,GAAA,MAAA,EAAQ,CAAK,EAAA,EAAA;AACvE,UAAA,IACE,UAAU,CAAC,CAAA,CAAE,EAAO,KAAA,EAAA,IACnB,QAAQ,CAAC,SAAA,CAAU,CAAC,CAAA,CAAE,QACtB,OAAW,IAAA,SAAA,CAAU,CAAC,CAAA,CAAE,YAAY,OACrC,EAAA;AACA,YAAO,MAAA,CAAA,IAAA,CAAK,SAAU,CAAA,CAAC,CAAC,CAAA;AAAA;AAC1B;AAMF,QAAI,IAAA,MAAA,CAAO,MAAQ,EAAA,IAAA,CAAK,OAAQ,CAAA,GAAG,CAAI,GAAA,MAAA,CAAO,MAAW,KAAA,CAAA,GAAI,MAAO,CAAA,CAAC,CAAI,GAAA,MAAA;AAAA,aACpE,UAAA,CAAW,MAAM,GAAG,CAAA;AAAA;AAG3B,MAAO,OAAA,IAAA;AAAA,KACT;AASA,IAAAC,aAAa,CAAA,SAAA,CAAU,kBAAqB,GAAA,SAAS,mBAAmB,KAAO,EAAA;AAC7E,MAAI,IAAA,GAAA;AAEJ,MAAA,IAAI,KAAO,EAAA;AACT,QAAMD,GAAAA,GAAAA,OAAAA,GAASA,UAAS,KAAQ,GAAA,KAAA;AAChC,QAAA,IAAI,KAAK,OAAQ,CAAA,GAAG,CAAG,EAAA,UAAA,CAAW,MAAM,GAAG,CAAA;AAAA,OACtC,MAAA;AACL,QAAK,IAAA,CAAA,OAAA,GAAU,IAAI,MAAO,EAAA;AAC1B,QAAA,IAAA,CAAK,YAAe,GAAA,CAAA;AAAA;AAGtB,MAAO,OAAA,IAAA;AAAA,KACT;AAKA,IAAAC,aAAa,CAAA,SAAA,CAAU,GAAMA,GAAAA,aAAAA,CAAa,SAAU,CAAA,cAAA;AACpD,IAAAA,aAAa,CAAA,SAAA,CAAU,WAAcA,GAAAA,aAAAA,CAAa,SAAU,CAAA,EAAA;AAK5D,IAAAA,cAAa,QAAWD,GAAAA,OAAAA;AAKxB,IAAAC,cAAa,YAAeA,GAAAA,aAAAA;AAK5B,IAAI,IAAA,WAAA,KAAgB,OAAO,MAAQ,EAAA;AACjC,MAAA,MAAA,CAAO,OAAUA,GAAAA,aAAAA;AAAA;AACnB;AAAA,CAAA,CAAA;;;AC7Ua,IAAA,UAAA,GAAa,CACxB,QAAA,EACA,WACmB,KAAA;AACnB,EAAO,OAAA,MAAA,CAAO,OAAQ,CAAA,QAAQ,CAAE,CAAA,MAAA,CAAO,CAAC,GAAK,EAAA,CAAC,GAAK,EAAA,KAAK,CAAM,KAAA;AAC5D,IAAA,MAAM,WAAc,GAAA,GAAA;AACpB,IAAM,MAAA,mBAAA,GAAsB,YAAY,WAAW,CAAA;AACnD,IAAI,IAAA,QAAA,CAAS,WAAW,CAAA,IAAK,mBAAqB,EAAA;AAChD,MAAA,GAAA,CAAI,IAAK,CAAA;AAAA,QACP,MAAQ,EAAA;AAAA,UACN,MAAQ,EAAA,mBAAA;AAAA,UACR,KAAA,EAAO,MAAM,QAAS;AAAA;AACxB,OACD,CAAA;AAAA;AAEH,IAAO,OAAA,GAAA;AAAA,GACT,EAAG,EAAoB,CAAA;AACzB;ACTO,IAAM,qBAAwB,GAAA,OACnC,UACA,EAAA,aAAA,EACA,MACsC,KAAA;AACtC,EAAA,MAAM,YAAe,GAAA,MAAMC,kCAA0B,CAAAC,oBAAA,EAAa,eAAe,IAAI,CAAA;AAErF,EAAA,MAAM,OAAU,GAAA,MAAM,UAAW,CAAA,oBAAA,CAAqB,YAAY,CAAA;AAElE,EAAA,MAAM,YACH,GAAA,CAAA,OAAA,CAAQ,KAAO,EAAA,QAAA,IAAY,KAAK,CAC7B,GAAA,EACA,GAAA,CAACC,gDAAwC,CAAA,aAAA,EAAe,YAAc,EAAA,aAAA,EAAeD,oBAAW,CAAC,CAAA;AAEvG,EAAO,OAAA;AAAA,IACL,GAAG,YAAA;AAAA,IACHE,sBAAc,QAAS,CAAA;AAAA,MACrB,UAAY,EAAA,aAAA;AAAA,MACZ,QAAU,EAAA,YAAA;AAAA,MACV,QAAA,EAAU,OAAO,QAAS;AAAA,KAC3B,CAAA;AAAA,IACDC,qCAA4B,YAAY;AAAA,GAC1C;AACF;ACkEa,IAAA,sBAAA,GAAN,MAAM,uBAAA,SAA+B,KAAM,CAAA;AAAA,EAChD,YAAY,CAAW,EAAA;AACrB,IAAA,KAAA,CAAM,CAAC,CAAA;AACP,IAAO,MAAA,CAAA,cAAA,CAAe,IAAM,EAAA,uBAAA,CAAuB,SAAS,CAAA;AAC5D,IAAA,IAAA,CAAK,IAAO,GAAA,wBAAA;AAAA;AAEhB;AAWY,IAAA,QAAA,qBAAAC,SAAL,KAAA;AACL,EAAAA,UAAA,SAAU,CAAA,GAAA,SAAA;AACV,EAAAA,UAAA,QAAS,CAAA,GAAA,QAAA;AACT,EAAAA,UAAA,SAAU,CAAA,GAAA,SAAA;AACV,EAAAA,UAAA,OAAQ,CAAA,GAAA,OAAA;AAJE,EAAAA,OAAAA,SAAAA;AAAA,CAAA,EAAA,QAAA,IAAA,EAAA;AA2BC,IAAA,aAAA,GAAN,MAAM,cAAA,SAAsB,KAAM,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUvC,WAAA,CAAY,KAAc,EAAA,IAAA,EAAsB,WAA6B,EAAA;AAC3E,IAAA,KAAA,CAAM,KAAM,CAAA,OAAA,EAAS,EAAE,KAAA,EAAO,OAAO,CAAA;AACrC,IAAA,IAAA,CAAK,oBAAoB,IAAQ,IAAA,IAAA;AACjC,IAAA,IAAA,CAAK,cAAc,WAAe,IAAA,IAAA;AAElC,IAAO,MAAA,CAAA,cAAA,CAAe,IAAM,EAAA,cAAA,CAAc,SAAS,CAAA;AACnD,IAAA,IAAA,CAAK,IAAO,GAAA,eAAA;AACZ,IAAA,IAAA,CAAK,QAAQ,KAAM,CAAA,KAAA;AAAA;AAEvB;;;AClKA,IAAyB,YAAA,GAAA,OAAA,CAAA,qBAAA,EAAA,CAAA;;;ACAlB,IAAM,YAAA,GAAN,cAA2B,KAAM,CAAA;AAAA,EACvC,YAAY,OAAS,EAAA;AACpB,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,IAAO,GAAA,cAAA;AAAA;AAEd,CAAA;AAMO,IAAM,UAAA,GAAN,cAAyB,KAAM,CAAA;AAAA,EACrC,YAAY,OAAS,EAAA;AACpB,IAAM,KAAA,EAAA;AACN,IAAA,IAAA,CAAK,IAAO,GAAA,YAAA;AACZ,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AAAA;AAEjB,CAAA;AAKA,IAAM,eAAA,GAAkB,CAAgB,YAAA,KAAA,UAAA,CAAW,YAAiB,KAAA,MAAA,GACjE,IAAI,UAAA,CAAW,YAAY,CAAA,GAC3B,IAAI,YAAA,CAAa,YAAY,CAAA;AAKhC,IAAM,mBAAmB,CAAU,MAAA,KAAA;AAClC,EAAA,MAAM,SAAS,MAAO,CAAA,MAAA,KAAW,SAC9B,eAAgB,CAAA,6BAA6B,IAC7C,MAAO,CAAA,MAAA;AAEV,EAAA,OAAO,MAAkB,YAAA,KAAA,GAAQ,MAAS,GAAA,eAAA,CAAgB,MAAM,CAAA;AACjE,CAAA;AAEe,SAAR,QAAA,CAA0B,SAAS,OAAS,EAAA;AAClD,EAAM,MAAA;AAAA,IACL,YAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA,GAAe,EAAC,UAAA,EAAY,YAAY;AAAA,GACrC,GAAA,OAAA;AAEJ,EAAI,IAAA,KAAA;AAEJ,EAAA,MAAM,cAAiB,GAAA,IAAI,OAAQ,CAAA,CAAC,SAAS,MAAW,KAAA;AACvD,IAAA,IAAI,OAAO,YAAiB,KAAA,QAAA,IAAY,KAAK,IAAK,CAAA,YAAY,MAAM,CAAG,EAAA;AACtE,MAAA,MAAM,IAAI,SAAA,CAAU,CAA4D,yDAAA,EAAA,YAAY,CAAI,EAAA,CAAA,CAAA;AAAA;AAGjG,IAAA,IAAI,QAAQ,MAAQ,EAAA;AACnB,MAAM,MAAA,EAAC,QAAU,GAAA,OAAA;AACjB,MAAA,IAAI,OAAO,OAAS,EAAA;AACnB,QAAO,MAAA,CAAA,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA;AAGhC,MAAO,MAAA,CAAA,gBAAA,CAAiB,SAAS,MAAM;AACtC,QAAO,MAAA,CAAA,gBAAA,CAAiB,MAAM,CAAC,CAAA;AAAA,OAC/B,CAAA;AAAA;AAGF,IAAI,IAAA,YAAA,KAAiB,OAAO,iBAAmB,EAAA;AAC9C,MAAQ,OAAA,CAAA,IAAA,CAAK,SAAS,MAAM,CAAA;AAC5B,MAAA;AAAA;AAID,IAAM,MAAA,YAAA,GAAe,IAAI,YAAa,EAAA;AAEtC,IAAA,KAAA,GAAQ,YAAa,CAAA,UAAA,CAAW,IAAK,CAAA,MAAA,EAAW,MAAM;AACrD,MAAA,IAAI,QAAU,EAAA;AACb,QAAI,IAAA;AACH,UAAA,OAAA,CAAQ,UAAU,CAAA;AAAA,iBACV,KAAO,EAAA;AACf,UAAA,MAAA,CAAO,KAAK,CAAA;AAAA;AAGb,QAAA;AAAA;AAGD,MAAI,IAAA,OAAO,OAAQ,CAAA,MAAA,KAAW,UAAY,EAAA;AACzC,QAAA,OAAA,CAAQ,MAAO,EAAA;AAAA;AAGhB,MAAA,IAAI,YAAY,KAAO,EAAA;AACtB,QAAQ,OAAA,EAAA;AAAA,OACT,MAAA,IAAW,mBAAmB,KAAO,EAAA;AACpC,QAAA,MAAA,CAAO,OAAO,CAAA;AAAA,OACR,MAAA;AACN,QAAa,YAAA,CAAA,OAAA,GAAU,OAAW,IAAA,CAAA,wBAAA,EAA2B,YAAY,CAAA,aAAA,CAAA;AACzE,QAAA,MAAA,CAAO,YAAY,CAAA;AAAA;AACpB,OACE,YAAY,CAAA;AAEf,IAAA,CAAC,YAAY;AACZ,MAAI,IAAA;AACH,QAAA,OAAA,CAAQ,MAAM,OAAO,CAAA;AAAA,eACb,KAAO,EAAA;AACf,QAAA,MAAA,CAAO,KAAK,CAAA;AAAA;AACb,KACE,GAAA;AAAA,GACH,CAAA;AAED,EAAM,MAAA,iBAAA,GAAoB,cAAe,CAAA,OAAA,CAAQ,MAAM;AACtD,IAAA,iBAAA,CAAkB,KAAM,EAAA;AAAA,GACxB,CAAA;AAED,EAAA,iBAAA,CAAkB,QAAQ,MAAM;AAC/B,IAAa,YAAA,CAAA,YAAA,CAAa,IAAK,CAAA,MAAA,EAAW,KAAK,CAAA;AAC/C,IAAQ,KAAA,GAAA,MAAA;AAAA,GACT;AAEA,EAAO,OAAA,iBAAA;AACR;;;ACjHe,SAAR,UAAA,CAA4B,KAAO,EAAA,KAAA,EAAO,UAAY,EAAA;AACzD,EAAA,IAAI,KAAQ,GAAA,CAAA;AACZ,EAAA,IAAI,QAAQ,KAAM,CAAA,MAAA;AAClB,EAAA,OAAO,QAAQ,CAAG,EAAA;AACd,IAAA,MAAM,IAAO,GAAA,IAAA,CAAK,KAAM,CAAA,KAAA,GAAQ,CAAC,CAAA;AACjC,IAAA,IAAI,KAAK,KAAQ,GAAA,IAAA;AACjB,IAAA,IAAI,WAAW,KAAM,CAAA,EAAE,CAAG,EAAA,KAAK,KAAK,CAAG,EAAA;AACnC,MAAA,KAAA,GAAQ,EAAE,EAAA;AACV,MAAA,KAAA,IAAS,IAAO,GAAA,CAAA;AAAA,KAEf,MAAA;AACD,MAAQ,KAAA,GAAA,IAAA;AAAA;AACZ;AAEJ,EAAO,OAAA,KAAA;AACX;;;ACjBA,IAAA,MAAA;AACA,IAAqB,gBAArB,MAAmC;AAAA,EAAnC,WAAA,GAAA;AACI,IAAA,YAAA,CAAA,IAAA,EAAA,MAAA,EAAS,EAAC,CAAA;AAAA;AAAA,EACV,OAAA,CAAQ,KAAK,OAAS,EAAA;AAClB,IAAU,OAAA,GAAA;AAAA,MACN,QAAU,EAAA,CAAA;AAAA,MACV,GAAG;AAAA,KACP;AACA,IAAA,MAAM,OAAU,GAAA;AAAA,MACZ,UAAU,OAAQ,CAAA,QAAA;AAAA,MAClB;AAAA,KACJ;AACA,IAAI,IAAA,IAAA,CAAK,IAAQ,IAAA,YAAA,CAAA,IAAA,EAAK,MAAO,CAAA,CAAA,IAAA,CAAK,OAAO,CAAC,CAAA,CAAE,QAAY,IAAA,OAAA,CAAQ,QAAU,EAAA;AACtE,MAAK,YAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAO,KAAK,OAAO,CAAA;AACxB,MAAA;AAAA;AAEJ,IAAM,MAAA,KAAA,GAAQ,UAAW,CAAA,YAAA,CAAA,IAAA,EAAK,MAAQ,CAAA,EAAA,OAAA,EAAS,CAAC,CAAA,EAAG,CAAM,KAAA,CAAA,CAAE,QAAW,GAAA,CAAA,CAAE,QAAQ,CAAA;AAChF,IAAA,YAAA,CAAA,IAAA,EAAK,MAAO,CAAA,CAAA,MAAA,CAAO,KAAO,EAAA,CAAA,EAAG,OAAO,CAAA;AAAA;AACxC,EACA,OAAU,GAAA;AACN,IAAM,MAAA,IAAA,GAAO,YAAK,CAAA,IAAA,EAAA,MAAA,CAAA,CAAO,KAAM,EAAA;AAC/B,IAAA,OAAO,IAAM,EAAA,GAAA;AAAA;AACjB,EACA,OAAO,OAAS,EAAA;AACZ,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,MAAA,CAAA,CAAO,MAAO,CAAA,CAAC,YAAY,OAAQ,CAAA,QAAA,KAAa,OAAQ,CAAA,QAAQ,CAAE,CAAA,GAAA,CAAI,CAAC,OAAA,KAAY,QAAQ,GAAG,CAAA;AAAA;AAC9G,EACA,IAAI,IAAO,GAAA;AACP,IAAA,OAAO,mBAAK,MAAO,CAAA,CAAA,MAAA;AAAA;AAE3B,CAAA;AA3BI,MAAA,GAAA,IAAA,OAAA,EAAA;;;ACFJ,IAAA,0BAAA,EAAA,kBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,SAAA,EAAA,YAAA,EAAA,WAAA,EAAA,UAAA,EAAAC,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,YAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,OAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,oBAAA,EAAA,6BAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,UAAA;AAMA,IAAqB,MAAA,GAArB,cAAoC,YAAA,CAAAP,OAAa,CAAA;AAAA;AAAA,EAuB7C,YAAY,OAAS,EAAA;AACjB,IAAM,KAAA,EAAA;AAxBd,IAAA,YAAA,CAAA,IAAA,EAAA,iBAAA,CAAA;AACI,IAAA,YAAA,CAAA,IAAA,EAAA,0BAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,kBAAA,CAAA;AACA,IAAiB,YAAA,CAAA,IAAA,EAAA,cAAA,EAAA,CAAA,CAAA;AACjB,IAAA,YAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AACA,IAAe,YAAA,CAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;AACf,IAAA,YAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,UAAA,CAAA;AACA,IAAAO,YAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,WAAA,CAAA;AACA,IAAW,YAAA,CAAA,IAAA,EAAA,QAAA,EAAA,CAAA,CAAA;AAEX;AAAA,IAAA,YAAA,CAAA,IAAA,EAAA,YAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AACA,IAAA,YAAA,CAAA,IAAA,EAAA,eAAA,CAAA;AAMA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,aAAA,CAAA,IAAA,EAAA,SAAA,CAAA;AAKI,IAAU,OAAA,GAAA;AAAA,MACN,yBAA2B,EAAA,KAAA;AAAA,MAC3B,aAAa,MAAO,CAAA,iBAAA;AAAA,MACpB,QAAU,EAAA,CAAA;AAAA,MACV,aAAa,MAAO,CAAA,iBAAA;AAAA,MACpB,SAAW,EAAA,IAAA;AAAA,MACX,UAAY,EAAA,aAAA;AAAA,MACZ,GAAG;AAAA,KACP;AACA,IAAA,IAAI,EAAE,OAAO,OAAA,CAAQ,gBAAgB,QAAY,IAAA,OAAA,CAAQ,eAAe,CAAI,CAAA,EAAA;AACxE,MAAA,MAAM,IAAI,SAAA,CAAU,CAAgE,6DAAA,EAAA,OAAA,CAAQ,WAAa,EAAA,QAAA,EAAc,IAAA,EAAE,CAAO,IAAA,EAAA,OAAO,OAAQ,CAAA,WAAW,CAAG,CAAA,CAAA,CAAA;AAAA;AAEjK,IAAI,IAAA,OAAA,CAAQ,QAAa,KAAA,MAAA,IAAa,EAAE,MAAA,CAAO,QAAS,CAAA,OAAA,CAAQ,QAAQ,CAAA,IAAK,OAAQ,CAAA,QAAA,IAAY,CAAI,CAAA,EAAA;AACjG,MAAA,MAAM,IAAI,SAAA,CAAU,CAA2D,wDAAA,EAAA,OAAA,CAAQ,QAAU,EAAA,QAAA,EAAc,IAAA,EAAE,CAAO,IAAA,EAAA,OAAO,OAAQ,CAAA,QAAQ,CAAG,CAAA,CAAA,CAAA;AAAA;AAEtJ,IAAA,YAAA,CAAA,IAAA,EAAK,4BAA6B,OAAQ,CAAA,yBAAA,CAAA;AAC1C,IAAA,YAAA,CAAA,IAAA,EAAK,oBAAqB,OAAQ,CAAA,WAAA,KAAgB,MAAO,CAAA,iBAAA,IAAqB,QAAQ,QAAa,KAAA,CAAA,CAAA;AACnG,IAAA,YAAA,CAAA,IAAA,EAAK,cAAe,OAAQ,CAAA,WAAA,CAAA;AAC5B,IAAA,YAAA,CAAA,IAAA,EAAK,WAAY,OAAQ,CAAA,QAAA,CAAA;AACzB,IAAKA,YAAAA,CAAAA,IAAAA,EAAAA,OAAAA,EAAS,IAAI,OAAA,CAAQ,UAAW,EAAA,CAAA;AACrC,IAAA,YAAA,CAAA,IAAA,EAAK,aAAc,OAAQ,CAAA,UAAA,CAAA;AAC3B,IAAA,IAAA,CAAK,cAAc,OAAQ,CAAA,WAAA;AAC3B,IAAA,IAAA,CAAK,UAAU,OAAQ,CAAA,OAAA;AACvB,IAAK,YAAA,CAAA,IAAA,EAAA,eAAA,EAAkB,QAAQ,cAAmB,KAAA,IAAA,CAAA;AAClD,IAAK,YAAA,CAAA,IAAA,EAAA,SAAA,EAAY,QAAQ,SAAc,KAAA,KAAA,CAAA;AAAA;AAC3C,EA6FA,IAAI,WAAc,GAAA;AACd,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,YAAA,CAAA;AAAA;AAChB,EACA,IAAI,YAAY,cAAgB,EAAA;AAC5B,IAAA,IAAI,EAAE,OAAO,cAAmB,KAAA,QAAA,IAAY,kBAAkB,CAAI,CAAA,EAAA;AAC9D,MAAA,MAAM,IAAI,SAAU,CAAA,CAAA,6DAAA,EAAgE,cAAc,CAAO,IAAA,EAAA,OAAO,cAAc,CAAG,CAAA,CAAA,CAAA;AAAA;AAErI,IAAA,YAAA,CAAA,IAAA,EAAK,YAAe,EAAA,cAAA,CAAA;AACpB,IAAA,eAAA,CAAA,IAAA,EAAK,iBAAL,EAAA,eAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AAAA;AACJ,EAQA,MAAM,GAAA,CAAI,SAAW,EAAA,OAAA,GAAU,EAAI,EAAA;AAC/B,IAAU,OAAA,GAAA;AAAA,MACN,SAAS,IAAK,CAAA,OAAA;AAAA,MACd,gBAAgB,YAAK,CAAA,IAAA,EAAA,eAAA,CAAA;AAAA,MACrB,GAAG;AAAA,KACP;AACA,IAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACpC,MAAKA,YAAAA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAO,QAAQ,YAAY;AAC5B,QAAA,gBAAA,CAAA,IAAA,EAAK,QAAL,CAAA,CAAA,CAAA,EAAA;AACA,QAAA,gBAAA,CAAA,IAAA,EAAK,cAAL,CAAA,CAAA,CAAA,EAAA;AACA,QAAI,IAAA;AACA,UAAA,OAAA,CAAQ,QAAQ,cAAe,EAAA;AAC/B,UAAA,IAAI,YAAY,SAAU,CAAA,EAAE,MAAQ,EAAA,OAAA,CAAQ,QAAQ,CAAA;AACpD,UAAA,IAAI,QAAQ,OAAS,EAAA;AACjB,YAAY,SAAA,GAAA,QAAA,CAAS,QAAQ,OAAQ,CAAA,SAAS,GAAG,EAAE,YAAA,EAAc,OAAQ,CAAA,OAAA,EAAS,CAAA;AAAA;AAEtF,UAAA,IAAI,QAAQ,MAAQ,EAAA;AAChB,YAAY,SAAA,GAAA,OAAA,CAAQ,KAAK,CAAC,SAAA,EAAW,sBAAK,iBAAL,EAAA,eAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAmB,OAAQ,CAAA,MAAA,CAAO,CAAC,CAAA;AAAA;AAE5E,UAAA,MAAM,SAAS,MAAM,SAAA;AACrB,UAAA,OAAA,CAAQ,MAAM,CAAA;AACd,UAAK,IAAA,CAAA,IAAA,CAAK,aAAa,MAAM,CAAA;AAAA,iBAE1B,KAAO,EAAA;AACV,UAAA,IAAI,KAAiB,YAAA,YAAA,IAAgB,CAAC,OAAA,CAAQ,cAAgB,EAAA;AAC1D,YAAQ,OAAA,EAAA;AACR,YAAA;AAAA;AAEJ,UAAA,MAAA,CAAO,KAAK,CAAA;AACZ,UAAK,IAAA,CAAA,IAAA,CAAK,SAAS,KAAK,CAAA;AAAA,SAE5B,SAAA;AACI,UAAA,eAAA,CAAA,IAAA,EAAK,iBAAL,EAAA,OAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AAAA;AACJ,SACD,OAAO,CAAA;AACV,MAAA,IAAA,CAAK,KAAK,KAAK,CAAA;AACf,MAAA,eAAA,CAAA,IAAA,EAAK,iBAAL,EAAA,oBAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AAAA,KACH,CAAA;AAAA;AACL,EACA,MAAM,MAAO,CAAA,SAAA,EAAW,OAAS,EAAA;AAC7B,IAAO,OAAA,OAAA,CAAQ,GAAI,CAAA,SAAA,CAAU,GAAI,CAAA,OAAO,SAAc,KAAA,IAAA,CAAK,GAAI,CAAA,SAAA,EAAW,OAAO,CAAC,CAAC,CAAA;AAAA;AACvF;AAAA;AAAA;AAAA,EAIA,KAAQ,GAAA;AACJ,IAAI,IAAA,CAAC,mBAAK,SAAW,CAAA,EAAA;AACjB,MAAO,OAAA,IAAA;AAAA;AAEX,IAAA,YAAA,CAAA,IAAA,EAAK,SAAY,EAAA,KAAA,CAAA;AACjB,IAAA,eAAA,CAAA,IAAA,EAAK,iBAAL,EAAA,eAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AACA,IAAO,OAAA,IAAA;AAAA;AACX;AAAA;AAAA;AAAA,EAIA,KAAQ,GAAA;AACJ,IAAA,YAAA,CAAA,IAAA,EAAK,SAAY,EAAA,IAAA,CAAA;AAAA;AACrB;AAAA;AAAA;AAAA,EAIA,KAAQ,GAAA;AACJ,IAAKA,YAAAA,CAAAA,IAAAA,EAAAA,OAAAA,EAAS,KAAI,YAAA,CAAA,IAAA,EAAK,WAAY,CAAA,GAAA,CAAA;AAAA;AACvC;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAU,GAAA;AAEZ,IAAI,IAAA,YAAA,CAAA,IAAA,EAAKA,OAAO,CAAA,CAAA,IAAA,KAAS,CAAG,EAAA;AACxB,MAAA;AAAA;AAEJ,IAAM,MAAA,eAAA,CAAA,IAAA,EAAK,+BAAL,IAAc,CAAA,IAAA,EAAA,OAAA,CAAA;AAAA;AACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAM,eAAe,KAAO,EAAA;AAExB,IAAI,IAAA,YAAA,CAAA,IAAA,EAAKA,OAAO,CAAA,CAAA,IAAA,GAAO,KAAO,EAAA;AAC1B,MAAA;AAAA;AAEJ,IAAA,MAAM,sBAAK,iBAAL,EAAA,UAAA,CAAA,CAAA,IAAA,CAAA,IAAA,EAAc,QAAQ,MAAM,YAAA,CAAA,IAAA,EAAKA,SAAO,IAAO,GAAA,KAAA,CAAA;AAAA;AACzD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,MAAS,GAAA;AAEX,IAAA,IAAI,mBAAK,QAAa,CAAA,KAAA,CAAA,IAAK,YAAKA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAO,SAAS,CAAG,EAAA;AAC/C,MAAA;AAAA;AAEJ,IAAM,MAAA,eAAA,CAAA,IAAA,EAAK,+BAAL,IAAc,CAAA,IAAA,EAAA,MAAA,CAAA;AAAA;AACxB;AAAA;AAAA;AAAA,EAgBA,IAAI,IAAO,GAAA;AACP,IAAA,OAAO,mBAAKA,OAAO,CAAA,CAAA,IAAA;AAAA;AACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,OAAS,EAAA;AAEZ,IAAA,OAAO,YAAKA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAO,MAAO,CAAA,OAAO,CAAE,CAAA,MAAA;AAAA;AACvC;AAAA;AAAA;AAAA,EAIA,IAAI,OAAU,GAAA;AACV,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA;AAAA;AAChB;AAAA;AAAA;AAAA,EAIA,IAAI,QAAW,GAAA;AACX,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,SAAA,CAAA;AAAA;AAEpB,CAAA;AA9SI,0BAAA,GAAA,IAAA,OAAA,EAAA;AACA,kBAAA,GAAA,IAAA,OAAA,EAAA;AACA,cAAA,GAAA,IAAA,OAAA,EAAA;AACA,YAAA,GAAA,IAAA,OAAA,EAAA;AACA,SAAA,GAAA,IAAA,OAAA,EAAA;AACA,YAAA,GAAA,IAAA,OAAA,EAAA;AACA,WAAA,GAAA,IAAA,OAAA,EAAA;AACA,UAAA,GAAA,IAAA,OAAA,EAAA;AACAA,OAAA,GAAA,IAAA,OAAA,EAAA;AACA,WAAA,GAAA,IAAA,OAAA,EAAA;AACA,QAAA,GAAA,IAAA,OAAA,EAAA;AAEA,YAAA,GAAA,IAAA,OAAA,EAAA;AACA,SAAA,GAAA,IAAA,OAAA,EAAA;AACA,eAAA,GAAA,IAAA,OAAA,EAAA;AAfJ,iBAAA,GAAA,IAAA,OAAA,EAAA;AAoDQ,4BAAA,GAAyB,WAAG;AAC5B,EAAA,OAAO,YAAK,CAAA,IAAA,EAAA,kBAAA,CAAA,IAAsB,YAAK,CAAA,IAAA,EAAA,cAAA,CAAA,GAAiB,YAAK,CAAA,IAAA,EAAA,YAAA,CAAA;AACjE,CAAA;AACI,8BAAA,GAA2B,WAAG;AAC9B,EAAO,OAAA,YAAA,CAAA,IAAA,EAAK,YAAW,YAAK,CAAA,IAAA,EAAA,YAAA,CAAA;AAChC,CAAA;AACA,OAAA,GAAK,WAAG;AACJ,EAAA,gBAAA,CAAA,IAAA,EAAK,QAAL,CAAA,CAAA,CAAA,EAAA;AACA,EAAA,eAAA,CAAA,IAAA,EAAK,iBAAL,EAAA,oBAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AACA,EAAA,IAAA,CAAK,KAAK,MAAM,CAAA;AACpB,CAAA;AACA,mBAAA,GAAiB,WAAG;AAChB,EAAA,eAAA,CAAA,IAAA,EAAK,iBAAL,EAAA,aAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AACA,EAAA,eAAA,CAAA,IAAA,EAAK,iBAAL,EAAA,6BAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AACA,EAAA,YAAA,CAAA,IAAA,EAAK,UAAa,EAAA,MAAA,CAAA;AACtB,CAAA;AACI,oBAAA,GAAiB,WAAG;AACpB,EAAM,MAAA,GAAA,GAAM,KAAK,GAAI,EAAA;AACrB,EAAI,IAAA,YAAA,CAAA,IAAA,EAAK,iBAAgB,MAAW,EAAA;AAChC,IAAM,MAAA,KAAA,GAAQ,mBAAK,YAAe,CAAA,GAAA,GAAA;AAClC,IAAA,IAAI,QAAQ,CAAG,EAAA;AAGX,MAAA,YAAA,CAAA,IAAA,EAAK,cAAkB,EAAA,YAAA,CAAA,IAAA,EAAK,0BAA8B,CAAA,GAAA,YAAA,CAAA,IAAA,EAAK,QAAW,CAAA,GAAA,CAAA,CAAA;AAAA,KAEzE,MAAA;AAED,MAAI,IAAA,YAAA,CAAA,IAAA,EAAK,gBAAe,MAAW,EAAA;AAC/B,QAAK,YAAA,CAAA,IAAA,EAAA,UAAA,EAAa,WAAW,MAAM;AAC/B,UAAA,eAAA,CAAA,IAAA,EAAK,iBAAL,EAAA,mBAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AAAA,WACD,KAAK,CAAA,CAAA;AAAA;AAEZ,MAAO,OAAA,IAAA;AAAA;AACX;AAEJ,EAAO,OAAA,KAAA;AACX,CAAA;AACA,oBAAA,GAAkB,WAAG;AACjB,EAAI,IAAA,YAAA,CAAA,IAAA,EAAKA,OAAO,CAAA,CAAA,IAAA,KAAS,CAAG,EAAA;AAGxB,IAAA,IAAI,mBAAK,WAAa,CAAA,EAAA;AAClB,MAAA,aAAA,CAAc,mBAAK,WAAW,CAAA,CAAA;AAAA;AAElC,IAAA,YAAA,CAAA,IAAA,EAAK,WAAc,EAAA,MAAA,CAAA;AACnB,IAAA,IAAA,CAAK,KAAK,OAAO,CAAA;AACjB,IAAI,IAAA,YAAA,CAAA,IAAA,EAAK,cAAa,CAAG,EAAA;AACrB,MAAA,IAAA,CAAK,KAAK,MAAM,CAAA;AAAA;AAEpB,IAAO,OAAA,KAAA;AAAA;AAEX,EAAI,IAAA,CAAC,mBAAK,SAAW,CAAA,EAAA;AACjB,IAAM,MAAA,qBAAA,GAAwB,CAAC,YAAK,CAAA,IAAA,EAAA,iBAAA,EAAA,oBAAA,CAAA;AACpC,IAAI,IAAA,YAAA,CAAA,IAAA,EAAK,iBAA6B,EAAA,4BAAA,CAAA,IAAA,YAAA,CAAA,IAAA,EAAK,iBAA6B,EAAA,8BAAA,CAAA,EAAA;AACpE,MAAM,MAAA,GAAA,GAAM,YAAKA,CAAAA,IAAAA,EAAAA,OAAAA,CAAAA,CAAO,OAAQ,EAAA;AAChC,MAAA,IAAI,CAAC,GAAK,EAAA;AACN,QAAO,OAAA,KAAA;AAAA;AAEX,MAAA,IAAA,CAAK,KAAK,QAAQ,CAAA;AAClB,MAAI,GAAA,EAAA;AACJ,MAAA,IAAI,qBAAuB,EAAA;AACvB,QAAA,eAAA,CAAA,IAAA,EAAK,iBAAL,EAAA,6BAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AAAA;AAEJ,MAAO,OAAA,IAAA;AAAA;AACX;AAEJ,EAAO,OAAA,KAAA;AACX,CAAA;AACA,6BAAA,GAA2B,WAAG;AAC1B,EAAA,IAAI,YAAK,CAAA,IAAA,EAAA,kBAAA,CAAA,IAAsB,YAAK,CAAA,IAAA,EAAA,WAAA,CAAA,KAAgB,MAAW,EAAA;AAC3D,IAAA;AAAA;AAEJ,EAAK,YAAA,CAAA,IAAA,EAAA,WAAA,EAAc,YAAY,MAAM;AACjC,IAAA,eAAA,CAAA,IAAA,EAAK,iBAAL,EAAA,aAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AAAA,GACJ,EAAG,mBAAK,SAAS,CAAA,CAAA,CAAA;AACjB,EAAA,YAAA,CAAA,IAAA,EAAK,YAAe,EAAA,IAAA,CAAK,GAAI,EAAA,GAAI,YAAK,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AAC1C,CAAA;AACA,aAAA,GAAW,WAAG;AACV,EAAA,IAAI,mBAAK,cAAmB,CAAA,KAAA,CAAA,IAAK,mBAAK,QAAa,CAAA,KAAA,CAAA,IAAK,mBAAK,WAAa,CAAA,EAAA;AACtE,IAAA,aAAA,CAAc,mBAAK,WAAW,CAAA,CAAA;AAC9B,IAAA,YAAA,CAAA,IAAA,EAAK,WAAc,EAAA,MAAA,CAAA;AAAA;AAEvB,EAAA,YAAA,CAAA,IAAA,EAAK,cAAiB,EAAA,YAAA,CAAA,IAAA,EAAK,0BAA6B,CAAA,GAAA,YAAA,CAAA,IAAA,EAAK,QAAW,CAAA,GAAA,CAAA,CAAA;AACxE,EAAA,eAAA,CAAA,IAAA,EAAK,iBAAL,EAAA,eAAA,CAAA,CAAA,IAAA,CAAA,IAAA,CAAA;AACJ,CAAA;AAAA;AAAA;AAAA;AAIA,eAAA,GAAa,WAAG;AAEZ,EAAO,OAAA,eAAA,CAAA,IAAA,EAAK,yCAAL,IAA2B,CAAA,IAAA,CAAA,EAAA;AAAA;AACtC,CAAA;AAWM,eAAA,GAAa,eAAC,MAAQ,EAAA;AACxB,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,QAAA,EAAU,MAAW,KAAA;AACrC,IAAO,MAAA,CAAA,gBAAA,CAAiB,SAAS,MAAM;AACnC,MAAA,MAAA,CAAO,OAAO,MAAM,CAAA;AAAA,KACrB,EAAA,EAAE,IAAM,EAAA,IAAA,EAAM,CAAA;AAAA,GACpB,CAAA;AACL,CAAA;AAwGM,UAAQ,GAAA,eAAC,OAAO,MAAQ,EAAA;AAC1B,EAAO,OAAA,IAAI,QAAQ,CAAW,OAAA,KAAA;AAC1B,IAAA,MAAM,WAAW,MAAM;AACnB,MAAI,IAAA,MAAA,IAAU,CAAC,MAAA,EAAU,EAAA;AACrB,QAAA;AAAA;AAEJ,MAAK,IAAA,CAAA,GAAA,CAAI,OAAO,QAAQ,CAAA;AACxB,MAAQ,OAAA,EAAA;AAAA,KACZ;AACA,IAAK,IAAA,CAAA,EAAA,CAAG,OAAO,QAAQ,CAAA;AAAA,GAC1B,CAAA;AACL,CAAA;AC/QS,IAAA,KAAA,GAAQ,CAAC,KAAA,EAAe,QAAyB,KAAA;AAC5D,EAAA,MAAM,WAAc,GAAA,KAAA,GAAQ,IAAK,CAAA,KAAA,CAAM,KAAK,CAAA;AAC5C,EAAA,MAAM,cAAc,IAAIC,mBAAA,CAAG,IAAK,CAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAE5C,EAAA,MAAM,QAAW,GAAA,IAAIA,mBAAG,CAAA,WAAA,GAAc,GAAG,CAAA;AAEzC,EAAM,MAAA,GAAA,GAAM,YAAY,GAAI,CAAA,IAAIA,oBAAG,GAAG,CAAC,CAAE,CAAA,GAAA,CAAI,QAAQ,CAAA;AACrD,EAAA,MAAM,OAAU,GAAA,GAAA,CAAI,GAAI,CAAA,IAAIA,mBAAG,CAAA,EAAE,CAAE,CAAA,GAAA,CAAI,IAAIA,mBAAA,CAAG,QAAQ,CAAC,CAAC,CAAA;AACxD,EAAA,OAAO,OAAQ,CAAA,GAAA,CAAI,IAAIA,mBAAA,CAAG,GAAG,CAAC,CAAA;AAChC;AAQa,IAAA,eAAA,GAAkB,CAAC,KAAA,EAAW,QACzC,KAAA,KAAA,CAAM,EAAG,CAAA,IAAIA,mBAAG,CAAA,CAAA,IAAK,EAAK,GAAA,CAAC,CAAC,CAAA,GAAI,MAAM,GAAI,CAAA,IAAIA,mBAAG,CAAA,EAAA,IAAM,QAAQ,CAAC,CAAE,CAAA,QAAA,EAAa,GAAA,KAAA,CAAM,QAAS,EAAA,GAAI,EAAM,IAAA;AAQ1G,eAAsB,mBAAA,CACpB,MACA,QACY,EAAA;AACZ,EAAI,IAAA;AACF,IAAA,OAAO,MAAM,IAAK,EAAA;AAAA,WAEX,GAAU,EAAA;AACjB,IAAA,IAAI,eAAe,KAAO,EAAA;AACxB,MAAA,IAAI,QAAU,EAAA;AACZ,QAAA,MAAM,IAAI,aAAA,CAAc,GAAK,EAAA,QAAA,CAAS,GAAG,CAAC,CAAA;AAAA;AAE5C,MAAM,MAAA,IAAI,cAAc,GAAG,CAAA;AAAA;AAE7B,IAAM,MAAA,GAAA;AAAA;AAEV;AAMO,SAAS,MAAM,EAA2B,EAAA;AAC/C,EAAA,OAAO,IAAI,OAAQ,CAAA,CAAC,YAAY,UAAW,CAAA,OAAA,EAAS,EAAE,CAAC,CAAA;AACzD;AAEO,IAAM,QAAW,GAAA,CAAC,CAAW,EAAA,CAAA,KAAsB,CAAI,GAAA,CAAA,IAAK,CAAI,GAAA,CAAA,GAAI,MAAO,CAAA,CAAC,CAAI,GAAA,MAAA,CAAO,CAAC,CAAA;AAMxF,SAAS,sBAAuB,CAAA,CAAA,EAAW,CAAW,EAAA,WAAA,GAAc,CAAW,EAAA;AACpF,EAAA,IAAI,CAAC,MAAO,CAAA,QAAA,CAAS,CAAC,CAAK,IAAA,CAAA,KAAM,GAAU,OAAA,EAAA;AAC3C,EAAM,MAAA,UAAA,GAAc,CAAI,GAAA,EAAA,KAAS,CAAI,GAAA,CAAA;AACrC,EAAA,MAAM,IAAO,GAAA,CAAA,GAAI,EAAK,GAAA,CAAC,CAAI,GAAA,CAAA;AAC3B,EAAM,MAAA,IAAA,GAAO,IAAK,CAAA,GAAA,CAAI,CAAC,CAAA;AAEvB,EAAM,MAAA,CAAA,GAAI,IAAK,CAAA,OAAA,CAAQ,WAAW,CAAA;AAClC,EAAA,MAAM,CAAC,OAAS,EAAA,WAAA,GAAc,EAAE,CAAI,GAAA,CAAA,CAAE,MAAM,GAAG,CAAA;AAC/C,EAAM,MAAA,QAAA,GAAW,YAAY,MAAO,CAAA,WAAA,EAAa,GAAG,CAAE,CAAA,KAAA,CAAM,GAAG,WAAW,CAAA;AAC1E,EAAM,MAAA,OAAA,GAAU,MAAO,CAAA,OAAA,GAAU,QAAQ,CAAA;AACzC,EAAM,MAAA,KAAA,GAAQ,GAAO,IAAA,MAAA,CAAO,WAAW,CAAA;AACvC,EAAM,MAAA,OAAA,GAAW,OAAO,OAAW,GAAA,KAAA;AACnC,EAAO,OAAA,UAAA,GAAa,CAAC,OAAU,GAAA,OAAA;AACjC;;;AC/EA,IAAM,MAAS,GAAA,kBAAA;AAEF,IAAA,SAAA,GAAsF,CACjG,SAAA,EACA,OACG,KAAA;AACH,EAAA,IAAI,SAAW,EAAA;AACb,IAAA;AAAA;AAEF,EAAA,MAAM,QAA+B,GAAA,OAAO,OAAY,KAAA,UAAA,GAAa,SAAY,GAAA,OAAA;AACjF,EAAA,MAAM,QAAgB,QAAW,GAAA,CAAA,EAAG,MAAM,CAAA,EAAA,EAAK,QAAQ,CAAK,CAAA,GAAA,MAAA;AAC5D,EAAM,MAAA,IAAI,MAAM,KAAK,CAAA;AACvB;AAEO,SAAS,kBAAA,CACd,OACA,OAC+C,EAAA;AAC/C,EAAU,SAAA,CAAA,KAAA,CAAM,SAAW,EAAA,OAAA,IAAW,sBAAsB,CAAA;AAC9D;;;ACrBA,IAAA,sBAAA,GAAA;AAAA,EACE,OAAW,EAAA,6CAAA;AAAA,EACX,QAAY,EAAA;AAAA,IACV,IAAQ,EAAA,gBAAA;AAAA,IACR,OAAW,EAAA,OAAA;AAAA,IACX,IAAQ,EAAA,OAAA;AAAA,IACR,WAAe,EAAA;AAAA,GACjB;AAAA,EACA,YAAgB,EAAA;AAAA,IACd;AAAA,MACE,IAAQ,EAAA,4BAAA;AAAA,MACR,aAAiB,EAAA;AAAA,QACf,GAAA;AAAA,QACA,CAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAY,EAAA;AAAA,QACV;AAAA,UACE,IAAQ,EAAA,QAAA;AAAA,UACR,IAAQ,EAAA;AAAA,YACN;AAAA,WACF;AAAA,UACA,QAAY,EAAA,IAAA;AAAA,UACZ,GAAO,EAAA;AAAA,YACL,KAAS,EAAA;AAAA,cACP;AAAA,gBACE,IAAQ,EAAA,OAAA;AAAA,gBACR,KAAS,EAAA;AAAA,kBACP,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF;AACF;AACF;AACF;AACF,OACF;AAAA,MACA,MAAQ;AAAC,KACX;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,kBAAA;AAAA,MACR,aAAiB,EAAA;AAAA,QACf,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAY,EAAA;AAAA,QACV;AAAA,UACE,IAAQ,EAAA,QAAA;AAAA,UACR,IAAQ,EAAA;AAAA,YACN;AAAA,WACF;AAAA,UACA,GAAO,EAAA;AAAA,YACL,KAAS,EAAA;AAAA,cACP;AAAA,gBACE,IAAQ,EAAA,OAAA;AAAA,gBACR,KAAS,EAAA;AAAA,kBACP,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF;AACF;AACF;AACF;AACF,OACF;AAAA,MACA,IAAQ,EAAA;AAAA,QACN;AAAA,UACE,IAAQ,EAAA,QAAA;AAAA,UACR,IAAQ,EAAA;AAAA;AACV,OACF;AAAA,MACA,OAAW,EAAA;AAAA,QACT,OAAW,EAAA;AAAA,UACT,IAAQ,EAAA;AAAA;AACV;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,2BAAA;AAAA,MACR,aAAiB,EAAA;AAAA,QACf,CAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAY,EAAA;AAAA,QACV;AAAA,UACE,IAAQ,EAAA,OAAA;AAAA,UACR,IAAQ,EAAA;AAAA,YACN;AAAA,WACF;AAAA,UACA,QAAY,EAAA,IAAA;AAAA,UACZ,MAAU,EAAA;AAAA,SACZ;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,QAAA;AAAA,UACR,QAAY,EAAA,IAAA;AAAA,UACZ,GAAO,EAAA;AAAA,YACL,KAAS,EAAA;AAAA,cACP;AAAA,gBACE,IAAQ,EAAA,OAAA;AAAA,gBACR,KAAS,EAAA;AAAA,kBACP,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF;AACF;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,gBAAA;AAAA,UACR,OAAW,EAAA;AAAA;AACb,OACF;AAAA,MACA,MAAQ;AAAC,KACX;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,qBAAA;AAAA,MACR,aAAiB,EAAA;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAY,EAAA;AAAA,QACV;AAAA,UACE,IAAQ,EAAA,WAAA;AAAA,UACR,IAAQ,EAAA;AAAA,YACN;AAAA,WACF;AAAA,UACA,QAAY,EAAA,IAAA;AAAA,UACZ,MAAU,EAAA,IAAA;AAAA,UACV,OAAW,EAAA;AAAA,SACb;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,QAAA;AAAA,UACR,IAAQ,EAAA;AAAA,YACN;AAAA,WACF;AAAA,UACA,QAAY,EAAA,IAAA;AAAA,UACZ,GAAO,EAAA;AAAA,YACL,KAAS,EAAA;AAAA,cACP;AAAA,gBACE,IAAQ,EAAA,OAAA;AAAA,gBACR,KAAS,EAAA;AAAA,kBACP,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF;AACF;AACF;AACF;AACF,OACF;AAAA,MACA,IAAQ,EAAA;AAAA,QACN;AAAA,UACE,IAAQ,EAAA,QAAA;AAAA,UACR,IAAQ,EAAA;AAAA;AACV;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,4BAAA;AAAA,MACR,aAAiB,EAAA;AAAA,QACf,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAY,EAAA;AAAA,QACV;AAAA,UACE,IAAQ,EAAA,WAAA;AAAA,UACR,IAAQ,EAAA;AAAA,YACN;AAAA,WACF;AAAA,UACA,QAAY,EAAA,IAAA;AAAA,UACZ,MAAU,EAAA,IAAA;AAAA,UACV,OAAW,EAAA;AAAA,SACb;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,QAAA;AAAA,UACR,IAAQ,EAAA;AAAA,YACN;AAAA,WACF;AAAA,UACA,QAAY,EAAA,IAAA;AAAA,UACZ,GAAO,EAAA;AAAA,YACL,KAAS,EAAA;AAAA,cACP;AAAA,gBACE,IAAQ,EAAA,OAAA;AAAA,gBACR,KAAS,EAAA;AAAA,kBACP,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF;AACF;AACF;AACF;AACF,OACF;AAAA,MACA,IAAQ,EAAA;AAAA,QACN;AAAA,UACE,IAAQ,EAAA,cAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,kBAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,eAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,eAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,mBAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,4BAAA;AAAA,UACR,IAAQ,EAAA;AAAA;AACV;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,oBAAA;AAAA,MACR,aAAiB,EAAA;AAAA,QACf,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAY,EAAA;AAAA,QACV;AAAA,UACE,IAAQ,EAAA,WAAA;AAAA,UACR,IAAQ,EAAA;AAAA,YACN;AAAA,WACF;AAAA,UACA,QAAY,EAAA,IAAA;AAAA,UACZ,MAAU,EAAA,IAAA;AAAA,UACV,OAAW,EAAA;AAAA,SACb;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,QAAA;AAAA,UACR,IAAQ,EAAA;AAAA,YACN;AAAA,WACF;AAAA,UACA,QAAY,EAAA,IAAA;AAAA,UACZ,GAAO,EAAA;AAAA,YACL,KAAS,EAAA;AAAA,cACP;AAAA,gBACE,IAAQ,EAAA,OAAA;AAAA,gBACR,KAAS,EAAA;AAAA,kBACP,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF;AACF;AACF;AACF;AACF,OACF;AAAA,MACA,IAAQ,EAAA;AAAA,QACN;AAAA,UACE,IAAQ,EAAA,QAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,cAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,kBAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,eAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,eAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,mBAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,4BAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,WAAA;AAAA,UACR,IAAQ,EAAA;AAAA;AACV;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,kBAAA;AAAA,MACR,aAAiB,EAAA;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAY,EAAA;AAAA,QACV;AAAA,UACE,IAAQ,EAAA,UAAA;AAAA,UACR,GAAO,EAAA;AAAA,YACL,KAAS,EAAA;AAAA,cACP;AAAA,gBACE,IAAQ,EAAA,OAAA;AAAA,gBACR,KAAS,EAAA;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF;AACF;AACF;AACF;AACF,OACF;AAAA,MACA,IAAQ,EAAA;AAAA,QACN;AAAA,UACE,IAAQ,EAAA,QAAA;AAAA,UACR,IAAQ,EAAA;AAAA;AACV,OACF;AAAA,MACA,OAAW,EAAA;AAAA,QACT,OAAW,EAAA;AAAA,UACT,IAAQ,EAAA;AAAA;AACV;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,6BAAA;AAAA,MACR,aAAiB,EAAA;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAY,EAAA;AAAA,QACV;AAAA,UACE,IAAQ,EAAA,OAAA;AAAA,UACR,IAAQ,EAAA;AAAA,YACN;AAAA,WACF;AAAA,UACA,QAAY,EAAA,IAAA;AAAA,UACZ,MAAU,EAAA;AAAA,SACZ;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,UAAA;AAAA,UACR,QAAY,EAAA,IAAA;AAAA,UACZ,GAAO,EAAA;AAAA,YACL,KAAS,EAAA;AAAA,cACP;AAAA,gBACE,IAAQ,EAAA,OAAA;AAAA,gBACR,KAAS,EAAA;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF;AACF;AACF;AACF,SACF;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,gBAAA;AAAA,UACR,OAAW,EAAA;AAAA;AACb,OACF;AAAA,MACA,MAAQ;AAAC,KACX;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,qBAAA;AAAA,MACR,aAAiB,EAAA;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAY,EAAA;AAAA,QACV;AAAA,UACE,IAAQ,EAAA,WAAA;AAAA,UACR,IAAQ,EAAA;AAAA,YACN;AAAA,WACF;AAAA,UACA,QAAY,EAAA,IAAA;AAAA,UACZ,MAAU,EAAA,IAAA;AAAA,UACV,OAAW,EAAA;AAAA,SACb;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,UAAA;AAAA,UACR,QAAY,EAAA,IAAA;AAAA,UACZ,GAAO,EAAA;AAAA,YACL,KAAS,EAAA;AAAA,cACP;AAAA,gBACE,IAAQ,EAAA,OAAA;AAAA,gBACR,KAAS,EAAA;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF;AACF;AACF;AACF;AACF,OACF;AAAA,MACA,IAAQ,EAAA;AAAA,QACN;AAAA,UACE,IAAQ,EAAA,QAAA;AAAA,UACR,IAAQ,EAAA;AAAA;AACV;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,4BAAA;AAAA,MACR,aAAiB,EAAA;AAAA,QACf,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAY,EAAA;AAAA,QACV;AAAA,UACE,IAAQ,EAAA,WAAA;AAAA,UACR,IAAQ,EAAA;AAAA,YACN;AAAA,WACF;AAAA,UACA,QAAY,EAAA,IAAA;AAAA,UACZ,MAAU,EAAA,IAAA;AAAA,UACV,OAAW,EAAA;AAAA,SACb;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,UAAA;AAAA,UACR,QAAY,EAAA,IAAA;AAAA,UACZ,GAAO,EAAA;AAAA,YACL,KAAS,EAAA;AAAA,cACP;AAAA,gBACE,IAAQ,EAAA,OAAA;AAAA,gBACR,KAAS,EAAA;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF;AACF;AACF;AACF;AACF,OACF;AAAA,MACA,IAAQ,EAAA;AAAA,QACN;AAAA,UACE,IAAQ,EAAA,cAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,gBAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,mBAAA;AAAA,UACR,IAAQ,EAAA;AAAA;AACV;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,oBAAA;AAAA,MACR,aAAiB,EAAA;AAAA,QACf,GAAA;AAAA,QACA,EAAA;AAAA,QACA,CAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,QAAY,EAAA;AAAA,QACV;AAAA,UACE,IAAQ,EAAA,WAAA;AAAA,UACR,IAAQ,EAAA;AAAA,YACN;AAAA,WACF;AAAA,UACA,QAAY,EAAA,IAAA;AAAA,UACZ,MAAU,EAAA,IAAA;AAAA,UACV,OAAW,EAAA;AAAA,SACb;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,UAAA;AAAA,UACR,QAAY,EAAA,IAAA;AAAA,UACZ,GAAO,EAAA;AAAA,YACL,KAAS,EAAA;AAAA,cACP;AAAA,gBACE,IAAQ,EAAA,OAAA;AAAA,gBACR,KAAS,EAAA;AAAA,kBACP,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,EAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA,GAAA;AAAA,kBACA;AAAA;AACF;AACF;AACF;AACF;AACF,OACF;AAAA,MACA,IAAQ,EAAA;AAAA,QACN;AAAA,UACE,IAAQ,EAAA,QAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,cAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,gBAAA;AAAA,UACR,IAAQ,EAAA;AAAA,SACV;AAAA,QACA;AAAA,UACE,IAAQ,EAAA,mBAAA;AAAA,UACR,IAAQ,EAAA;AAAA;AACV;AACF;AACF,GACF;AAAA,EACA,QAAY,EAAA;AAAA,IACV;AAAA,MACE,IAAQ,EAAA,eAAA;AAAA,MACR,aAAiB,EAAA;AAAA,QACf,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,GAAA;AAAA,QACA,EAAA;AAAA,QACA,EAAA;AAAA,QACA,GAAA;AAAA,QACA;AAAA;AACF;AACF,GACF;AAAA,EACA,MAAU,EAAA;AAAA,IACR;AAAA,MACE,IAAQ,EAAA,GAAA;AAAA,MACR,IAAQ,EAAA,cAAA;AAAA,MACR,GAAO,EAAA;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,IAAA;AAAA,MACR,IAAQ,EAAA,iBAAA;AAAA,MACR,GAAO,EAAA;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,IAAA;AAAA,MACR,IAAQ,EAAA,eAAA;AAAA,MACR,GAAO,EAAA;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,IAAA;AAAA,MACR,IAAQ,EAAA,eAAA;AAAA,MACR,GAAO,EAAA;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,IAAA;AAAA,MACR,IAAQ,EAAA,mBAAA;AAAA,MACR,GAAO,EAAA;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,IAAA;AAAA,MACR,IAAQ,EAAA,mBAAA;AAAA,MACR,GAAO,EAAA;AAAA,KACT;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,IAAA;AAAA,MACR,IAAQ,EAAA,mBAAA;AAAA,MACR,GAAO,EAAA;AAAA;AACT,GACF;AAAA,EACA,KAAS,EAAA;AAAA,IACP;AAAA,MACE,IAAQ,EAAA,eAAA;AAAA,MACR,aAAiB,EAAA,UAAA;AAAA,MACjB,IAAQ,EAAA;AAAA,QACN,IAAQ,EAAA;AAAA,OACV;AAAA,MACA,IAAQ,EAAA;AAAA,QACN,IAAQ,EAAA,QAAA;AAAA,QACR,MAAU,EAAA;AAAA,UACR;AAAA,YACE,IAAQ,EAAA,SAAA;AAAA,YACR,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,gBAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,cAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,cAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,kBAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,eAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,eAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,mBAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,4BAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,QAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN,KAAS,EAAA;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF,WACF;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,UAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN,KAAS,EAAA;AAAA,gBACP;AAAA,kBACE,OAAW,EAAA;AAAA,oBACT,IAAQ,EAAA;AAAA;AACV,iBACF;AAAA,gBACA;AAAA;AACF;AACF;AACF;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,aAAA;AAAA,MACR,IAAQ,EAAA;AAAA,QACN,IAAQ,EAAA,QAAA;AAAA,QACR,MAAU,EAAA;AAAA,UACR;AAAA,YACE,IAAQ,EAAA,QAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,cAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,kBAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,eAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,eAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,mBAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,4BAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA;AACV;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,gBAAA;AAAA,MACR,aAAiB,EAAA,UAAA;AAAA,MACjB,IAAQ,EAAA;AAAA,QACN,IAAQ,EAAA;AAAA,OACV;AAAA,MACA,IAAQ,EAAA;AAAA,QACN,IAAQ,EAAA,QAAA;AAAA,QACR,MAAU,EAAA;AAAA,UACR;AAAA,YACE,IAAQ,EAAA,QAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,cAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,kBAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,eAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,eAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,mBAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,4BAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,WAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,QAAA;AAAA,YACR,IAAQ,EAAA;AAAA,cACN;AAAA,aACF;AAAA,YACA,IAAQ,EAAA;AAAA,cACN,KAAS,EAAA;AAAA,gBACP,IAAA;AAAA,gBACA;AAAA;AACF;AACF;AACF;AACF;AACF,KACF;AAAA,IACA;AAAA,MACE,IAAQ,EAAA,aAAA;AAAA,MACR,IAAQ,EAAA;AAAA,QACN,IAAQ,EAAA,QAAA;AAAA,QACR,MAAU,EAAA;AAAA,UACR;AAAA,YACE,IAAQ,EAAA,QAAA;AAAA,YACR,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,cAAA;AAAA,YACR,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,gBAAA;AAAA,YACR,IAAQ,EAAA;AAAA,WACV;AAAA,UACA;AAAA,YACE,IAAQ,EAAA,mBAAA;AAAA,YACR,IAAQ,EAAA;AAAA;AACV;AACF;AACF;AACF;AAEJ,CAAA;;;ACl6BA,IAAM,cAAiB,GAAA,CAAA;AAEhB,IAAM,kBAAqB,GAAA,CAAC,QAAkB,EAAA,YAAA,GAAe,GAAiB,KAAA;AACnF,EAAO,OAAA,IAAI,OAAO,EAAE,WAAA,EAAa,UAAU,WAAa,EAAA,CAAA,EAAG,QAAU,EAAA,YAAA,EAAc,CAAA;AACrF;AAUA,eAAsB,kBACpB,CAAA,UAAA,EACA,MACA,EAAA,MAAA,EACA,SACoB,EAAA;AACpB,EAAA,MAAM,eAAkB,GAAA,MAAM,UAAY,EAAA,kBAAA,CAAmB,SAAW,EAAA;AAAA,IACtE,OAAS,EAAA;AAAA,MACP;AAAA,QACE,MAAQ,EAAA;AAAA,UACN,MAAA;AAAA,UACA,KAAA,EAAO,OAAO,QAAS;AAAA;AACzB;AACF;AACF,GACD,CAAA;AAED,EAAO,OAAA,CAAC,GAAG,eAAe,CAAA;AAC5B;AAOO,SAAS,eAAe,eAAwF,EAAA;AACrH,EAAA,OAA6B,gBAAiB,eAAoB,KAAA,MAAA;AACpE;AAOO,SAAS,gBAAgB,eAA4E,EAAA;AAC1G,EACE,OAAA,eAAA,YAA2BC,eAC3B,IAAA,eAAA,CAAgB,WAAgB,KAAAA,eAAA,IAChC,gBAAgB,WAAY,CAAA,IAAA,KAASA,eAAQ,CAAA,SAAA,CAAU,WAAY,CAAA,IAAA;AAEvE;AAOO,SAAS,uBAAuB,EAAoE,EAAA;AACzG,EAAA,OAAO,SAAa,IAAA,EAAA;AACtB;AAYA,eAAsB,mBACpB,UACA,EAAA,GAAA,EACA,KACA,EAAA,UAAA,EACA,gBACA,YAKC,EAAA;AACD,EAAA,IAAI,CAAC,KAAO,EAAA;AACV,IAAM,MAAA,IAAI,MAAM,mCAAmC,CAAA;AAAA;AAGrD,EAAM,MAAA,EAAE,OAAO,IAAM,EAAA,OAAA,KAAY,MAAM,UAAA,CAAW,6BAA6B,UAAU,CAAA;AAEzF,EAAO,OAAA;AAAA,IACL,IAAI,0BAA2B,CAAA,GAAA,EAAK,OAAO,IAAK,CAAA,SAAA,EAAW,gBAAgB,YAAY,CAAA;AAAA,IACvF,IAAA;AAAA,IACA;AAAA,GACF;AACF;AAEO,SAAS,0BACd,CAAA,GAAA,EACA,KACA,EAAA,eAAA,EACA,gBACA,YACsB,EAAA;AACtB,EAAA,SAAA,CAAU,OAAO,mCAAmC,CAAA;AACpD,EAAM,MAAA,SAAA,GAAY,IAAIC,0BAAmB,CAAA;AAAA,IACvC,QAAU,EAAA,KAAA;AAAA,IACV,eAAA;AAAA,IACA,YAAc,EAAA;AAAA,GACf,CAAE,CAAA,kBAAA,CAAmB,YAAY,CAAA;AAClC,EAAM,MAAA,EAAA,GAAK,IAAIC,4BAAA,CAAqB,SAAS,CAAA;AAC7C,EAAM,MAAA,OAAA,GAAU,gBAAgB,MAAO,CAAA,CAAC,SAA0B,CAAC,CAAC,IAAI,CAAK,IAAA,MAAA;AAC7E,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,EAAA,CAAG,KAAK,OAAO,CAAA;AAAA;AAGjB,EAAO,OAAA,EAAA;AACT;AAEA,eAAsB,eAAA,CACpB,SACA,EACY,EAAA;AACZ,EAAI,IAAA,QAAA;AACJ,EAAI,IAAA,cAAA,CAAe,OAAO,CAAG,EAAA;AAC3B,IAAW,QAAA,GAAA,MAAM,OAAQ,CAAA,eAAA,CAAgB,EAAE,CAAA;AAAA,GACtC,MAAA;AACL,IAAI,IAAA,sBAAA,CAAuB,EAAE,CAAG,EAAA;AAC9B,MAAG,EAAA,CAAA,IAAA,CAAK,CAAC,OAAO,CAAC,CAAA;AAAA,KACZ,MAAA;AACL,MAAA,EAAA,CAAG,YAAY,OAAO,CAAA;AAAA;AAExB,IAAW,QAAA,GAAA,EAAA;AAAA;AAEb,EAAO,OAAA,QAAA;AACT;AAWA,eAAsB,yBACpB,CAAA,UAAA,EACA,OACA,EAAA,EAAA,EACA,oBACA,0BACiB,EAAA;AACjB,EAAA,MAAM,QAAW,GAAA,MAAM,eAAgB,CAAA,OAAA,EAAS,EAAE,CAAA;AAElD,EAAA,OAAO,kBAAmB,CAAA,UAAA,EAAY,QAAU,EAAA,kBAAA,EAAoB,0BAA0B,CAAA;AAChG;AAiBA,eAAsB,kBACpB,CAAA,UAAA,EACA,EACA,EAAA,kBAAA,EACA,0BACiB,EAAA;AACjB,EAAI,IAAA,EAAA,CAAG,UAAW,CAAA,MAAA,KAAW,CAAG,EAAA;AAC9B,IAAA,MAAM,MAAM,oCAAoC,CAAA;AAAA;AAElD,EAAI,IAAA,CAAC,2BAA2B,cAAgB,EAAA;AAC9C,IAAM,MAAA,mBAAA,CAAoB,YAAY,EAAE,CAAA;AAAA;AAE1C,EAAA,OAAO,yBAA0B,CAAA,UAAA,EAAY,EAAI,EAAA,kBAAA,EAAoB,0BAA0B,CAAA;AACjG;AAYA,eAAsB,2BAAA,CACpB,UACA,EAAA,GAAA,EACA,kBACA,EAAA,EAAE,WAAW,CAAG,EAAA,aAAA,EAAe,GAAG,gBAAA,EACO,EAAA;AACzC,EAAA,IAAI,CAAC,aAAe,EAAA;AAClB,IAAA,aAAA,GAAgB,mBAAmB,QAAQ,CAAA;AAAA;AAE7C,EAAA,OAAO,OAAQ,CAAA,UAAA;AAAA,IACb,GAAI,CAAA,GAAA;AAAA,MAAI,CAAC,EAAA,KACP,kBAAmB,CAAA,UAAA,EAAY,IAAI,kBAAoB,EAAA;AAAA,QACrD,GAAG,gBAAA;AAAA,QACH,QAAA;AAAA,QACA;AAAA,OACD;AAAA;AACH,GACF;AACF;AAeA,eAAsB,yBACpB,CAAA,UAAA,EACA,EACA,EAAA,EAAE,IAAM,EAAA,OAAA,EAAS,UAAW,EAAA,EAC5B,EAAE,QAAA,GAAW,CAAG,EAAA,aAAA,EAAe,sBACd,EAAA;AACjB,EAAM,MAAA,WAAA,GAAc,uBAAuB,EAAE,CAAA;AAE7C,EAAI,IAAA,SAAA;AACJ,EAAA,IAAI,WAAa,EAAA;AACf,IAAA,SAAA,GAAYC,qBAAK,CAAA,MAAA,CAAO,EAAG,CAAA,UAAA,CAAW,CAAC,CAAE,CAAA;AAAA,GACpC,MAAA;AACL,IAAY,SAAA,GAAAA,qBAAA,CAAK,MAAO,CAAA,EAAA,CAAG,SAAU,CAAA;AAAA;AAGvC,EAAA,IAAI,CAAC,aAAe,EAAA;AAClB,IAAA,aAAA,GAAgB,mBAAmB,QAAQ,CAAA;AAAA;AAG7C,EAAA,IAAI,WAAc,GAAA,MAAM,UAAW,CAAA,cAAA,CAAe,UAAU,CAAA;AAC5D,EAAA,IAAI,eAAkB,GAAA,KAAA;AACtB,EAAM,MAAA,cAAA,GAAiB,GAAG,SAAU,EAAA;AACpC,EAAO,OAAA,WAAA,GAAc,IAAK,CAAA,oBAAA,GAAuB,EAAI,EAAA;AACnD,IAAI,IAAA;AACF,MAAA,IAAI,WAAc,GAAA,IAAA,CAAK,oBAAwB,IAAA,CAAC,eAAiB,EAAA;AAC/D,QAAA,MAAM,aAAc,CAAA,GAAA;AAAA,UAAI,YACtB,UAAW,CAAA,kBAAA,CAAmB,cAAgB,EAAA;AAAA,YAC5C,UAAY,EAAA,CAAA;AAAA,YACZ,gBAAgB,OAAQ,CAAA,IAAA;AAAA,YACxB,mBAAqB,EAAA,UAAA;AAAA,YACrB,aAAe,EAAA;AAAA,WAChB;AAAA,SACH;AACA,QAAkB,eAAA,GAAA,IAAA;AAAA;AACpB,aACO,CAAG,EAAA;AACV,MAAA,IACE,mBACC,CAAa,YAAAC,4BAAA,IAAwB,EAAE,OAAQ,CAAA,QAAA,CAAS,2CAA2C,CACpG,EAAA;AACA,QAAA,MAAM,MAAM,GAAG,CAAA;AACf,QAAA;AAAA;AAEF,MAAM,MAAA,CAAA;AAAA;AAGR,IAAM,MAAA,KAAA,CAAM,wBAAwB,GAAI,CAAA;AACxC,IAAI,IAAA;AACF,MAAA,MAAM,KAAQ,GAAA,MAAM,2BAA4B,CAAA,UAAA,EAAY,SAAS,CAAA;AACrE,MAAA,IAAI,KAAO,EAAA;AACT,QAAO,OAAA,SAAA;AAAA;AACT,aACO,CAAG,EAAA;AACV,MAAA,IAAI,aAAa,sBAAwB,EAAA;AACvC,QAAM,MAAA,CAAA;AAAA;AAER,MAAA,MAAM,MAAM,GAAG,CAAA;AAAA;AAEjB,IAAI,IAAA;AACF,MAAc,WAAA,GAAA,MAAM,UAAW,CAAA,cAAA,CAAe,UAAU,CAAA;AAAA,aACjD,EAAI,EAAA;AACX,MAAA,MAAM,MAAM,GAAG,CAAA;AAAA;AACjB;AAEF,EAAA,MAAM,IAAI,KAAA,CAAM,CAAe,YAAA,EAAA,SAAS,CAAW,SAAA,CAAA,CAAA;AACrD;AAEA,eAAsB,mBAAA,CACpB,YACA,EAC8D,EAAA;AAC9D,EAAI,IAAA,GAAA;AACJ,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,cAAA,EAAgB,CAAK,EAAA,EAAA;AACvC,IAAI,IAAA,sBAAA,CAAuB,EAAE,CAAG,EAAA;AAC9B,MAAM,GAAA,GAAA,MAAM,UAAW,CAAA,mBAAA,CAAoB,EAAE,CAAA;AAAA,KACxC,MAAA;AACL,MAAM,GAAA,GAAA,MAAM,UAAW,CAAA,mBAAA,CAAoB,EAAE,CAAA;AAAA;AAE/C,IAAI,IAAA,GAAA,CAAI,MAAM,GAAK,EAAA;AACjB,MAAA,MAAM,UAAa,GAAA,IAAA,CAAK,SAAU,CAAA,GAAA,CAAI,MAAM,GAAG,CAAA;AAC/C,MAAA,IAAI,CAAC,UAAW,CAAA,QAAA,CAAS,mBAAmB,CAAK,IAAA,CAAA,KAAM,iBAAiB,CAAG,EAAA;AACzE,QAAA,MAAM,IAAIA,4BAAqB,CAAA;AAAA,UAC7B,MAAQ,EAAA,UAAA;AAAA,UACR,SAAW,EAAA,EAAA;AAAA,UACX,kBAAA,EAAoB,CAClB,gCAAA,EAAA,OAAO,GAAI,CAAA,KAAA,CAAM,QAAQ,QAAW,GAAA,GAAA,CAAI,KAAM,CAAA,GAAA,GAAM,UACtD,CAAA,CAAA;AAAA,UACA,IAAA,EAAM,GAAI,CAAA,KAAA,CAAM,IAAQ,IAAA;AAAA,SACzB,CAAA;AAAA;AAEH,MAAA;AAAA;AAEF,IAAO,OAAA,GAAA;AAAA;AAGT,EAAA,MAAM,IAAIA,4BAAqB,CAAA;AAAA,IAC7B,MAAQ,EAAA,UAAA;AAAA,IACR,SAAW,EAAA,EAAA;AAAA,IACX,kBAAoB,EAAA;AAAA,GACrB,CAAA;AACH;AASA,eAAsB,2BAAA,CACpB,UACA,EAAA,SAAA,EACA,WACiC,EAAA;AACjC,EAAA,MAAM,WAAW,MAAM,UAAA,CAAW,oBAAqB,CAAA,CAAC,SAAS,CAAC,CAAA;AAClE,EAAI,IAAA,CAAC,QAAY,IAAA,QAAA,CAAS,KAAM,CAAA,MAAA,KAAW,KAAK,QAAS,CAAA,KAAA,CAAM,CAAC,CAAA,KAAM,IAAM,EAAA;AAC1E,IAAO,OAAA,IAAA;AAAA;AAET,EAAM,MAAA,KAAA,GAAQ,QAAS,CAAA,KAAA,CAAM,CAAC,CAAA;AAC9B,EAAA,IAAI,CAAC,KAAO,EAAA;AACV,IAAO,OAAA,IAAA;AAAA;AAET,EAAI,IAAA,CAAC,WAAe,IAAA,KAAA,CAAM,GAAK,EAAA;AAE7B,IAAA,MAAM,IAAI,sBAAA,CAAuB,CAAmB,gBAAA,EAAA,SAAS,CAAY,SAAA,EAAA,IAAA,CAAK,SAAU,CAAA,EAAE,GAAK,EAAA,KAAA,CAAM,GAAI,EAAC,CAAC,CAAG,CAAA,CAAA,CAAA;AAAA;AAEhH,EAAA,QAAQ,WAAW,UAAY;AAAA,IAC7B,KAAK,WAAA;AAAA,IACL,KAAK,QAAA;AAAA,IACL,KAAK,cAAgB,EAAA;AACnB,MAAI,IAAA,KAAA,CAAM,uBAAuB,WAAa,EAAA;AAC5C,QAAO,OAAA,IAAA;AAAA;AAET,MAAA;AAAA;AACF,IACA,KAAK,WAAA;AAAA,IACL,KAAK,KAAA;AAAA,IACL,KAAK,MAAQ,EAAA;AACX,MAAA,IAAI,KAAM,CAAA,kBAAA,KAAuB,WAAe,IAAA,KAAA,CAAM,uBAAuB,WAAa,EAAA;AACxF,QAAO,OAAA,IAAA;AAAA;AAET,MAAA;AAAA;AAIG;AAEP,EAAO,OAAA,KAAA;AACT;AASO,SAAS,GAAA,CAAI,IAAiB,EAAA,KAAA,EAAkB,SAA2C,EAAA;AAChG,EAAA,OAAOZ,kCAA0B,CAAA,IAAA,EAAM,KAAO,EAAA,IAAA,EAAM,SAAS,CAAA;AAC/D;AAQA,eAAsB,aAAA,CAAc,YAAwB,WAA8C,EAAA;AACxG,EAAM,MAAA,aAAA,GAAgB,MAAM,OAAQ,CAAA,GAAA;AAAA,IAClC,YAAY,GAAI,CAAA,OAAO,EAAE,IAAM,EAAA,KAAA,EAAO,WAAgB,KAAA;AACpD,MAAO,OAAA,GAAA,CAAI,IAAM,EAAA,KAAA,EAAO,SAAS,CAAA;AAAA,KAClC;AAAA,GACH;AACA,EAAA,MAAM,QAAW,GAAA,MAAM,UAAW,CAAA,uBAAA,CAAwB,aAAa,CAAA;AACvE,EAAA,OAAO,SAAS,GAAI,CAAA,CAAC,OAAY,KAAA,CAAC,CAAC,OAAO,CAAA;AAC5C;AAEA,eAAsB,eAAA,CAAgB,YAAwB,WAAgD,EAAA;AAC5G,EAAA,MAAM,kBAAgD,EAAC;AACvD,EAAA,OAAO,OAAQ,CAAA,GAAA;AAAA,IACb,WAAA,CAAY,GAAI,CAAA,OAAO,MAAW,KAAA;AAChC,MAAA,IAAI,OAAO,SAAW,EAAA;AACpB,QAAO,OAAA,MAAA;AAAA;AAET,MAAM,MAAA,OAAA,GAAU,MAAO,CAAA,IAAA,CAAK,QAAS,EAAA;AACrC,MAAI,IAAA,EAAE,WAAW,eAAkB,CAAA,EAAA;AACjC,QAAA,MAAM,EAAE,cAAe,EAAA,GAAI,MAAM,iBAAkB,CAAA,UAAA,EAAY,OAAO,IAAI,CAAA;AAC1E,QAAA,eAAA,CAAgB,OAAO,CAAI,GAAA,cAAA;AAAA;AAE7B,MAAO,MAAA,CAAA,SAAA,GAAY,gBAAgB,OAAO,CAAA;AAC1C,MAAO,OAAA,MAAA;AAAA,KACR;AAAA,GACH;AACF;AAUA,eAAsB,wBACpB,CAAA,UAAA,EACA,KACA,EAAA,WAAA,EACA,UAKC,EAAA;AACD,EAAc,WAAA,GAAA,MAAM,eAAgB,CAAA,UAAA,EAAY,WAAW,CAAA;AAC3D,EAAM,MAAA,GAAA,GAAgC,MAAM,OAAQ,CAAA,GAAA;AAAA,IAClD,YAAY,GAAI,CAAA,OAAO,EAAE,IAAM,EAAA,KAAA,EAAO,WAAgB,KAAA;AACpD,MAAOE,OAAAA,gDAAAA,CAAwC,OAAO,MAAM,GAAA,CAAI,MAAM,KAAK,CAAA,EAAG,KAAO,EAAA,IAAA,EAAM,SAAS,CAAA;AAAA,KACrG;AAAA,GACH;AACA,EAAM,MAAA,EAAE,KAAO,EAAA,IAAA,EAAM,OAAQ,EAAA,GAAI,MAAM,UAAW,CAAA,4BAAA,CAA6B,EAAE,UAAA,EAAY,CAAA;AAC7F,EAAO,OAAA,EAAE,IAAI,0BAA2B,CAAA,GAAA,EAAK,OAAO,IAAK,CAAA,SAAS,CAAG,EAAA,IAAA,EAAM,OAAQ,EAAA;AACrF;AAWA,eAAsB,cACpB,CAAA,UAAA,EACA,OACA,EAAA,WAAA,EACA,YACA,IACiB,EAAA;AACjB,EAAA,MAAM,EAAE,EAAA,EAAI,IAAM,EAAA,OAAA,KAAY,MAAM,wBAAA;AAAA,IAClC,UAAA;AAAA,IACA,OAAQ,CAAA,SAAA;AAAA,IACR,MAAM,eAAgB,CAAA,UAAA,EAAY,WAAW,CAAA;AAAA,IAC7C;AAAA,GACF;AACA,EAAA,OAAO,yBAA0B,CAAA,UAAA,EAAY,OAAS,EAAA,EAAA,EAAI,EAAE,IAAA,EAAM,OAAS,EAAA,UAAA,EAAc,EAAA,EAAE,QAAU,EAAA,IAAA,EAAM,CAAA;AAC7G;AAYA,eAAsB,sBACpB,UACA,EAAA,MAAA,EACA,IACA,EAAA,OAAA,EACA,WACA,KACmC,EAAA;AACnC,EAAA,kBAAA,CAAmB,SAAS,oEAAoE,CAAA;AAChG,EAAA,MAAM,MAAgC,EAAC;AACvC,EAAA,IAAI,CAAC,SAAW,EAAA;AACd,IAAA,SAAA,GAAA,CAAa,MAAM,iBAAA,CAAkB,UAAY,EAAA,IAAI,CAAG,EAAA,cAAA;AAAA;AAG1D,EAAA,MAAM,OAAoB,EAAC;AAC3B,EAAA,KAAA,MAAW,SAAS,MAAQ,EAAA;AAC1B,IAAA,IAAA,CAAK,KAAK,MAAM,GAAA,CAAI,IAAM,EAAA,KAAA,EAAO,SAAS,CAAC,CAAA;AAAA;AAE7C,EAAA,MAAM,QAAW,GAAA,MAAM,UAAW,CAAA,uBAAA,CAAwB,IAAI,CAAA;AAC9D,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,QAAA,CAAS,QAAQ,CAAK,EAAA,EAAA;AACxC,IAAI,IAAA,CAAC,QAAS,CAAA,CAAC,CAAG,EAAA;AAChB,MAAI,GAAA,CAAA,IAAA;AAAA,QACFA,gDAAAA,CAAwC,KAAS,IAAA,OAAA,CAAQ,SAAW,EAAA,IAAA,CAAK,CAAC,CAAA,EAAI,MAAO,CAAA,CAAC,CAAI,EAAA,IAAA,EAAM,SAAS;AAAA,OAC3G;AAAA;AACF;AAEF,EAAO,OAAA,GAAA;AACT;AAOO,SAAS,uBACd,CAAA,UAAA,EACA,EAAE,YAAA,EAAc,cACU,EAAA;AAC1B,EAAA,MAAM,MAAgC,EAAC;AAEvC,EAAI,IAAA,YAAA,IAAgB,OAAO,YAAA,KAAiB,UAAY,EAAA;AACtD,IAAA,GAAA,CAAI,KAAKW,4BAAqB,CAAA,mBAAA,CAAoB,EAAE,aAAe,EAAA,YAAA,EAAc,CAAC,CAAA;AAAA;AAEpF,EAAI,IAAA,YAAA,IAAgB,OAAO,YAAA,KAAiB,QAAU,EAAA;AACpD,IAAA,GAAA,CAAI,KAAKA,4BAAqB,CAAA,mBAAA,CAAoB,EAAE,KAAO,EAAA,YAAA,EAAc,CAAC,CAAA;AAAA;AAG5E,EAAO,OAAA,GAAA;AACT;AAWA,eAAsB,iBAAA,CACpB,UACA,EAAA,OAAA,EACA,UACoD,EAAA;AACpD,EAAA,MAAM,WAAc,GAAA,MAAM,UAAW,CAAA,cAAA,CAAe,SAAS,UAAU,CAAA;AACvE,EAAA,IAAI,YAAY,WAAa,EAAA,KAAA;AAC7B,EAAI,IAAA,CAAC,WAAW,MAAO,CAAAC,yBAAgB,KAAK,CAAC,SAAA,EAAW,MAAO,CAAAC,8BAAqB,CAAG,EAAA;AACrF,IAAY,SAAA,GAAAD,yBAAA;AAAA;AAEd,EAAO,OAAA;AAAA,IACL,IAAM,EAAAE,mBAAA,CAAW,OAAS,EAAA,WAAA,EAAa,SAAS,CAAA;AAAA,IAChD,cAAgB,EAAA;AAAA,GAClB;AACF;AAYA,eAAsB,8BAAA,CACpB,UACA,EAAA,OAAA,EACA,UACyC,EAAA;AACzC,EAAA,MAAM,SAAY,GAAA,EAAA;AAClB,EAAA,MAAM,UAAqD,EAAC;AAE5D,EAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,OAAQ,CAAA,MAAA,EAAQ,KAAK,SAAW,EAAA;AAClD,IAAA,MAAM,KAAQ,GAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,EAAG,IAAI,SAAS,CAAA;AAC5C,IAAA,OAAA,CAAQ,IAAK,CAAA,UAAA,CAAW,uBAAwB,CAAA,KAAA,EAAO,UAAU,CAAC,CAAA;AAAA;AAGpE,EAAA,MAAM,OAAU,GAAA,MAAM,OAAQ,CAAA,GAAA,CAAI,OAAO,CAAA;AACzC,EAAA,OAAO,QAAQ,IAAK,EAAA;AACtB;AAKO,SAAS,mBAAmB,UAAgD,EAAA;AACjF,EAAA,OAAO,IAAIC,cAAA,CAAQ,sBAAkB,EAAA,EAAE,YAAY,CAAA;AACrD;AC9nBO,SAAS,0BAA0B,YAAsB,EAAA;AAC9D,EAAA,MAAM,QAAWC,GAAAA,aAAAA,CAAO,IAAK,CAAA,YAAA,EAAc,QAAQ,CAAA;AACnD,EAAI,IAAA;AACF,IAAM,MAAA,EAAA,GAAKC,mBAAY,CAAA,IAAA,CAAK,QAAQ,CAAA;AACpC,IAAA,OAAO,2BAA2B,EAAE,CAAA;AAAA,WAC7B,KAAO,EAAA;AACd,IAAI,IAAA;AACF,MAAM,MAAA,GAAA,GAAMT,4BAAqB,CAAA,WAAA,CAAY,QAAQ,CAAA;AACrD,MAAA,OAAO,2BAA2B,GAAG,CAAA;AAAA,aAC9B,MAAQ,EAAA;AACf,MAAA,MAAM,IAAI,KAAM,CAAA,qCAAA,IAAyC,kBAAkB,KAAQ,GAAA,MAAA,CAAO,UAAU,MAAS,CAAA,EAAA;AAAA,QAC3G,KAAO,EAAA;AAAA,OACR,CAAA;AAAA;AACH;AAEJ;AAEa,IAAA,0BAAA,GAA6B,CAAC,EAA2C,KAAA;AACpF,EAAA,IAAI,cAAcS,mBAAa,EAAA;AAC7B,IAAMC,MAAAA,QAAAA,GAAU,GAAG,cAAe,EAAA;AAClC,IAAA,MAAMC,YAAWD,QAAQ,CAAA,WAAA;AACzB,IAAME,MAAAA,iBAAAA,GAAmBD,UAAS,MAAO,CAAA,CAAC,GAAG,GAAQD,KAAAA,QAAAA,CAAQ,iBAAkB,CAAA,GAAG,CAAC,CAAA;AACnF,IAAO,OAAA;AAAA,MACL,IAAM,EAAA,QAAA;AAAA,MACN,WAAa,EAAA,EAAA;AAAA,MACb,QAAAC,EAAAA,SAAAA;AAAA,MACA,gBAAAC,EAAAA;AAAA,KACF;AAAA;AAGF,EAAA,MAAM,UAAU,EAAG,CAAA,OAAA;AACnB,EAAA,MAAM,QACJ,GAAA,mBAAA,IAAuB,OACnB,GAAA,OAAA,CAAQ,oBACP,OAAmD,CAAA,WAAA;AAE1D,EAAM,MAAA,gBAAA,GAAmB,SAAS,MAAO,CAAA,CAAC,GAAG,GAAQ,KAAA,OAAA,CAAQ,iBAAkB,CAAA,GAAG,CAAC,CAAA;AACnF,EAAO,OAAA;AAAA,IACL,IAAM,EAAA,WAAA;AAAA,IACN,WAAa,EAAA,EAAA;AAAA,IACb,QAAA;AAAA,IACA;AAAA,GACF;AACF;AC3Ca,IAAA,EAAA,GAAK,CAAC,OAA2C,KAAA;AAC5D,EAAA,OAAO,OAAO,OAAY,KAAA,QAAA,GAAW,IAAIC,iBAAA,CAAU,OAAO,CAAI,GAAA,OAAA;AAChE;;;ACDA,IAAM,qBAAwB,GAAA,CAC5B,GACA,EAAA,KAAA,EACA,iBACA,cACG,KAAA;AACH,EAAA,OAAO,0BAA2B,CAAA,GAAA,EAAK,KAAO,EAAmB,oCAAoC,cAAc,CAAA;AACrH,CAAA;AAEA,eAAsB,wBAAA,CACpB,UACA,MACiB,EAAA;AACjB,EAAA,OAAO,QAAS,CAAA,0BAAA,CAA2B,MAAM,CAAA,CAAE,gBAAgB,CAAA;AACrE;AAgBA,eAAsB,4BAAA,CAIpB,QACA,EAAA,SAAA,EACA,MACwC,EAAA;AACxC,EAAS,MAAA,GAAA,MAAA,KAAW,CAAC,KAAyC,KAAA,KAAA,CAAA;AAC9D,EAAM,MAAA,YAAA,GAAe,MAAM,QAAA,CAAS,SAAS,CAAA;AAC7C,EAAM,MAAA,UAAA,GAAa,OAAO,YAAY,CAAA;AAEtC,EAAM,MAAA,EAAE,YAAc,EAAA,YAAA,EAAiB,GAAA,SAAA;AACvC,EAAM,MAAA,OAAA,GAAU,UAAU,OAAQ,CAAA,SAAA;AAClC,EAAA,SAAA,CAAU,SAAS,oEAAoE,CAAA;AACvF,EAAA,MAAM,SAAS,qBAAsB,CAAA,UAAA,EAAY,GAAG,OAAO,CAAA,EAAG,QAAW,MAAS,CAAA;AAClF,EAAA,MAAM,wBAAwB,OAAO,YAAA,KAAiB,aAAa,MAAM,YAAA,CAAa,MAAM,CAAI,GAAA,YAAA;AAEhG,EAAI,IAAA,OAAO,iBAAiB,UAAY,EAAA;AACtC,IAAI,IAAA,OAAO,iBAAiB,UAAY,EAAA;AACtC,MAAO,OAAA,YAAA;AAAA;AAGT,IAAA,OAAO,QAAS,CAAA;AAAA,MACd,GAAG,SAAA;AAAA,MACH,YAAc,EAAA;AAAA,KACf,CAAA;AAAA;AAGH,EAAA,MAAM,4BACJ,OAAO,YAAA,KAAiB,aACpB,MAAM,wBAAA,CAAyB,cAAc,MAAM,CAAA;AAAA;AAAA,IAEnD;AAAA,GAAA;AAEN,EAAA,OAAO,QAAS,CAAA;AAAA,IACd,GAAG,SAAA;AAAA,IACH,YAAc,EAAA,yBAAA;AAAA,IACd,YAAc,EAAA;AAAA,GACf,CAAA;AACH;;;ACnEO,IAAM,uBAAuB,OAClC,UAAA,EACA,EACA,EAAA,OAAA,GAA0C,EACvC,KAAA;AACH,EAAM,MAAA,EAAE,cAAiB,GAAA,IAAA,EAAS,GAAA,OAAA;AAClC,EAAA,MAAM,iBAAoB,GAAA,MAAM,UAAW,CAAA,mBAAA,CAAoB,EAAI,EAAA;AAAA,IACjE,SAAW,EAAA,KAAA;AAAA,IACX,sBAAwB,EAAA;AAAA,GACzB,CAAA;AACD,EAAO,OAAA;AAAA,IACL,aAAe,EAAA,iBAAA,CAAkB,KAAM,CAAA,aAAA,GACnC,IAAK,CAAA,IAAA,CAAK,iBAAkB,CAAA,KAAA,CAAM,aAAiB,IAAA,CAAA,GAAI,cAAe,CAAA,CAAA,GACtE,kBAAkB,KAAM,CAAA,aAAA;AAAA,IAC5B,IAAM,EAAA;AAAA,GACR;AACF,CAAA;;;AClBO,IAAM,wBAAwB,CACnC,EAAE,cAAc,GAAG,IAAA,IACnB,UAC0B,KAAA;AAC1B,EAAA,MAAM,cACJ,GAAA,YAAA,KAAiB,cACX,GAAA,CAAC,OACD,oBAAqB,CAAA,UAAA,EAAY,EAAE,CAAA,CAAE,KAAK,CAAC,KAAA,KAAU,KAAM,CAAA,aAAA,IAAiB,CAAC,CAC/E,GAAA,YAAA;AAEN,EAAA,OAAO,EAAE,GAAG,IAAA,EAAM,cAAc,cAAgB,EAAA,cAAA,EAAgB,iBAAiB,cAAe,EAAA;AAClG;;;ACPO,IAAM,eAAkB,GAAA,OAC7B,MACA,EAAA,OAAA,GAAA,SAAA,gBACA,OAC8B,KAAA;AAC9B,EAAM,MAAA,GAAA,GAAM,kDAAkD,kBAAmB,CAAA,MAAM,CAAC,CAAY,SAAA,EAAA,kBAAA,CAAmB,OAAO,CAAC,CAAA,CAAA;AAE/H,EAAM,MAAA,IAAA,GAAO,SAAS,SAAa,IAAA,KAAA;AACnC,EAAM,MAAA,UAAA,GAAa,IAAI,eAAgB,EAAA;AACvC,EAAM,MAAA,OAAA,GAAU,OAAS,EAAA,SAAA,GACrB,UAAW,CAAA,MAAM,WAAW,KAAM,EAAA,EAAG,OAAQ,CAAA,SAAS,CACtD,GAAA,MAAA;AAEJ,EAAI,IAAA;AACF,IAAM,MAAA,GAAA,GAAM,MAAM,IAAA,CAAK,GAAK,EAAA;AAAA,MAC1B,OAAA,EAAS,EAAE,cAAA,EAAgB,kBAAmB,EAAA;AAAA,MAC9C,QAAQ,UAAW,CAAA;AAAA,KACpB,CAAA;AACD,IAAI,IAAA,CAAC,IAAI,EAAI,EAAA;AACX,MAAM,MAAA,IAAI,MAAM,CAAoB,iBAAA,EAAA,GAAA,CAAI,MAAM,CAAI,CAAA,EAAA,GAAA,CAAI,UAAU,CAAE,CAAA,CAAA;AAAA;AAEpE,IAAM,MAAA,IAAA,GAAQ,MAAM,GAAA,CAAI,IAAK,EAAA;AAC7B,IAAM,MAAA,KAAA,GAAQ,IAAM,EAAA,IAAA,GAAO,MAAM,CAAA;AACjC,IAAO,OAAA,EAAE,EAAI,EAAA,MAAA,EAAQ,KAAO,EAAA,OAAO,OAAO,KAAU,KAAA,QAAA,GAAW,KAAM,CAAA,KAAA,GAAQ,KAAU,CAAA,EAAA;AAAA,GACvF,SAAA;AACA,IAAI,IAAA,OAAA,eAAsB,OAAO,CAAA;AAAA;AAErC","file":"index.cjs","sourcesContent":["'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","import type { MemcmpFilter, PublicKey } from \"@solana/web3.js\";\n\nexport const getFilters = <T extends Record<string, number | PublicKey>>(\n criteria: T,\n byteOffsets: Record<keyof T, number>,\n): MemcmpFilter[] => {\n return Object.entries(criteria).reduce((acc, [key, value]) => {\n const criteriaKey = key as keyof typeof criteria;\n const effectiveByteOffset = byteOffsets[criteriaKey];\n if (criteria[criteriaKey] && effectiveByteOffset) {\n acc.push({\n memcmp: {\n offset: effectiveByteOffset,\n bytes: value.toString(),\n },\n });\n }\n return acc;\n }, [] as MemcmpFilter[]);\n};\n","import {\n getAssociatedTokenAddress,\n NATIVE_MINT,\n createAssociatedTokenAccountInstruction,\n createSyncNativeInstruction,\n} from \"@solana/spl-token\";\nimport type { Connection, PublicKey, TransactionInstruction } from \"@solana/web3.js\";\nimport { SystemProgram } from \"@solana/web3.js\";\nimport type BN from \"bn.js\";\n\nexport const prepareWrappedAccount = async (\n connection: Connection,\n senderAddress: PublicKey,\n amount: BN,\n): Promise<TransactionInstruction[]> => {\n const tokenAccount = await getAssociatedTokenAddress(NATIVE_MINT, senderAddress, true);\n\n const accInfo = await connection.getParsedAccountInfo(tokenAccount);\n\n const instructions =\n (accInfo.value?.lamports ?? 0) > 0\n ? []\n : [createAssociatedTokenAccountInstruction(senderAddress, tokenAccount, senderAddress, NATIVE_MINT)];\n\n return [\n ...instructions,\n SystemProgram.transfer({\n fromPubkey: senderAddress,\n toPubkey: tokenAccount,\n lamports: amount.toNumber(),\n }),\n createSyncNativeInstruction(tokenAccount),\n ];\n};\n","import {\n type TransactionInstruction,\n type AccountInfo,\n type BlockhashWithExpiryBlockHeight,\n type Commitment,\n type Context,\n type PublicKey,\n type VersionedTransaction,\n} from \"@solana/web3.js\";\nimport type PQueue from \"p-queue\";\nimport type { Idl, IdlAccounts, IdlTypes, Program } from \"@coral-xyz/anchor\";\n\nimport type { PartnerOracle as PartnerOracle } from \"./descriptor/partner_oracle.js\";\n\nexport type ComputePriceEstimate = (tx: string | (string | PublicKey)[]) => Promise<number>;\nexport type ComputeLimitEstimate = (tx: VersionedTransaction) => Promise<number>;\n\n/**\n * Additional parameter for Solana Transaction processing.\n *\n * computePrice - compute price per CU in micro-lamports to be set in a transaction - priority fee, accepts:\n * - a constant number;\n * - a callable that returns a price for a built transaction;\n * computeLimit - compute limit in CUs to set for a transaction, `computePrice` is paid per every allocated CU, accepts:\n * - a constant number;\n * - a callable that returns a CU limit for a built transaction;\n * - `autoSimulate` - will be unwrapped by `unwrapExecutionParams` and converted to a callable that runs a simulation to estimate CUs and set a limit with some margin;\n * feePayer - account that will be set as sol fee payer in instructions that accept such account, i.e. ATA creation:\n * - should be only when building instructions via `prepare` methods, as tx executing methods will fail without a signer;\n * - currently supported only when claiming an Airdrop;\n */\nexport interface ITransactionExt {\n computePrice?: number | ComputePriceEstimate;\n computeLimit?: number | ComputeLimitEstimate | \"autoSimulate\";\n feePayer?: PublicKey;\n}\n\n/**\n * Acceptable type with resolved values.\n * Function types may be omitted if passed to destinations that do not support them.\n */\ntype ITransactionExtResolvedValues = {\n computePrice?: number | ComputePriceEstimate;\n computeLimit?: number | ComputeLimitEstimate;\n feePayer?: PublicKey;\n};\n\ntype KeysNotOfA<T, ToExclude> = Pick<T, Exclude<keyof T, keyof ToExclude>>;\n\nexport type ITransactionExtResolved<T extends ITransactionExt = ITransactionExt> = {\n [AK in keyof KeysNotOfA<T, ITransactionExt>]: T[AK];\n} & ITransactionExtResolvedValues;\n\nexport interface IInteractExt extends ITransactionExt {\n invoker: {\n publicKey: string | PublicKey | null;\n };\n}\n\nexport interface Account {\n pubkey: PublicKey;\n account: AccountInfo<Buffer>;\n}\n\nexport interface CheckAssociatedTokenAccountsData {\n sender: PublicKey;\n recipient: PublicKey;\n partner: PublicKey;\n streamflowTreasury: PublicKey;\n mint: PublicKey;\n}\n\nexport interface AtaParams {\n mint: PublicKey;\n owner: PublicKey;\n programId?: PublicKey;\n}\n\nexport interface ConfirmationParams {\n hash: BlockhashWithExpiryBlockHeight;\n context: Context;\n commitment?: Commitment;\n}\n\nexport interface ThrottleParams {\n sendRate?: number;\n sendThrottler?: PQueue;\n waitBeforeConfirming?: number | undefined;\n}\n\nexport interface TransactionExecutionParams extends ThrottleParams {\n skipSimulation?: boolean;\n}\n\nexport interface IProgramAccount<T> {\n publicKey: PublicKey;\n account: T;\n}\n\nexport class TransactionFailedError extends Error {\n constructor(m: string) {\n super(m);\n Object.setPrototypeOf(this, TransactionFailedError.prototype);\n this.name = \"TransactionFailedError\";\n }\n}\n\nexport interface IPrepareResult {\n ixs: TransactionInstruction[];\n}\n\nexport interface ITransactionResult extends IPrepareResult {\n txId: string;\n}\n\n// Utility types\nexport enum ICluster {\n Mainnet = \"mainnet\",\n Devnet = \"devnet\",\n Testnet = \"testnet\",\n Local = \"local\",\n}\n\n/// Anchor type extractions\nexport type IdlInstruction<IDL extends Idl, Name extends IDL[\"instructions\"][number][\"name\"]> = Extract<\n IDL[\"instructions\"][number],\n { name: Name }\n>;\n\nexport type IdlAccountsOfMethod<IDL extends Idl, M extends keyof Program<IDL>[\"methods\"]> = Parameters<\n ReturnType<Program<IDL>[\"methods\"][M]>[\"accounts\"]\n>[0];\nexport type IdlArgsOfMethod<IDL extends Idl, M extends keyof Program<IDL>[\"methods\"]> = Parameters<\n Program<IDL>[\"methods\"][M]\n>;\n\n// Common Partner oracle\nexport type PartnerOracleTypes = IdlTypes<PartnerOracle>;\nexport type PartnerOracleAccounts = IdlAccounts<PartnerOracle>;\n\n/**\n * Error wrapper for calls made to the contract on chain\n */\nexport class ContractError extends Error {\n public contractErrorCode: string | null;\n\n public description: string | null;\n\n /**\n * Constructs the Error Wrapper\n * @param error Original error raised probably by the chain SDK\n * @param code extracted code from the error if managed to parse it\n */\n constructor(error: Error, code?: string | null, description?: string | null) {\n super(error.message, { cause: error }); // Call the base class constructor with the error message\n this.contractErrorCode = code ?? null;\n this.description = description ?? null;\n // Copy properties from the original error\n Object.setPrototypeOf(this, ContractError.prototype);\n this.name = \"ContractError\"; // Set the name property\n this.stack = error.stack;\n }\n}\n","import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n","export class TimeoutError extends Error {\n\tconstructor(message) {\n\t\tsuper(message);\n\t\tthis.name = 'TimeoutError';\n\t}\n}\n\n/**\nAn error to be thrown when the request is aborted by AbortController.\nDOMException is thrown instead of this Error when DOMException is available.\n*/\nexport class AbortError extends Error {\n\tconstructor(message) {\n\t\tsuper();\n\t\tthis.name = 'AbortError';\n\t\tthis.message = message;\n\t}\n}\n\n/**\nTODO: Remove AbortError and just throw DOMException when targeting Node 18.\n*/\nconst getDOMException = errorMessage => globalThis.DOMException === undefined\n\t? new AbortError(errorMessage)\n\t: new DOMException(errorMessage);\n\n/**\nTODO: Remove below function and just 'reject(signal.reason)' when targeting Node 18.\n*/\nconst getAbortedReason = signal => {\n\tconst reason = signal.reason === undefined\n\t\t? getDOMException('This operation was aborted.')\n\t\t: signal.reason;\n\n\treturn reason instanceof Error ? reason : getDOMException(reason);\n};\n\nexport default function pTimeout(promise, options) {\n\tconst {\n\t\tmilliseconds,\n\t\tfallback,\n\t\tmessage,\n\t\tcustomTimers = {setTimeout, clearTimeout},\n\t} = options;\n\n\tlet timer;\n\n\tconst wrappedPromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (options.signal) {\n\t\t\tconst {signal} = options;\n\t\t\tif (signal.aborted) {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t}\n\n\t\t\tsignal.addEventListener('abort', () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t});\n\t\t}\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\tpromise.then(resolve, reject);\n\t\t\treturn;\n\t\t}\n\n\t\t// We create the error outside of `setTimeout` to preserve the stack trace.\n\t\tconst timeoutError = new TimeoutError();\n\n\t\ttimer = customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (fallback) {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\tif (message === false) {\n\t\t\t\tresolve();\n\t\t\t} else if (message instanceof Error) {\n\t\t\t\treject(message);\n\t\t\t} else {\n\t\t\t\ttimeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\t\treject(timeoutError);\n\t\t\t}\n\t\t}, milliseconds);\n\n\t\t(async () => {\n\t\t\ttry {\n\t\t\t\tresolve(await promise);\n\t\t\t} catch (error) {\n\t\t\t\treject(error);\n\t\t\t}\n\t\t})();\n\t});\n\n\tconst cancelablePromise = wrappedPromise.finally(() => {\n\t\tcancelablePromise.clear();\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\tcustomTimers.clearTimeout.call(undefined, timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n","import lowerBound from './lower-bound.js';\nexport default class PriorityQueue {\n #queue = [];\n enqueue(run, options) {\n options = {\n priority: 0,\n ...options,\n };\n const element = {\n priority: options.priority,\n run,\n };\n if (this.size && this.#queue[this.size - 1].priority >= options.priority) {\n this.#queue.push(element);\n return;\n }\n const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n dequeue() {\n const item = this.#queue.shift();\n return item?.run;\n }\n filter(options) {\n return this.#queue.filter((element) => element.priority === options.priority).map((element) => element.run);\n }\n get size() {\n return this.#queue.length;\n }\n}\n","import { EventEmitter } from 'eventemitter3';\nimport pTimeout, { TimeoutError } from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n #carryoverConcurrencyCount;\n #isIntervalIgnored;\n #intervalCount = 0;\n #intervalCap;\n #interval;\n #intervalEnd = 0;\n #intervalId;\n #timeoutId;\n #queue;\n #queueClass;\n #pending = 0;\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n #concurrency;\n #isPaused;\n #throwOnTimeout;\n /**\n Per-operation timeout in milliseconds. Operations fulfill once `timeout` elapses if they haven't already.\n\n Applies to each future operation.\n */\n timeout;\n // TODO: The `throwOnTimeout` option should affect the return types of `add()` and `addAll()`\n constructor(options) {\n super();\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverConcurrencyCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap?.toString() ?? ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval?.toString() ?? ''}\\` (${typeof options.interval})`);\n }\n this.#carryoverConcurrencyCount = options.carryoverConcurrencyCount;\n this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;\n this.#intervalCap = options.intervalCap;\n this.#interval = options.interval;\n this.#queue = new options.queueClass();\n this.#queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n this.timeout = options.timeout;\n this.#throwOnTimeout = options.throwOnTimeout === true;\n this.#isPaused = options.autoStart === false;\n }\n get #doesIntervalAllowAnother() {\n return this.#isIntervalIgnored || this.#intervalCount < this.#intervalCap;\n }\n get #doesConcurrentAllowAnother() {\n return this.#pending < this.#concurrency;\n }\n #next() {\n this.#pending--;\n this.#tryToStartAnother();\n this.emit('next');\n }\n #onResumeInterval() {\n this.#onInterval();\n this.#initializeIntervalIfNeeded();\n this.#timeoutId = undefined;\n }\n get #isIntervalPaused() {\n const now = Date.now();\n if (this.#intervalId === undefined) {\n const delay = this.#intervalEnd - now;\n if (delay < 0) {\n // Act as the interval was done\n // We don't need to resume it here because it will be resumed on line 160\n this.#intervalCount = (this.#carryoverConcurrencyCount) ? this.#pending : 0;\n }\n else {\n // Act as the interval is pending\n if (this.#timeoutId === undefined) {\n this.#timeoutId = setTimeout(() => {\n this.#onResumeInterval();\n }, delay);\n }\n return true;\n }\n }\n return false;\n }\n #tryToStartAnother() {\n if (this.#queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n if (this.#intervalId) {\n clearInterval(this.#intervalId);\n }\n this.#intervalId = undefined;\n this.emit('empty');\n if (this.#pending === 0) {\n this.emit('idle');\n }\n return false;\n }\n if (!this.#isPaused) {\n const canInitializeInterval = !this.#isIntervalPaused;\n if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {\n const job = this.#queue.dequeue();\n if (!job) {\n return false;\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n this.#initializeIntervalIfNeeded();\n }\n return true;\n }\n }\n return false;\n }\n #initializeIntervalIfNeeded() {\n if (this.#isIntervalIgnored || this.#intervalId !== undefined) {\n return;\n }\n this.#intervalId = setInterval(() => {\n this.#onInterval();\n }, this.#interval);\n this.#intervalEnd = Date.now() + this.#interval;\n }\n #onInterval() {\n if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {\n clearInterval(this.#intervalId);\n this.#intervalId = undefined;\n }\n this.#intervalCount = this.#carryoverConcurrencyCount ? this.#pending : 0;\n this.#processQueue();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */\n #processQueue() {\n // eslint-disable-next-line no-empty\n while (this.#tryToStartAnother()) { }\n }\n get concurrency() {\n return this.#concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this.#concurrency = newConcurrency;\n this.#processQueue();\n }\n async #throwOnAbort(signal) {\n return new Promise((_resolve, reject) => {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n }, { once: true });\n });\n }\n async add(function_, options = {}) {\n options = {\n timeout: this.timeout,\n throwOnTimeout: this.#throwOnTimeout,\n ...options,\n };\n return new Promise((resolve, reject) => {\n this.#queue.enqueue(async () => {\n this.#pending++;\n this.#intervalCount++;\n try {\n options.signal?.throwIfAborted();\n let operation = function_({ signal: options.signal });\n if (options.timeout) {\n operation = pTimeout(Promise.resolve(operation), { milliseconds: options.timeout });\n }\n if (options.signal) {\n operation = Promise.race([operation, this.#throwOnAbort(options.signal)]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n if (error instanceof TimeoutError && !options.throwOnTimeout) {\n resolve();\n return;\n }\n reject(error);\n this.emit('error', error);\n }\n finally {\n this.#next();\n }\n }, options);\n this.emit('add');\n this.#tryToStartAnother();\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!this.#isPaused) {\n return this;\n }\n this.#isPaused = false;\n this.#processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n this.#isPaused = true;\n }\n /**\n Clear the queue.\n */\n clear() {\n this.#queue = new this.#queueClass();\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the queue is empty.\n if (this.#queue.size < limit) {\n return;\n }\n await this.#onEvent('next', () => this.#queue.size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.#pending === 0 && this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('idle');\n }\n async #onEvent(event, filter) {\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n this.off(event, listener);\n resolve();\n };\n this.on(event, listener);\n });\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return this.#queue.size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return this.#queue.filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return this.#pending;\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return this.#isPaused;\n }\n}\n","import BN from \"bn.js\";\n\nimport { ContractError } from \"../solana/types.js\";\n\n/**\n * Used for conversion of token amounts to their Big Number representation.\n * Get Big Number representation in the smallest units from the same value in the highest units.\n * @param {number} value - Number of tokens you want to convert to its BN representation.\n * @param {number} decimals - Number of decimals the token has.\n */\nexport const getBN = (value: number, decimals: number): BN => {\n const decimalPart = value - Math.trunc(value);\n const integerPart = new BN(Math.trunc(value));\n\n const decimalE = new BN(decimalPart * 1e9);\n\n const sum = integerPart.mul(new BN(1e9)).add(decimalE);\n const resultE = sum.mul(new BN(10).pow(new BN(decimals)));\n return resultE.div(new BN(1e9));\n};\n\n/**\n * Used for token amounts conversion from their Big Number representation to number.\n * Get value in the highest units from BN representation of the same value in the smallest units.\n * @param {BN} value - Big Number representation of value in the smallest units.\n * @param {number} decimals - Number of decimals the token has.\n */\nexport const getNumberFromBN = (value: BN, decimals: number): number =>\n value.gt(new BN(2 ** 53 - 1)) ? value.div(new BN(10 ** decimals)).toNumber() : value.toNumber() / 10 ** decimals;\n\n/**\n * Used to make on chain calls to the contract and wrap raised errors if any\n * @param func function that interacts with the contract\n * @param callback callback that may be used to extract error code\n * @returns {T}\n */\nexport async function handleContractError<T>(\n func: () => Promise<T>,\n callback?: (err: Error) => string | null,\n): Promise<T> {\n try {\n return await func();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (err: any) {\n if (err instanceof Error) {\n if (callback) {\n throw new ContractError(err, callback(err));\n }\n throw new ContractError(err);\n }\n throw err;\n }\n}\n\n/**\n * Pause async function execution for given amount of milliseconds\n * @param ms millisecond to sleep for\n */\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport const divCeilN = (n: bigint, d: bigint): bigint => n / d + (n % d ? BigInt(1) : BigInt(0));\n\n/**\n * Multiply a bigint by a JS number using string-based fixed-point to avoid overflow/precision issues.\n * Returns floor(x * y).\n */\nexport function multiplyBigIntByNumber(x: bigint, y: number, scaleDigits = 9): bigint {\n if (!Number.isFinite(y) || y === 0) return 0n;\n const isNegative = (x < 0n) !== (y < 0);\n const absX = x < 0n ? -x : x;\n const absY = Math.abs(y);\n\n const s = absY.toFixed(scaleDigits);\n const [intPart, fracPartRaw = \"\"] = s.split(\".\");\n const fracPart = fracPartRaw.padEnd(scaleDigits, \"0\").slice(0, scaleDigits);\n const yScaled = BigInt(intPart + fracPart); // absY * 10^scaleDigits\n const scale = 10n ** BigInt(scaleDigits);\n const product = (absX * yScaled) / scale;\n return isNegative ? -product : product;\n}\n","import type { PublicKey } from \"@solana/web3.js\";\n\nconst prefix = \"Assertion failed\";\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const invariant: (condition: any, message?: string | (() => string)) => asserts condition = (\n condition,\n message,\n) => {\n if (condition) {\n return;\n }\n const provided: string | undefined = typeof message === \"function\" ? message() : message;\n const value: string = provided ? `${prefix}: ${provided}` : prefix;\n throw new Error(value);\n};\n\nexport function assertHasPublicKey<T extends { publicKey?: PublicKey | null }>(\n value: T,\n message?: string | (() => string),\n): asserts value is T & { publicKey: PublicKey } {\n invariant(value.publicKey, message ?? \"publicKey is missing\");\n}\n\n","{\n \"address\": \"pardpVtPjC8nLj1Dwncew62mUzfChdCX1EaoZe8oCAa\",\n \"metadata\": {\n \"name\": \"partner_oracle\",\n \"version\": \"1.0.0\",\n \"spec\": \"0.1.0\",\n \"description\": \"Created with Anchor\"\n },\n \"instructions\": [\n {\n \"name\": \"airdrop_clear_expired_fees\",\n \"discriminator\": [\n 203,\n 5,\n 237,\n 235,\n 32,\n 38,\n 150,\n 235\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"docs\": [\n \"Account that stores the config\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"airdrop_get_fees\",\n \"discriminator\": [\n 185,\n 20,\n 28,\n 207,\n 70,\n 243,\n 32,\n 62\n ],\n \"accounts\": [\n {\n \"name\": \"config\",\n \"docs\": [\n \"Account that stores the config\"\n ],\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"pubkey\",\n \"type\": \"pubkey\"\n }\n ],\n \"returns\": {\n \"defined\": {\n \"name\": \"AirdropFees\"\n }\n }\n },\n {\n \"name\": \"airdrop_initialize_config\",\n \"discriminator\": [\n 2,\n 110,\n 102,\n 10,\n 34,\n 83,\n 164,\n 55\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Account that will cover tx fees, can be anybody since the instruction is safe\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"config\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"airdrop_remove_fees\",\n \"discriminator\": [\n 119,\n 246,\n 202,\n 91,\n 59,\n 94,\n 252,\n 239\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Fee Authority\"\n ],\n \"writable\": true,\n \"signer\": true,\n \"address\": \"CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7\"\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"Account that stores the config\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"pubkey\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"airdrop_write_default_fees\",\n \"discriminator\": [\n 37,\n 104,\n 254,\n 202,\n 136,\n 124,\n 245,\n 94\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Fee Authority\"\n ],\n \"writable\": true,\n \"signer\": true,\n \"address\": \"CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7\"\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"Account that stores the config\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"creation_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"price_oracle_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_min_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_max_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"allocation_factor\",\n \"type\": \"f64\"\n },\n {\n \"name\": \"clawback_token_fee_percent\",\n \"type\": \"f64\"\n }\n ]\n },\n {\n \"name\": \"airdrop_write_fees\",\n \"discriminator\": [\n 71,\n 165,\n 178,\n 215,\n 19,\n 70,\n 146,\n 71\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Fee Authority\"\n ],\n \"writable\": true,\n \"signer\": true,\n \"address\": \"CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7\"\n },\n {\n \"name\": \"config\",\n \"docs\": [\n \"Account that stores the config\"\n ],\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 97,\n 105,\n 114,\n 100,\n 114,\n 111,\n 112,\n 95,\n 99,\n 111,\n 110,\n 102,\n 105,\n 103\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"pubkey\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creation_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"price_oracle_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_min_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_max_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"allocation_factor\",\n \"type\": \"f64\"\n },\n {\n \"name\": \"clawback_token_fee_percent\",\n \"type\": \"f64\"\n },\n {\n \"name\": \"expiry_ts\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"vesting_get_fees\",\n \"discriminator\": [\n 239,\n 230,\n 28,\n 173,\n 134,\n 247,\n 57,\n 176\n ],\n \"accounts\": [\n {\n \"name\": \"partners\",\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 114,\n 109,\n 95,\n 102,\n 101,\n 101,\n 115\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"pubkey\",\n \"type\": \"pubkey\"\n }\n ],\n \"returns\": {\n \"defined\": {\n \"name\": \"VestingFees\"\n }\n }\n },\n {\n \"name\": \"vesting_initialize_partners\",\n \"discriminator\": [\n 205,\n 170,\n 148,\n 219,\n 143,\n 38,\n 77,\n 196\n ],\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"docs\": [\n \"Account that will cover tx fees, can be anybody since the instruction is safe\"\n ],\n \"writable\": true,\n \"signer\": true\n },\n {\n \"name\": \"partners\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 114,\n 109,\n 95,\n 102,\n 101,\n 101,\n 115\n ]\n }\n ]\n }\n },\n {\n \"name\": \"system_program\",\n \"address\": \"11111111111111111111111111111111\"\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"vesting_remove_fees\",\n \"discriminator\": [\n 233,\n 176,\n 222,\n 64,\n 79,\n 14,\n 48,\n 168\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Account that will cover tx fees, should be equal to creator if not is not expired\"\n ],\n \"writable\": true,\n \"signer\": true,\n \"address\": \"CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7\"\n },\n {\n \"name\": \"partners\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 114,\n 109,\n 95,\n 102,\n 101,\n 101,\n 115\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"pubkey\",\n \"type\": \"pubkey\"\n }\n ]\n },\n {\n \"name\": \"vesting_write_default_fees\",\n \"discriminator\": [\n 96,\n 198,\n 97,\n 81,\n 162,\n 50,\n 51,\n 10\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Account that will cover tx fees, should be equal to creator if not is not expired\"\n ],\n \"writable\": true,\n \"signer\": true,\n \"address\": \"CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7\"\n },\n {\n \"name\": \"partners\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 114,\n 109,\n 95,\n 102,\n 101,\n 101,\n 115\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"creation_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"auto_claim_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"token_fee_percent\",\n \"type\": \"f32\"\n }\n ]\n },\n {\n \"name\": \"vesting_write_fees\",\n \"discriminator\": [\n 251,\n 24,\n 6,\n 241,\n 182,\n 56,\n 93,\n 100\n ],\n \"accounts\": [\n {\n \"name\": \"authority\",\n \"docs\": [\n \"Account that will cover tx fees, should be equal to creator if not is not expired\"\n ],\n \"writable\": true,\n \"signer\": true,\n \"address\": \"CgdggophaMCFRP8gA1QjrZHsHaNQgByhBU7zoF5TpXF7\"\n },\n {\n \"name\": \"partners\",\n \"writable\": true,\n \"pda\": {\n \"seeds\": [\n {\n \"kind\": \"const\",\n \"value\": [\n 115,\n 116,\n 114,\n 109,\n 95,\n 102,\n 101,\n 101,\n 115\n ]\n }\n ]\n }\n }\n ],\n \"args\": [\n {\n \"name\": \"pubkey\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creation_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"auto_claim_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"token_fee_percent\",\n \"type\": \"f32\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"AirdropConfig\",\n \"discriminator\": [\n 194,\n 149,\n 223,\n 142,\n 42,\n 98,\n 128,\n 16\n ]\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"Unauthorized\",\n \"msg\": \"Account is not authorized to execute this instruction\"\n },\n {\n \"code\": 6001,\n \"name\": \"ArithmeticError\",\n \"msg\": \"Arithmetic Error (overflow/underflow)\"\n },\n {\n \"code\": 6100,\n \"name\": \"InvalidExpiry\",\n \"msg\": \"Provided expiry ts is invalid\"\n },\n {\n \"code\": 6101,\n \"name\": \"NoExpiredFees\",\n \"msg\": \"No expired fees found, transaction won't change the config\"\n },\n {\n \"code\": 6200,\n \"name\": \"InvalidVestingFee\",\n \"msg\": \"Received invalid Vesting Fee configuration\"\n },\n {\n \"code\": 6300,\n \"name\": \"InvalidAirdropFee\",\n \"msg\": \"Received invalid Airdrop Fee configuration\"\n },\n {\n \"code\": 6301,\n \"name\": \"AirdropConfigFull\",\n \"msg\": \"Airdrop config is full, can not write fees\"\n }\n ],\n \"types\": [\n {\n \"name\": \"AirdropConfig\",\n \"serialization\": \"bytemuck\",\n \"repr\": {\n \"kind\": \"c\"\n },\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"usd_multiplier\",\n \"docs\": [\n \"Multiplier to apply when calculating ALL fees\"\n ],\n \"type\": \"f32\"\n },\n {\n \"name\": \"solana_price\",\n \"docs\": [\n \"Last solana price used\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"creation_fee\",\n \"docs\": [\n \"Creation SOL fee\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"price_oracle_fee\",\n \"docs\": [\n \"Fee for custom price oracle used in dynamic airdrops\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_min_fee\",\n \"docs\": [\n \"Dynamic claim fee in SOL, min\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_max_fee\",\n \"docs\": [\n \"Dynamic claim fee in SOL, max\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"allocation_factor\",\n \"docs\": [\n \"Factor to multiple claimable SOL by when calculating fee\"\n ],\n \"type\": \"f64\"\n },\n {\n \"name\": \"clawback_token_fee_percent\",\n \"docs\": [\n \"Toke % fee on clawback\"\n ],\n \"type\": \"f64\"\n },\n {\n \"name\": \"buffer\",\n \"type\": {\n \"array\": [\n \"u8\",\n 144\n ]\n }\n },\n {\n \"name\": \"partners\",\n \"type\": {\n \"array\": [\n {\n \"defined\": {\n \"name\": \"AirdropPartner\"\n }\n },\n 100\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"AirdropFees\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"pubkey\",\n \"docs\": [\n \"Account for which the fees were configured\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creation_fee\",\n \"docs\": [\n \"Creation SOL fee\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"price_oracle_fee\",\n \"docs\": [\n \"Fee for custom price oracle used in dynamic airdrops\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_min_fee\",\n \"docs\": [\n \"Dynamic claim fee in SOL, min\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_max_fee\",\n \"docs\": [\n \"Dynamic claim fee in SOL, max\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"allocation_factor\",\n \"docs\": [\n \"Factor to multiple claimable SOL by when calculating fee\"\n ],\n \"type\": \"f64\"\n },\n {\n \"name\": \"clawback_token_fee_percent\",\n \"docs\": [\n \"Token % fee on clawback\"\n ],\n \"type\": \"f64\"\n }\n ]\n }\n },\n {\n \"name\": \"AirdropPartner\",\n \"serialization\": \"bytemuck\",\n \"repr\": {\n \"kind\": \"c\"\n },\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"pubkey\",\n \"docs\": [\n \"Pubkey of the partner\"\n ],\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creation_fee\",\n \"docs\": [\n \"Creation SOL fee\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"price_oracle_fee\",\n \"docs\": [\n \"Fee for custom price oracle used in dynamic airdrops\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_min_fee\",\n \"docs\": [\n \"Dynamic claim fee in SOL, min\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"claim_max_fee\",\n \"docs\": [\n \"Dynamic claim fee in SOL, max\"\n ],\n \"type\": \"u32\"\n },\n {\n \"name\": \"allocation_factor\",\n \"docs\": [\n \"Factor to multiple claimable SOL by when calculating fee\"\n ],\n \"type\": \"f64\"\n },\n {\n \"name\": \"clawback_token_fee_percent\",\n \"docs\": [\n \"Toke % fee on clawback\"\n ],\n \"type\": \"f64\"\n },\n {\n \"name\": \"expiry_ts\",\n \"docs\": [\n \"Time when fee configuration expires\"\n ],\n \"type\": \"u64\"\n },\n {\n \"name\": \"buffer\",\n \"docs\": [\n \"Buffer for additional fields\"\n ],\n \"type\": {\n \"array\": [\n \"u8\",\n 16\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"VestingFees\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"pubkey\",\n \"type\": \"pubkey\"\n },\n {\n \"name\": \"creation_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"auto_claim_fee\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"token_fee_percent\",\n \"type\": \"f32\"\n }\n ]\n }\n }\n ]\n}","import {\n createAssociatedTokenAccountInstruction,\n getAssociatedTokenAddress,\n unpackMint,\n type Mint,\n TOKEN_PROGRAM_ID,\n TOKEN_2022_PROGRAM_ID,\n} from \"@solana/spl-token\";\nimport type { SignerWalletAdapter } from \"@solana/wallet-adapter-base\";\nimport bs58 from \"bs58\";\nimport PQueue from \"p-queue\";\nimport {\n ComputeBudgetProgram,\n Keypair,\n type PublicKey,\n SendTransactionError,\n type Transaction,\n type TransactionInstruction,\n TransactionMessage,\n VersionedTransaction,\n type AccountInfo,\n type BlockhashWithExpiryBlockHeight,\n type Commitment,\n type Connection,\n type Context,\n type RpcResponseAndContext,\n type SignatureStatus,\n type SimulatedTransactionResponse,\n type AddressLookupTableAccount,\n} from \"@solana/web3.js\";\nimport { Program } from \"@coral-xyz/anchor\";\n\nimport {\n type Account,\n type AtaParams,\n type ConfirmationParams,\n type ITransactionExt,\n type ThrottleParams,\n type TransactionExecutionParams,\n TransactionFailedError,\n} from \"./types.js\";\nimport { sleep } from \"../lib/utils.js\";\nimport { assertHasPublicKey, invariant } from \"../lib/assertions.js\";\nimport type { PartnerOracle } from \"./descriptor/partner_oracle.js\";\nimport PartnerOracleIDL from \"./descriptor/idl/partner_oracle.json\";\n\nconst SIMULATE_TRIES = 3;\n\nexport const buildSendThrottler = (sendRate: number, sendInterval = 1000): PQueue => {\n return new PQueue({ concurrency: sendRate, intervalCap: 1, interval: sendInterval });\n};\n\n/**\n * Wrapper function for Solana web3 getProgramAccounts with slightly better call interface\n * @param {Connection} connection - Solana web3 connection object.\n * @param {PublicKey} wallet - PublicKey to compare against.\n * @param {number} offset - Offset of bits of the PublicKey in the account binary.\n * @param {PublicKey} programId - Solana program ID.\n * @return {Promise<Account[]>} - Array of resulting accounts.\n */\nexport async function getProgramAccounts(\n connection: Connection,\n wallet: PublicKey,\n offset: number,\n programId: PublicKey,\n): Promise<Account[]> {\n const programAccounts = await connection?.getProgramAccounts(programId, {\n filters: [\n {\n memcmp: {\n offset,\n bytes: wallet.toBase58(),\n },\n },\n ],\n });\n\n return [...programAccounts];\n}\n\n/**\n * Utility function to check if the transaction initiator is a Wallet object\n * @param {Keypair | SignerWalletAdapter} walletOrKeypair - Wallet or Keypair in question\n * @return {boolean} - Returns true if parameter is a Wallet.\n */\nexport function isSignerWallet(walletOrKeypair: Keypair | SignerWalletAdapter): walletOrKeypair is SignerWalletAdapter {\n return (<SignerWalletAdapter>walletOrKeypair).signTransaction !== undefined;\n}\n\n/**\n * Utility function to check if the transaction initiator a Keypair object, tries to mitigate version mismatch issues\n * @param walletOrKeypair {Keypair | SignerWalletAdapter} walletOrKeypair - Wallet or Keypair in question\n * @returns {boolean} - Returns true if parameter is a Keypair.\n */\nexport function isSignerKeypair(walletOrKeypair: Keypair | SignerWalletAdapter): walletOrKeypair is Keypair {\n return (\n walletOrKeypair instanceof Keypair ||\n walletOrKeypair.constructor === Keypair ||\n walletOrKeypair.constructor.name === Keypair.prototype.constructor.name\n );\n}\n\n/**\n * Utility function to check whether given transaction is Versioned\n * @param tx {Transaction | VersionedTransaction} - Transaction to check\n * @returns {boolean} - Returns true if transaction is Versioned.\n */\nexport function isTransactionVersioned(tx: Transaction | VersionedTransaction): tx is VersionedTransaction {\n return \"message\" in tx;\n}\n\n/**\n * Creates a Transaction with given instructions and optionally signs it.\n * @param connection - Solana client connection\n * @param ixs - Instructions to add to the Transaction\n * @param payer - PublicKey of payer\n * @param commitment - optional Commitment that will be used to fetch latest blockhash\n * @param partialSigners - optional signers that will be used to partially sign a Transaction\n * @param lookupTables - lookup table accounts to use in the transaction\n * @returns Transaction and Blockhash\n */\nexport async function prepareTransaction(\n connection: Connection,\n ixs: TransactionInstruction[],\n payer: PublicKey | undefined | null,\n commitment?: Commitment,\n partialSigners?: (Keypair | undefined)[],\n lookupTables?: AddressLookupTableAccount[],\n): Promise<{\n tx: VersionedTransaction;\n hash: BlockhashWithExpiryBlockHeight;\n context: Context;\n}> {\n if (!payer) {\n throw new Error(\"Payer public key is not provided!\");\n }\n\n const { value: hash, context } = await connection.getLatestBlockhashAndContext(commitment);\n\n return {\n tx: createVersionedTransaction(ixs, payer, hash.blockhash, partialSigners, lookupTables),\n hash,\n context,\n };\n}\n\nexport function createVersionedTransaction(\n ixs: TransactionInstruction[],\n payer: PublicKey | undefined | null,\n recentBlockhash: BlockhashWithExpiryBlockHeight[\"blockhash\"],\n partialSigners?: (Keypair | undefined)[],\n lookupTables?: AddressLookupTableAccount[],\n): VersionedTransaction {\n invariant(payer, \"Payer public key is not provided!\");\n const messageV0 = new TransactionMessage({\n payerKey: payer,\n recentBlockhash,\n instructions: ixs,\n }).compileToV0Message(lookupTables);\n const tx = new VersionedTransaction(messageV0);\n const signers = partialSigners?.filter((item): item is Keypair => !!item) ?? undefined;\n if (signers) {\n tx.sign(signers);\n }\n\n return tx;\n}\n\nexport async function signTransaction<T extends Transaction | VersionedTransaction>(\n invoker: Keypair | SignerWalletAdapter,\n tx: T,\n): Promise<T> {\n let signedTx: T;\n if (isSignerWallet(invoker)) {\n signedTx = await invoker.signTransaction(tx);\n } else {\n if (isTransactionVersioned(tx)) {\n tx.sign([invoker]);\n } else {\n tx.partialSign(invoker);\n }\n signedTx = tx;\n }\n return signedTx;\n}\n\n/**\n * Signs, sends and confirms Transaction\n * @param connection - Solana client connection\n * @param invoker - Keypair used as signer\n * @param tx - Transaction instance\n * @param confirmationParams - Confirmation Params that will be used for execution\n * @param transactionExecutionParams - rate or throttler instance to throttle TX sending - to not spam the blockchain too much and solana execution params (eg. skipSimulation)\n * @returns Transaction signature\n */\nexport async function signAndExecuteTransaction(\n connection: Connection,\n invoker: Keypair | SignerWalletAdapter,\n tx: Transaction | VersionedTransaction,\n confirmationParams: ConfirmationParams,\n transactionExecutionParams: TransactionExecutionParams,\n): Promise<string> {\n const signedTx = await signTransaction(invoker, tx);\n\n return executeTransaction(connection, signedTx, confirmationParams, transactionExecutionParams);\n}\n\n/**\n * Sends and confirms Transaction\n * Uses custom confirmation logic that:\n * - simulates tx before sending separately\n * - sends transaction without preFlight checks but with some valuable flags https://twitter.com/jordaaash/status/1774892862049800524?s=46&t=bhZ10V0r7IX5Lk5kKzxfGw\n * - rebroadcasts a tx every 500 ms\n * - after broadcasting check whether tx has executed once\n * - catch errors for every actionable item, throw only the ones that signal that tx has failed\n * - otherwise there is a chance of marking a landed tx as failed if it was broadcasted at least once\n * @param connection - Solana client connection\n * @param tx - Transaction instance\n * @param confirmationParams - Confirmation Params that will be used for execution\n * @param transactionExecutionParams - rate or throttler instance to throttle TX sending - to not spam the blockchain too much and solana execution params (eg. skipSimulation)\n * @returns Transaction signature\n */\nexport async function executeTransaction(\n connection: Connection,\n tx: Transaction | VersionedTransaction,\n confirmationParams: ConfirmationParams,\n transactionExecutionParams: TransactionExecutionParams,\n): Promise<string> {\n if (tx.signatures.length === 0) {\n throw Error(\"Error with transaction parameters.\");\n }\n if (!transactionExecutionParams.skipSimulation) {\n await simulateTransaction(connection, tx);\n }\n return sendAndConfirmTransaction(connection, tx, confirmationParams, transactionExecutionParams);\n}\n\n/**\n * Launches a PromisePool with all transaction being executed at the same time, allows to throttle all TXs through one Queue\n * @param connection - Solana client connection\n * @param txs - Transactions\n * @param confirmationParams - Confirmation Params that will be used for execution\n * @param throttleParams - rate or throttler instance to throttle TX sending - to not spam the blockchain too much\n * @param throttleParams.sendRate - rate\n * @param throttleParams.sendThrottler - throttler instance\n * @returns Raw Promise Results - should be handled by the consumer and unwrapped accordingly\n */\nexport async function executeMultipleTransactions(\n connection: Connection,\n txs: (Transaction | VersionedTransaction)[],\n confirmationParams: ConfirmationParams,\n { sendRate = 1, sendThrottler, ...throttlingParams }: ThrottleParams,\n): Promise<PromiseSettledResult<string>[]> {\n if (!sendThrottler) {\n sendThrottler = buildSendThrottler(sendRate);\n }\n return Promise.allSettled(\n txs.map((tx) =>\n executeTransaction(connection, tx, confirmationParams, {\n ...throttlingParams,\n sendRate: sendRate,\n sendThrottler: sendThrottler,\n }),\n ),\n );\n}\n\n/**\n * Sends and confirm transaction in a loop, constantly re-broadcsting the tx until Blockheight expires.\n * - we add additional 30 bocks to account for validators in an PRC pool divergence\n * @param connection - Solana client connection\n * @param tx - Transaction instance\n * @param confirmationParams - Confirmation Params that will be used for execution\n * @param confirmationParams.hash - blockhash information, the same hash should be used in the Transaction\n * @param confirmationParams.context - context at which blockhash has been retrieve\n * @param confirmationParams.commitment - optional commitment that will be used for simulation and confirmation\n * @param throttleParams - rate or throttler instance to throttle TX sending - to not spam the blockchain too much\n * @param throttleParams.sendRate - rate\n * @param throttleParams.sendThrottler - throttler instance\n */\nexport async function sendAndConfirmTransaction(\n connection: Connection,\n tx: Transaction | VersionedTransaction,\n { hash, context, commitment }: ConfirmationParams,\n { sendRate = 1, sendThrottler, waitBeforeConfirming }: ThrottleParams,\n): Promise<string> {\n const isVersioned = isTransactionVersioned(tx);\n\n let signature: string;\n if (isVersioned) {\n signature = bs58.encode(tx.signatures[0]!);\n } else {\n signature = bs58.encode(tx.signature!);\n }\n\n if (!sendThrottler) {\n sendThrottler = buildSendThrottler(sendRate);\n }\n\n let blockheight = await connection.getBlockHeight(commitment);\n let transactionSent = false;\n const rawTransaction = tx.serialize();\n while (blockheight < hash.lastValidBlockHeight + 15) {\n try {\n if (blockheight < hash.lastValidBlockHeight || !transactionSent) {\n await sendThrottler.add(async () =>\n connection.sendRawTransaction(rawTransaction, {\n maxRetries: 0,\n minContextSlot: context.slot,\n preflightCommitment: commitment,\n skipPreflight: true,\n }),\n );\n transactionSent = true;\n }\n } catch (e) {\n if (\n transactionSent ||\n (e instanceof SendTransactionError && e.message.includes(\"Minimum context slot has not been reached\"))\n ) {\n await sleep(500);\n continue;\n }\n throw e;\n }\n // Wait at least 5 slots (~400ms before confirming)\n await sleep(waitBeforeConfirming ?? 2000);\n try {\n const value = await confirmAndEnsureTransaction(connection, signature);\n if (value) {\n return signature;\n }\n } catch (e) {\n if (e instanceof TransactionFailedError) {\n throw e;\n }\n await sleep(500);\n }\n try {\n blockheight = await connection.getBlockHeight(commitment);\n } catch (_e) {\n await sleep(500);\n }\n }\n throw new Error(`Transaction ${signature} expired.`);\n}\n\nexport async function simulateTransaction(\n connection: Connection,\n tx: Transaction | VersionedTransaction,\n): Promise<RpcResponseAndContext<SimulatedTransactionResponse>> {\n let res: RpcResponseAndContext<SimulatedTransactionResponse>;\n for (let i = 0; i < SIMULATE_TRIES; i++) {\n if (isTransactionVersioned(tx)) {\n res = await connection.simulateTransaction(tx);\n } else {\n res = await connection.simulateTransaction(tx);\n }\n if (res.value.err) {\n const errMessage = JSON.stringify(res.value.err);\n if (!errMessage.includes(\"BlockhashNotFound\") || i === SIMULATE_TRIES - 1) {\n throw new SendTransactionError({\n action: \"simulate\",\n signature: \"\",\n transactionMessage: `failed to simulate transaction: ${\n typeof res.value.err === \"string\" ? res.value.err : errMessage\n }`,\n logs: res.value.logs ?? undefined,\n });\n }\n continue;\n }\n return res;\n }\n\n throw new SendTransactionError({\n action: \"simulate\",\n signature: \"\",\n transactionMessage: \"failed to simulate transaction\",\n });\n}\n\n/**\n * Confirms and validates transaction success once\n * @param connection - Solana client connection\n * @param signature - Transaction signature\n * @param ignoreError - return status even if tx failed\n * @returns Transaction Status\n */\nexport async function confirmAndEnsureTransaction(\n connection: Connection,\n signature: string,\n ignoreError?: boolean,\n): Promise<SignatureStatus | null> {\n const response = await connection.getSignatureStatuses([signature]);\n if (!response || response.value.length === 0 || response.value[0] === null) {\n return null;\n }\n const value = response.value[0];\n if (!value) {\n return null;\n }\n if (!ignoreError && value.err) {\n // That's how solana-web3js does it, `err` here is an object that won't really be handled\n throw new TransactionFailedError(`Raw transaction ${signature} failed (${JSON.stringify({ err: value.err })})`);\n }\n switch (connection.commitment) {\n case \"confirmed\":\n case \"single\":\n case \"singleGossip\": {\n if (value.confirmationStatus === \"processed\") {\n return null;\n }\n break;\n }\n case \"finalized\":\n case \"max\":\n case \"root\": {\n if (value.confirmationStatus === \"processed\" || value.confirmationStatus === \"confirmed\") {\n return null;\n }\n break;\n }\n // exhaust enums to ensure full coverage\n case \"processed\":\n case \"recent\":\n }\n return value;\n}\n\n/**\n * Shorthand call signature for getAssociatedTokenAddress, with allowance for address to be offCurve\n * @param {PublicKey} mint - SPL token Mint address.\n * @param {PublicKey} owner - Owner of the Associated Token Address\n * @param {PublicKey} programId - Program ID of the mint\n * @return {Promise<PublicKey>} - Associated Token Address\n */\nexport function ata(mint: PublicKey, owner: PublicKey, programId?: PublicKey): Promise<PublicKey> {\n return getAssociatedTokenAddress(mint, owner, true, programId);\n}\n\n/**\n * Function that checks whether ATA exists for each provided owner\n * @param connection - Solana client connection\n * @param paramsBatch - Array of Params for each ATA account: {mint, owner}\n * @returns Array of boolean where each member corresponds to an owner\n */\nexport async function ataBatchExist(connection: Connection, paramsBatch: AtaParams[]): Promise<boolean[]> {\n const tokenAccounts = await Promise.all(\n paramsBatch.map(async ({ mint, owner, programId }) => {\n return ata(mint, owner, programId);\n }),\n );\n const response = await connection.getMultipleAccountsInfo(tokenAccounts);\n return response.map((accInfo) => !!accInfo);\n}\n\nexport async function enrichAtaParams(connection: Connection, paramsBatch: AtaParams[]): Promise<AtaParams[]> {\n const programIdByMint: { [key: string]: PublicKey } = {};\n return Promise.all(\n paramsBatch.map(async (params) => {\n if (params.programId) {\n return params;\n }\n const mintStr = params.mint.toString();\n if (!(mintStr in programIdByMint)) {\n const { tokenProgramId } = await getMintAndProgram(connection, params.mint);\n programIdByMint[mintStr] = tokenProgramId;\n }\n params.programId = programIdByMint[mintStr];\n return params;\n }),\n );\n}\n\n/**\n * Generates a Transaction to create ATA for an array of owners\n * @param connection - Solana client connection\n * @param payer - Transaction invoker, should be a signer\n * @param paramsBatch - Array of Params for an each ATA account: {mint, owner}\n * @param commitment - optional commitment that will be used to fetch Blockhash\n * @returns Unsigned Transaction with create ATA instructions\n */\nexport async function generateCreateAtaBatchTx(\n connection: Connection,\n payer: PublicKey,\n paramsBatch: AtaParams[],\n commitment?: Commitment,\n): Promise<{\n tx: VersionedTransaction;\n hash: BlockhashWithExpiryBlockHeight;\n context: Context;\n}> {\n paramsBatch = await enrichAtaParams(connection, paramsBatch);\n const ixs: TransactionInstruction[] = await Promise.all(\n paramsBatch.map(async ({ mint, owner, programId }) => {\n return createAssociatedTokenAccountInstruction(payer, await ata(mint, owner), owner, mint, programId);\n }),\n );\n const { value: hash, context } = await connection.getLatestBlockhashAndContext({ commitment });\n return { tx: createVersionedTransaction(ixs, payer, hash.blockhash), hash, context };\n}\n\n/**\n * Creates ATA for an array of owners\n * @param connection - Solana client connection\n * @param invoker - Transaction invoker and payer\n * @param paramsBatch - Array of Params for an each ATA account: {mint, owner}\n * @param commitment - optional commitment that will be used to fetch Blockhash\n * @param rate - throttle rate for tx sending\n * @returns Transaction signature\n */\nexport async function createAtaBatch(\n connection: Connection,\n invoker: Keypair | SignerWalletAdapter,\n paramsBatch: AtaParams[],\n commitment?: Commitment,\n rate?: number,\n): Promise<string> {\n const { tx, hash, context } = await generateCreateAtaBatchTx(\n connection,\n invoker.publicKey!,\n await enrichAtaParams(connection, paramsBatch),\n commitment,\n );\n return signAndExecuteTransaction(connection, invoker, tx, { hash, context, commitment }, { sendRate: rate });\n}\n\n/**\n * Utility function that checks whether associated token accounts exist and return instructions to populate them if not\n * @param connection - Solana client connection\n * @param owners - Array of ATA owners\n * @param mint - Mint for which ATA will be checked\n * @param invoker - Transaction invoker and payer\n * @param programId - Program ID of the Mint\n * @param payer - optional payer account, will be used instead of invoker as `source`\n * @returns Array of Transaction Instructions that should be added to a transaction\n */\nexport async function checkOrCreateAtaBatch(\n connection: Connection,\n owners: PublicKey[],\n mint: PublicKey,\n invoker: { publicKey: PublicKey | null },\n programId?: PublicKey,\n payer?: PublicKey,\n): Promise<TransactionInstruction[]> {\n assertHasPublicKey(invoker, \"Invoker's PublicKey is not available, check passed wallet adapter!\");\n const ixs: TransactionInstruction[] = [];\n if (!programId) {\n programId = (await getMintAndProgram(connection, mint)).tokenProgramId;\n }\n // TODO: optimize fetching and maps/arrays\n const atas: PublicKey[] = [];\n for (const owner of owners) {\n atas.push(await ata(mint, owner, programId));\n }\n const response = await connection.getMultipleAccountsInfo(atas);\n for (let i = 0; i < response.length; i++) {\n if (!response[i]) {\n ixs.push(\n createAssociatedTokenAccountInstruction(payer ?? invoker.publicKey, atas[i]!, owners[i]!, mint, programId),\n );\n }\n }\n return ixs;\n}\n\n/**\n * Create Base instructions for Solana\n * - sets compute price if `computePrice` is provided. If `computePrice` is a function, it will be ignored (the value must be resolved before calling this function).\n * - sets compute limit if `computeLimit` is provided. If `computeLimit` is a function, it will be ignored (the value must be resolved before calling this function).\n */\nexport function prepareBaseInstructions(\n connection: Connection,\n { computePrice, computeLimit }: ITransactionExt,\n): TransactionInstruction[] {\n const ixs: TransactionInstruction[] = [];\n\n if (computePrice && typeof computePrice !== \"function\") {\n ixs.push(ComputeBudgetProgram.setComputeUnitPrice({ microLamports: computePrice }));\n }\n if (computeLimit && typeof computeLimit === \"number\") {\n ixs.push(ComputeBudgetProgram.setComputeUnitLimit({ units: computeLimit }));\n }\n\n return ixs;\n}\n\n/**\n * Retrieve information about a mint and its program ID, supports all Token Programs.\n *\n * @param connection Connection to use\n * @param address Mint account\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Mint information\n */\nexport async function getMintAndProgram(\n connection: Connection,\n address: PublicKey,\n commitment?: Commitment,\n): Promise<{ mint: Mint; tokenProgramId: PublicKey }> {\n const accountInfo = await connection.getAccountInfo(address, commitment);\n let programId = accountInfo?.owner;\n if (!programId?.equals(TOKEN_PROGRAM_ID) && !programId?.equals(TOKEN_2022_PROGRAM_ID)) {\n programId = TOKEN_PROGRAM_ID;\n }\n return {\n mint: unpackMint(address, accountInfo, programId),\n tokenProgramId: programId!,\n };\n}\n\n/**\n * Split fetching of Multiple Accounts Info into batches of 100\n * as the maximum number of accounts that can be fetched in a single call is 100\n *\n * @param connection Connection to use\n * @param pubKeys Array of public keys to fetch account info for\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Array of AccountInfo objects\n */\nexport async function getMultipleAccountsInfoBatched(\n connection: Connection,\n pubKeys: PublicKey[],\n commitment?: Commitment,\n): Promise<(AccountInfo<Buffer> | null)[]> {\n const batchSize = 99;\n const batches: Promise<(AccountInfo<Buffer> | null)[]>[] = [];\n\n for (let i = 0; i < pubKeys.length; i += batchSize) {\n const batch = pubKeys.slice(i, i + batchSize);\n batches.push(connection.getMultipleAccountsInfo(batch, commitment));\n }\n\n const results = await Promise.all(batches);\n return results.flat();\n}\n\n/**\n * Build a partner oracle program without a wallet, just to fetch accounts.\n */\nexport function buildPartnerOracle(connection: Connection): Program<PartnerOracle> {\n return new Program(PartnerOracleIDL, { connection });\n}\n","import { Transaction, VersionedTransaction, type PublicKey } from \"@solana/web3.js\";\nimport { Buffer } from \"buffer\";\n\ninterface TransactionAccountsProvider {\n accountKeys: PublicKey[];\n}\n\nexport function deserializeRawTransaction(serializedTx: string) {\n const txBuffer = Buffer.from(serializedTx, \"base64\");\n try {\n const tx = Transaction.from(txBuffer);\n return resolveTransactionAccounts(tx);\n } catch (error) {\n try {\n const vtx = VersionedTransaction.deserialize(txBuffer);\n return resolveTransactionAccounts(vtx);\n } catch (vError) {\n throw new Error(\"Failed to deserialize transaction: \" + (vError instanceof Error ? vError.message : vError), {\n cause: vError,\n });\n }\n }\n}\n\nexport const resolveTransactionAccounts = (tx: VersionedTransaction | Transaction) => {\n if (tx instanceof Transaction) {\n const message = tx.compileMessage();\n const accounts = message.accountKeys;\n const writableAccounts = accounts.filter((_, idx) => message.isAccountWritable(idx));\n return {\n type: \"legacy\",\n transaction: tx,\n accounts,\n writableAccounts,\n };\n }\n\n const message = tx.message;\n const accounts =\n \"staticAccountKeys\" in message\n ? message.staticAccountKeys\n : (message as unknown as TransactionAccountsProvider).accountKeys;\n\n const writableAccounts = accounts.filter((_, idx) => message.isAccountWritable(idx));\n return {\n type: \"versioned\",\n transaction: tx,\n accounts,\n writableAccounts,\n };\n};\n","import { PublicKey } from \"@solana/web3.js\";\n\n/**\n * Converts a string or PublicKey to a PublicKey object.\n * @param address - The input address as a string or PublicKey.\n * @returns The PublicKey object.\n */\nexport const pk = (address: string | PublicKey): PublicKey => {\n return typeof address === \"string\" ? new PublicKey(address) : address;\n};\n","import type { TransactionInstruction } from \"@solana/web3.js\";\n\nimport { invariant } from \"../../lib/assertions.js\";\nimport type { ComputePriceEstimate, IInteractExt, ITransactionExtResolved } from \"../types.js\";\nimport { createVersionedTransaction } from \"../utils.js\";\nimport { pk } from \"./public-key.js\";\nimport { resolveTransactionAccounts } from \"./deserialize-raw-transaction.js\";\n\nconst createTestTransaction = (\n ixs: Parameters<typeof createVersionedTransaction>[0],\n payer: Parameters<typeof createVersionedTransaction>[1],\n recentBlockhash?: Parameters<typeof createVersionedTransaction>[2],\n partialSigners?: Parameters<typeof createVersionedTransaction>[3],\n) => {\n return createVersionedTransaction(ixs, payer, recentBlockhash ?? \"11111111111111111111111111111111\", partialSigners);\n};\n\nexport async function estimateComputeUnitPrice(\n estimate: ComputePriceEstimate,\n testTx: ReturnType<typeof createTestTransaction>,\n): Promise<number> {\n return estimate(resolveTransactionAccounts(testTx).writableAccounts);\n}\n\nexport async function createAndEstimateTransaction<\n ParamsT extends ITransactionExtResolved<IInteractExt>,\n CreateFn extends (extParams: ParamsT) => Promise<TransactionInstruction[]>,\n>(createFn: CreateFn, extParams: ParamsT): Promise<Awaited<ReturnType<CreateFn>>>;\n\nexport async function createAndEstimateTransaction<\n ParamsT extends ITransactionExtResolved<IInteractExt>,\n CreateFn extends (extParams: ParamsT) => Promise<any>,\n>(\n createFn: CreateFn,\n extParams: ParamsT,\n select: (result: Awaited<ReturnType<CreateFn>>) => TransactionInstruction[]\n): Promise<Awaited<ReturnType<CreateFn>>>;\n\nexport async function createAndEstimateTransaction<\n ParamsT extends ITransactionExtResolved<IInteractExt>,\n CreateFn extends (extParams: ParamsT) => Promise<any>,\n>(\n createFn: CreateFn,\n extParams: ParamsT,\n select?: (result: Awaited<ReturnType<CreateFn>>) => TransactionInstruction[],\n): Promise<Awaited<ReturnType<CreateFn>>> {\n select = select ?? ((value: Awaited<ReturnType<CreateFn>>) => value);\n const createResult = await createFn(extParams);\n const prepareIxs = select(createResult);\n\n const { computePrice, computeLimit } = extParams;\n const invoker = extParams.invoker.publicKey;\n invariant(invoker, \"Invoker's PublicKey is not available, check passed wallet adapter!\");\n const testTx = createTestTransaction(prepareIxs, pk(invoker), undefined, undefined);\n const estimatedComputeLimit = typeof computeLimit === \"function\" ? await computeLimit(testTx) : computeLimit;\n\n if (typeof computePrice !== \"function\") {\n if (typeof computeLimit !== \"function\") {\n return createResult;\n }\n\n return createFn({\n ...extParams,\n computeLimit: estimatedComputeLimit,\n });\n }\n\n const estimatedComputeUnitPrice =\n typeof computePrice === \"function\"\n ? await estimateComputeUnitPrice(computePrice, testTx)\n : // unachievable because we don't execute estimation for constant or undefined priority fee\n computePrice;\n\n return createFn({\n ...extParams,\n computePrice: estimatedComputeUnitPrice,\n computeLimit: estimatedComputeLimit,\n });\n}\n","import type { VersionedTransaction, Connection } from \"@solana/web3.js\";\n\nimport type { GetConsumeLimitEstimateOptions } from \"../types.js\";\n\n/**\n * Estimate the consume limit of a transaction based on the simulation results of the transaction.\n * @param connection - The connection to the RPC\n * @param tx - The transaction to estimate the consume limit for\n * @param options - The options for the estimate\n * @returns The consume limit estimate multiplied by a multiplier percent or undefined and the native simulation results\n */\nexport const estimateConsumeLimit = async (\n connection: Connection,\n tx: VersionedTransaction,\n options: GetConsumeLimitEstimateOptions = {},\n) => {\n const { increaseFactor = 0.05 } = options;\n const simulationResults = await connection.simulateTransaction(tx, {\n sigVerify: false,\n replaceRecentBlockhash: true,\n });\n return {\n unitsConsumed: simulationResults.value.unitsConsumed\n ? Math.ceil(simulationResults.value.unitsConsumed * (1 + increaseFactor))\n : simulationResults.value.unitsConsumed,\n data: simulationResults,\n };\n};\n","import type { Connection, VersionedTransaction } from \"@solana/web3.js\";\n\nimport type { IInteractExt, ITransactionExtResolved, ComputeLimitEstimate } from \"../types.js\";\nimport { estimateConsumeLimit } from \"../rpc/consume-limit-estimate/estimate.js\";\n\ntype UnwrapAutoSimulate<T extends IInteractExt = IInteractExt> = Omit<T, \"computeLimit\"> & {\n skipSimulation: boolean;\n computeLimit?: ITransactionExtResolved[\"computeLimit\"];\n};\nexport const unwrapExecutionParams = <T extends IInteractExt>(\n { computeLimit, ...rest }: T,\n connection: Connection,\n): UnwrapAutoSimulate<T> => {\n const consumeLimitFn: T[\"computeLimit\"] =\n computeLimit === \"autoSimulate\"\n ? (((tx: VersionedTransaction) =>\n estimateConsumeLimit(connection, tx).then((limit) => limit.unitsConsumed ?? 0)) as ComputeLimitEstimate)\n : computeLimit;\n\n return { ...rest, computeLimit: consumeLimitFn, skipSimulation: computeLimit === \"autoSimulate\" };\n};\n","import { ICluster } from \"../solana/types.js\";\n\nexport type TokensPricesResponse = {\n data: Record<string, TokenPriceResult>;\n};\n\nexport type TokenPriceResult = { id: string; value: number | undefined };\n\nexport interface FetchTokenPriceOptions {\n fetchImpl?: typeof fetch;\n timeoutMs?: number;\n}\n\nexport const fetchTokenPrice = async (\n mintId: string,\n cluster: ICluster = ICluster.Mainnet,\n options?: FetchTokenPriceOptions,\n): Promise<TokenPriceResult> => {\n const url = `https://token-api.streamflow.finance/price?ids=${encodeURIComponent(mintId)}&cluster=${encodeURIComponent(cluster)}`;\n\n const impl = options?.fetchImpl ?? fetch;\n const controller = new AbortController();\n const timeout = options?.timeoutMs\n ? setTimeout(() => controller.abort(), options.timeoutMs)\n : undefined;\n\n try {\n const res = await impl(url, {\n headers: { \"Content-Type\": \"application/json\" },\n signal: controller.signal,\n });\n if (!res.ok) {\n throw new Error(`Price API error: ${res.status} ${res.statusText}`);\n }\n const json = (await res.json()) as TokensPricesResponse;\n const entry = json?.data?.[mintId];\n return { id: mintId, value: typeof entry?.value === \"number\" ? entry.value : undefined };\n } finally {\n if (timeout) clearTimeout(timeout);\n }\n};"]}