feathers-ucan 0.1.41 → 0.1.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/env/version.d.ts +1 -1
- package/lib/index.cjs +1 -0
- package/lib/index.cjs.map +1 -1
- package/lib/index.modern.js +1 -0
- package/lib/index.modern.js.map +1 -1
- package/lib/index.umd.js +1 -0
- package/lib/index.umd.js.map +1 -1
- package/package.json +1 -1
package/lib/env/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "0.1.
|
|
1
|
+
export declare const VERSION = "0.1.42";
|
package/lib/index.cjs
CHANGED
|
@@ -979,6 +979,7 @@ const checkUcan = (requiredCapabilities, options) => {
|
|
|
979
979
|
/** function for comparing record login id with context login*/
|
|
980
980
|
const checkLogin = (recordLoginPassId, loginIdPath = '_id') => {
|
|
981
981
|
const loginCheckId = symbolUcan._get(context.params, `${configuration.entity}.${loginIdPath}`);
|
|
982
|
+
if (options != null && options.log) console.log('checkLoginPass', loginCheckId, recordLoginPassId);
|
|
982
983
|
/**Make sure both are present to avoid pass on undefined*/
|
|
983
984
|
if (loginCheckId && recordLoginPassId) {
|
|
984
985
|
/** change login path result to array no matter what */
|
package/lib/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/auth-service/ucan-strategy.ts","../src/auth-service/index.ts","../src/core/methods.ts","../src/utils/log-ucan-params.ts","../src/utils/check-exists.ts","../src/hooks/ucan-auth.ts","../src/hooks/update-ucan.ts"],"sourcesContent":["import {IncomingMessage} from 'http';\nimport {\n AuthenticationBase,\n AuthenticationBaseStrategy,\n AuthenticationRequest,\n AuthenticationResult,\n ConnectionEvent\n} from '@feathersjs/authentication';\n// @ts-ignore\nimport lt from 'long-timeout';\nimport {_get, _unset, ucanToken, validateUcan} from 'symbol-ucan';\n\nexport class NotAuthError extends Error {\n constructor(message?: string) {\n super(message)\n }\n}\nconst SPLIT_HEADER = /(\\S+)\\s+(\\S+)/;\n\ntype AnyObj = { [key: string]: any };\n\nexport class UcanStrategy extends AuthenticationBaseStrategy {\n expirationTimers = new WeakMap();\n\n setAuthentication(auth: AuthenticationBase) {\n // console.log('set authentication', auth);\n auth.verifyAccessToken = (accessToken: string) => {\n return {} as any;\n };\n super.setAuthentication(auth);\n }\n\n get configuration() {\n const authConfig = this.authentication?.configuration || {\n service: undefined,\n entity: undefined,\n entityId: undefined\n };\n const config = super.configuration;\n\n return {\n service: authConfig.service,\n entity: authConfig.entity,\n entityId: authConfig.entityId,\n // propagate core_path so hooks/strategies can share the same namespace\n core_path: (this.authentication?.configuration as any)?.core_path || (authConfig as any)?.core_path,\n header: 'Authorization',\n schemes: ['Bearer', 'JWT'],\n ...config\n };\n }\n\n async handleConnection(event: ConnectionEvent, connection: any, authResult?: AuthenticationResult) {\n const isValidLogout = event === 'logout' && connection.authentication && authResult &&\n connection.authentication.accessToken === authResult.accessToken;\n\n const {accessToken, entity} = authResult || {};\n\n if (accessToken && event === 'login') {\n const validUcan = await validateUcan(accessToken)\n .catch(err => {\n console.log('Could not validate ucan in connection: ', err.message);\n const errObj = {\n code: 0,\n message: 'Unknown Issue Validating Ucan'\n };\n if (err.message.indexOf('Expired.') > -1) {\n errObj.code = 1;\n errObj.message = 'Expired Ucan'\n }\n throw new Error(errObj.message);\n });\n const {payload: {exp}} = validUcan || {payload: {exp: 0}}\n // The time (in ms) until the token expires\n const duration = (exp * 1000) - Date.now();\n // This may have to be a `logout` event but right now we don't want\n // the whole context object lingering around until the timer is gone\n const timer = lt.setTimeout(() => (this.app as any).emit('disconnect', connection), duration);\n\n lt.clearTimeout(this.expirationTimers.get(connection));\n this.expirationTimers.set(connection, timer);\n\n connection.authentication = {\n strategy: this.name,\n accessToken\n };\n } else if (event === 'disconnect' || isValidLogout) {\n const {entity} = this.configuration;\n\n delete connection[entity];\n delete connection.authentication;\n\n lt.clearTimeout(this.expirationTimers.get(connection));\n this.expirationTimers.delete(connection);\n }\n }\n\n verifyConfiguration() {\n // Allow strategy configuration keys that this package supports. We recently\n // started propagating `core_path` from the app's authentication config, so\n // it must be considered valid here to avoid startup errors.\n const allowedKeys = ['entity', 'entityId', 'service', 'header', 'schemes', 'audience', 'core_path'];\n\n for (const key of Object.keys(this.configuration)) {\n if (!allowedKeys.includes(key)) {\n throw new Error(`Invalid ucanStrategy option 'authentication.${this.name}.${key}'. Did you mean to set it in 'authentication.jwtOptions'?`);\n }\n }\n\n if (typeof this.configuration.header !== 'string') {\n throw new Error(`The 'header' option for the ${this.name} strategy must be a string`);\n }\n }\n\n // eslint-disable-next-line no-unused-vars\n async getEntityQuery(_params: any) {\n return {};\n }\n\n /**\n * Return the entity for a given id\n * @param id The id to use\n * @param params Service call parameters\n */\n async getEntity(id: string, params: any) {\n const entityService = this.entityService;\n const {entity} = this.configuration;\n\n if (entityService === null) {\n throw new NotAuthError('Could not find entity service');\n }\n\n const query = await this.getEntityQuery(params);\n const getParams = Object.assign({}, _unset(params, 'provider'), {query});\n const result = await entityService.get(id, getParams);\n\n if (!params.provider) {\n return result;\n }\n\n return entityService.get(id, {...params, [entity]: result});\n }\n\n async getEntityId(authResult: AuthenticationResult, _params: AnyObj) {\n let {query, loginId} = _params;\n if (loginId) return loginId;\n else {\n const {service, core_path = 'core'} = this.configuration;\n const pms = {\n query: {...query, $limit: 1},\n [core_path]: {skipJoins: true, ..._params[core_path]}\n }\n // Diagnostics to help understand why a login may not be found\n if (_params?.log) {\n try {\n console.log('[UCAN DIAG] strategy:getEntityId', {\n service,\n core_path,\n query: pms.query,\n provider: _params.provider,\n paramsKeys: Object.keys(_params || {}).slice(0, 20)\n });\n } catch {}\n }\n const entities = await this.app?.service(service).find({...pms, skipJoins: true, skip_hooks: true, admin_pass: true} as any);\n // Support both paginated and non-paginated service responses\n // - Paginated: { total, limit, skip, data: [...] }\n // - Non-paginated: Array\n let first: any = undefined;\n if (entities && typeof entities === 'object' && 'data' in entities) {\n first = (entities as any).data?.[0];\n } else if (Array.isArray(entities)) {\n first = entities[0];\n }\n if (first && first._id) return first._id;\n throw new NotAuthError('Could not find login associated with this ucan');\n }\n }\n\n async authenticate(authentication: AuthenticationRequest, params: AnyObj) {\n let {accessToken, loginId, ucan} = authentication;\n const {entity, core_path} = this.configuration;\n if (!accessToken) {\n\n if (ucan) accessToken = ucanToken(ucan);\n else throw new NotAuthError('Missing UCAN access token');\n // } else throw new NotAuthenticated('No access token');\n }\n\n // Guard: prevent passing null/invalid tokens to validateUcan\n const tokenStr = String(accessToken || '').trim();\n const dotCount = (tokenStr.match(/\\./g) || []).length;\n if (!tokenStr || tokenStr === 'null' || tokenStr === 'undefined' || dotCount !== 2) {\n throw new NotAuthError('Invalid or missing UCAN in Authorization header or request payload');\n }\n //\n // await verifyUcan(accessToken, {audience: ucan_audience || params.ucan_aud, requiredCapabilities})\n // .catch(err => {\n // console.error('error verifying ucan', err);\n // throw new NotAuthenticated('Could not verify ucan: ' + err.message);\n // });\n\n const decodedUcan = await validateUcan(accessToken)\n .catch(err => {\n console.log('Could not validate ucan during authentication: ', err.message);\n const errObj = {\n code: 0,\n message: 'Unknown Issue Validating Ucan'\n };\n if (err.message.indexOf('Expired.') > -1) {\n errObj.code = 1;\n errObj.message = 'Expired Ucan'\n }\n throw new Error(errObj.message);\n });\n\n if (params?.log) {\n try {\n console.log('[UCAN DIAG] strategy:authenticate', {\n entity,\n core_path,\n aud: decodedUcan?.payload?.aud,\n hasParamsEntity: !!_get(params, [core_path, entity]),\n provider: params.provider\n });\n } catch {}\n }\n\n const result = {\n accessToken,\n authentication: {\n strategy: 'jwt',\n accessToken\n }\n };\n\n if (entity === null) {\n return result;\n }\n\n let value;\n const coreEntity = _get(params, [core_path, entity]);\n if (!coreEntity) {\n // Determine which field to query by (configurable) and which audience to use\n const idField = (this.configuration as any)?.entityId || 'did';\n const audience = _get(params, [core_path, 'ucan_aud']) || decodedUcan?.payload?.aud;\n if (params?.log) {\n try {\n console.log('[UCAN DIAG] strategy:entity-lookup', {\n idField,\n audience,\n usedCoreAud: !!_get(params, [core_path, 'ucan_aud'])\n });\n } catch {}\n }\n const entityId = await this.getEntityId(result, {\n ...params,\n loginId,\n query: {[idField]: audience}\n });\n value = await this.getEntity(entityId, params);\n } else value = coreEntity;\n return {\n ...result,\n [entity]: value\n };\n\n }\n\n async parse(req: IncomingMessage) {\n const {header, schemes} = this.configuration;\n const headerValue = req.headers && req.headers[header.toLowerCase()];\n\n if (!headerValue || typeof headerValue !== 'string') {\n return null;\n }\n\n const [, scheme, schemeValue] = headerValue.match(SPLIT_HEADER) || [];\n const hasScheme = scheme && schemes.some(\n (current: any) => new RegExp(current, 'i').test(scheme)\n );\n\n if (scheme && !hasScheme) {\n return null;\n }\n\n const raw = hasScheme ? schemeValue : (headerValue as string);\n const token = typeof raw === 'string' ? raw.trim() : raw;\n // If clients accidentally send \"Bearer null\"/\"Bearer undefined\" or empty, ignore this strategy\n if (!token || token === 'null' || token === 'undefined') {\n return null;\n }\n return {\n strategy: this.name,\n accessToken: token\n };\n }\n}\n\n\n","import {_get, buildUcan, encodeKeyPair, parseUcan, ucanToken, validateUcan} from 'symbol-ucan';\nimport {AuthenticationParams, AuthenticationRequest, AuthenticationService} from '@feathersjs/authentication';\nimport {NullableId} from '../core';\n\ntype AnyObj = any\n\nexport class NotAuthError extends Error {\n constructor(message?: string) {\n super(message)\n }\n}\nexport type AuthServiceOptions = {\n NotAuthenticated?: any\n}\nexport * from './ucan-strategy';\n\nexport class AuthService extends AuthenticationService {\n options: AuthServiceOptions\n constructor(app: any, configKey = 'authentication', opts:AnyObj&AuthServiceOptions = {}) {\n const { NotAuthenticated, ...rest } = opts\n super(app, configKey, rest)\n this.app = app;\n this.options = { NotAuthenticated }\n };\n\n async create(data: AuthenticationRequest, params?: AuthenticationParams) {\n const NotAuth = this.options?.NotAuthenticated || NotAuthError;\n\n const {entity, service, ucan_path = 'ucan'} = this.app.get('authentication');\n\n const authStrategies = params?.authStrategies || this.configuration.authStrategies\n\n if (!params) params = {}\n\n if (!authStrategies.length) {\n throw new NotAuth('No authentication strategies allowed for creating a JWT (`authStrategies`)')\n }\n\n const authResult = await this.authenticate(data, params, ...authStrategies)\n .catch((err: any) => {\n throw new Error(err.message)\n })\n\n if (authResult.accessToken) {\n return authResult\n }\n const did = data.did || _get(authResult, [entity, 'did']);\n let ucan = data.ucan || _get(authResult, [entity, 'ucan']);\n\n if (!did) throw new Error('No did audience provided');\n if (!ucan) throw new Error('No ucan provided to authentication call');\n // const {secret} = this.configuration;\n\n const validatedUcan = await validateUcan(ucan)\n .catch(err => {\n console.log('Could not validate ucan creating authentication: ', err.message);\n const errObj = {\n code: 0,\n message: 'Unknown Issue Validating Ucan'\n };\n if (err.message.indexOf('Expired.') > -1) {\n errObj.code = 1;\n errObj.message = 'Expired Ucan'\n }\n console.warn('Could not validate ucan creating authentication', ucan, errObj.message);\n return null;\n });\n if (!validatedUcan) {\n const parsed = parseUcan(ucan);\n let {secret} = this.app.get('authentication');\n\n const issuer = encodeKeyPair({secretKey: secret});\n ucan = await buildUcan({\n audience: parsed.payload.aud,\n issuer,\n lifetimeInSeconds: 60 * 60 * 24 * 60,\n capabilities: parsed.payload.att\n })\n params.admin_pass = true;\n await this.app.service(service).patch(_get(authResult, [entity, '_id']) as NullableId, {[ucan_path]: ucanToken(ucan)}, {...params})\n }\n\n\n const accessToken = ucanToken(ucan);\n\n return {\n accessToken,\n ...authResult,\n authentication: {\n ...authResult.authentication,\n payload: accessToken\n }\n }\n }\n}\n\n","type AnyObj = any\n\nexport type Id = number | string\nexport type NullableId = Id | null\n\nexport type CallFindResult<T = AnyObj> = {\n total:number,\n limit: number,\n skip:number,\n data: Array<T>\n}\nexport type AnyParams = Iterable<AnyObj>\n\ndeclare type CoreOpts = {\n skipJoins?: boolean,\n admin_pass?: boolean\n}\nexport class CoreCall {\n context:any;\n service:string;\n core:AnyObj;\n entity:string;\n constructor(service:string, context:any, coreOptions?:CoreOpts){\n this.service = service\n this.context = context\n const entity = (context.app.get('authentication') || { entity: 'login' }).entity || 'login';\n this.entity = entity;\n const core = context.params?.core || {};\n if(!core[entity]) core[entity] = context.params[entity];\n this.core = { ...core, ...coreOptions }\n }\n\n async get(id:NullableId, params:AnyObj = {}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service).get(id, {...params, [this.entity]: params[this.entity], ...{ [core_path]: this.core }})\n }\n async find (params:AnyObj = {}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service).find({...params as AnyParams, [this.entity]: params[this.entity], admin_pass:true, ...{ [core_path]: this.core }})\n }\n async create (data:AnyObj, params:AnyObj = {}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service).create(data, {...params, [this.entity]: params[this.entity], ...{ [core_path]: this.core }})\n }\n async patch (id:NullableId, data:AnyObj, params:AnyObj = {}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service).patch(id, data, {...params, [this.entity]: params[this.entity], ...{ [core_path]: this.core }})\n }\n async update (id:NullableId, data:AnyObj, params:AnyObj = {}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service).update(id, data, {...params, [this.entity]: params[this.entity], ...{ [core_path]: this.core }})\n }\n async remove (id:NullableId, params:AnyObj = {}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service).remove(id, {...params, [this.entity]: params[this.entity], ...{ [core_path]: this.core }})\n }\n\n async _get(id:NullableId, params:AnyObj = {}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service)._get(id, {...params, [this.entity]: params[this.entity], skip_hooks: true, ...{ [core_path]: this.core }})\n }\n async _find (params:AnyObj = {}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service)._find({...params as AnyParams, [this.entity]: params[this.entity], skip_hooks: true, ...{ [core_path]: this.core }})\n }\n async _create (data:AnyObj, params:AnyObj ={}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service)._create(data, {...params, [this.entity]: params[this.entity], skip_hooks: true, ...{ [core_path]: this.core }})\n }\n async _patch (id:NullableId, data:AnyObj, params:AnyObj ={}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service)._patch(id, data, {...params, [this.entity]: params[this.entity], skip_hooks: true, ...{ [core_path]: this.core }})\n }\n async _update (id:NullableId, data:AnyObj, params:AnyObj ={}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service)._update(id, data, {...params, [this.entity]: params[this.entity], skip_hooks: true, ...{ [core_path]: this.core }})\n }\n async _remove (id:NullableId, params:AnyObj ={}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service)._remove(id, {...params, [this.entity]: params[this.entity], skip_hooks: true, ...{ [core_path]: this.core }})\n }\n\n}\n\n","// Utility: UCAN diagnostics logger for use around ucanAuth/allUcanAuth\n// Minimal helper to understand what values are present at verify time.\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const logUcanParams = (label: string, context: any): void => {\n const authConfig = context.app?.get?.('authentication') || {};\n const corePath = authConfig.core_path || 'core';\n const entityKey = authConfig.entity || 'login';\n const clientUcanPath = authConfig.client_ucan || 'core.client_ucan';\n const audPath = authConfig.ucan_aud || 'core.ucan_aud';\n\n const _get = (obj: any, path: string) =>\n String(path || '')\n .split('.')\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .reduce((o: any, k: string) => (o ? o[k] : undefined), obj);\n\n const safePreview = (v: unknown) => {\n if (typeof v === 'string') return v.slice(0, 48) + (v.length > 48 ? '…' : '');\n if (v && typeof v === 'object') return `[object ${(v as any).constructor?.name || 'Object'}]`;\n try { return String(v); } catch { return '[unprintable]'; }\n };\n\n const token = _get(context.params, clientUcanPath);\n const audience = _get(context.params, audPath);\n const entityVal = context.params?.[entityKey];\n const core = context.params?.[corePath];\n\n const tokenType = typeof token;\n const dotCount = typeof token === 'string' ? (token.match(/\\./g) || []).length : -1;\n let parsedOk: boolean | undefined = undefined;\n try {\n // optional dependency at runtime; only used for diagnostics\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { parseUcan } = require('symbol-ucan');\n const parsed = typeof token === 'string' ? parseUcan(token) : null;\n parsedOk = !!parsed && !!parsed?.payload;\n } catch {\n parsedOk = undefined;\n }\n\n // eslint-disable-next-line no-console\n console.log('[UCAN DIAG]', label, {\n clientUcanPath,\n audPath,\n tokenType,\n tokenPreview: safePreview(token),\n dotCount, // should be 2 for a compact JWS UCAN\n parsedOk, // true if parseUcan(token) yielded a payload\n audienceType: typeof audience,\n audiencePreview: safePreview(audience),\n entityKey,\n entityType: entityVal ? entityVal.constructor?.name || typeof entityVal : typeof entityVal,\n entityHasId: !!(entityVal && (entityVal._id || entityVal.id)),\n coreType: core ? core.constructor?.name || typeof core : typeof core,\n coreKeys: core && typeof core === 'object' ? Object.keys(core).slice(0, 10) : core,\n });\n};\n\nexport default logUcanParams;\n","import {_get, _set} from 'symbol-ucan';\nimport {HookContext} from '../types';\nimport {CoreCall} from '../core';\n\ntype AnyObj = any\n\nexport const existsPath = '_exists';\n\nexport const getExists = (context:Partial<HookContext>):any => {\n const path = context.app.get('existsPath') || existsPath;\n return _get(context.params, `core.${path}.${context.path}.${context.id}`) || undefined;\n}\n\nexport const loadExists = async (context:HookContext, options?:{ skipJoins?: boolean, params?: AnyObj, skip_hooks?:any }):Promise<any> => {\n let ex = getExists(context);\n if(!ex && context.id) {\n ex = await new CoreCall(context.path, context, { skipJoins: options?.skipJoins !== false }).get(context.id, { exists_check: true, admin_pass: true, skip_hooks: !!options?.skip_hooks, ...options?.params || {} })\n }\n return ex;\n}\n\nexport const setExists = (context:HookContext, val:any):HookContext => {\n const path = context.app.get('existsPath') || existsPath;\n context.params = _set(context.params, `core.${path}.${context.path}.${val?._id || context.id}`, val)\n return context;\n};\n","import {HookContext} from '../types';\nimport {authenticate} from '@feathersjs/authentication';\nimport {\n _get,\n _set,\n Capability,\n encodeKeyPair,\n genCapability,\n parseUcan,\n ucanToken,\n VerifyOptions,\n verifyUcan\n} from 'symbol-ucan';\nimport {logUcanParams} from '../utils/log-ucan-params';\nimport {NotAuthenticated} from '@feathersjs/errors';\nimport {loadExists, setExists} from '../utils';\nimport {CoreCall} from '../core';\n\ntype AnyObj = any\n\nconst SUPERUSER = '*'\n\nexport type UcanAuthConfig = {\n entity: string,\n service: string,\n client_ucan: string,\n ucan_aud: string,\n ucan_path: string,\n core_path: string,\n defaultHierPart: string,\n defaultScheme: string\n}\n\ntype AuthConfig = {\n [key: string]: string\n}\n\ntype AnyAuth = '*'\nexport const anyAuth: AnyAuth = '*' as AnyAuth;\ntype NoThrow = '$'\nexport const noThrow: NoThrow = '$' as NoThrow;\n\n\nexport type CapabilityParts = Partial<Capability> | [string, Array<string> | string];\n\nexport declare type LoginPassOption =\n [Array<string>, Array<string> | '*']\n | [Array<string>, Array<string> | '*', Array<string>];\nexport declare type UcanAuthOptions = {\n creatorPass?: '*' | Array<string>,\n loginPass?: Array<LoginPassOption>,\n or?: '*' | Array<string>\n adminPass?: Array<string>,\n noThrow?: boolean,\n log?: boolean,\n existingParams?: AnyObj,\n specialChange?: Array<string> | AnyAuth,\n cap_subjects?: Array<string>,\n special_params?: Record<string, any>, //Pass any params\n audience?: string\n}\ntype RequiredCapability = { capability: Capability, rootIssuer: string }\nexport type UcanCap = Array<CapabilityParts> | AnyAuth | NoThrow;\nexport type UcanAllArgs = {\n all?: UcanCap,\n get?: UcanCap,\n find?: UcanCap,\n create?: UcanCap,\n patch?: UcanCap,\n update?: UcanCap,\n remove?: UcanCap\n};\n\ntype VerifyOne = { ucan: string } & VerifyOptions;\n\ntype Auth = <S>(method: string) => (context: HookContext<S>) => Promise<HookContext<S>>\ntype Config = { entity: string, service: string, defaultScheme: string, defaultHierPart: string };\ntype VerifyRes = { ok: boolean, value?: Array<any>, err?: Array<any> };\n\nexport const noThrowAuth = async <S>(context: HookContext<S>): Promise<HookContext<S>> => {\n const config = context.app.get('authentication') as AuthConfig;\n const entity = _get(context, ['auth', config.entity]);\n if (entity) {\n context = _set(context, [config.core_path, config.entity], entity)\n }\n try {\n // Must pass explicit strategy per app requirements\n context = await authenticate('jwt')(context as any)\n .catch(() => {\n return context;\n })\n } catch (e) {\n return context;\n }\n return context;\n}\n\nexport const bareAuth = async <S>(context: HookContext<S>): Promise<HookContext<S>> => {\n const config = context.app.get('authentication') as AuthConfig;\n const entity = _get(context, ['auth', config.entity]);\n if (entity) context = _set(context, [config.core_path, config.entity], entity)\n // Must pass explicit strategy per app requirements\n return authenticate('jwt')(context as any);\n}\n\nconst verifyOne = async (ucan: string, options: VerifyOptions, log?: boolean) => {\n try {\n // Normalize UCAN input and guard against missing tokens\n let normalizedUcan: string | undefined = ucan as any;\n if (!normalizedUcan) {\n try {\n // ucanToken can stringify object-form UCANs; may throw if invalid\n normalizedUcan = ucanToken(ucan as any) as any;\n } catch (e) {\n normalizedUcan = undefined;\n }\n }\n if (!normalizedUcan || typeof normalizedUcan !== 'string' || normalizedUcan.trim() === '') {\n return {ok: false, err: ['Missing or invalid UCAN token']};\n }\n\n let v = await verifyUcan(normalizedUcan, options);\n if (!v?.ok && options.requiredCapabilities) {\n // Retry by widening segments to '*' for non-superuser namespaces, without mutating original reqs\n const newCapabilities = options.requiredCapabilities.map(rc => {\n const cloned = {\n ...rc,\n capability: {\n ...rc.capability,\n can: rc.capability.can === SUPERUSER ? SUPERUSER : {\n ...rc.capability.can\n }\n }\n } as typeof rc;\n if ((cloned.capability as any)?.can?.namespace !== SUPERUSER) {\n (cloned.capability as any).can.segments = ['*'];\n }\n return cloned;\n })\n if (log) {\n let parsed: any = undefined;\n try {\n parsed = parseUcan(normalizedUcan);\n } catch {\n }\n console.log('set new req capabilities', newCapabilities, parsed)\n }\n v = await verifyUcan(normalizedUcan, {\n ...options, requiredCapabilities: newCapabilities\n })\n if (log) console.log('Second verification result:', v);\n }\n return v;\n } catch (e: any) {\n return {ok: false, err: [e.message]}\n }\n};\nexport const orVerifyLoop = async (arr: Array<VerifyOne>, log?: boolean): Promise<VerifyRes> => {\n let v: any = {ok: false, value: []};\n\n try {\n for (const i in arr) {\n if (log) {\n let parsed: any = undefined;\n try {\n if (typeof arr[i].ucan === 'string') parsed = parseUcan(arr[i].ucan);\n } catch {\n }\n console.log('or verify loop', arr[i], parsed);\n }\n if (!v?.ok) {\n const {ucan, ...options} = arr[i];\n v = await verifyOne(ucan, options, log)\n if (log) console.log('got in verify loop', v);\n } else break;\n }\n return v;\n } catch (e: any) {\n return {ok: false, err: [e.message]}\n }\n}\n\nexport type VerifyConfig = {\n client_ucan: string,\n ucan_aud: string,\n [key: string]: any\n};\n\ntype MethodOpts = { aud?: string }\nexport const verifyAgainstReqs = <S>(reqs: Array<RequiredCapability>, config: VerifyConfig, options?: UcanAuthOptions) => {\n return async (context: HookContext<S>): Promise<VerifyRes> => {\n const log = options?.log\n let rawUcan = _get(context.params, config.client_ucan) as string;\n if(!rawUcan){\n const authCfg = context.app.get('authentication') as AnyObj;\n const entityKey = authCfg?.entity || 'login';\n rawUcan = _get(context.params, [entityKey, 'ucan']) as string;\n }\n if (log) console.log('get initial ucan', rawUcan)\n let ucan = rawUcan as unknown as string;\n try {\n // ucanToken will stringify a UCAN object or return the compact form for strings\n const maybe = ucanToken(rawUcan as any);\n if (maybe && typeof maybe === 'string') ucan = maybe;\n if (log && rawUcan !== ucan) console.log('Normalized client UCAN via ucanToken()');\n } catch (e: any) {\n if (log) console.log('UCAN normalization skipped (ucanToken threw):', e?.message);\n }\n\n const audience = options?.audience || _get(context.params, config.ucan_aud) as string;\n if (log) console.log('verify against reqs', reqs)\n let vMethod: (uc?: string, methodOpts?: MethodOpts) => Promise<VerifyRes>\n const or = options?.or || []\n if (ucan && (or === '*' || or.includes(context.method))) vMethod = (uc?: string, methodOpts?: MethodOpts) => orVerifyLoop((reqs || []).map(a => {\n return {\n ucan: uc || ucan,\n audience: methodOpts?.aud || audience,\n requiredCapabilities: [a]\n }\n }), log)\n else vMethod = (uc?: string, methodOpts?: MethodOpts) => verifyOne(uc || ucan, {\n audience: methodOpts?.aud || audience,\n requiredCapabilities: reqs\n }, log) as Promise<VerifyRes>\n let v = await vMethod()\n context.params.ucan_auth_result = v;\n if (log) console.log('first verify try', v);\n if (v?.ok) return v;\n const cs = (options?.cap_subjects || []).filter(a => !!a)\n if (log) console.log('check cap_subjects', cs);\n if (cs) {\n const configuration = config?.loginConfig || context.app.get('authentication') as AnyObj;\n const loginCheckId = String(_get(context.params, `${configuration.entity}._id` || '')) as any;\n const caps = await new CoreCall(configuration.capability_service || 'caps', context).find({\n query: {\n $limit: cs.length,\n subject: {$in: cs}\n },\n skip_hooks: true,\n admin_pass: true,\n skip_loop_detection: true,\n ...options?.special_params || {}\n })\n .catch(err => console.log(`Error finding caps in ucan auth: ${err.message}`))\n if (log) console.log('caps', caps);\n if (caps?.data) {\n for (const cap of caps.data) {\n for (const k in cap.caps || {}) {\n if (log) console.log('check cap', k, cap.caps[k].logins, loginCheckId);\n if ((cap.caps[k].logins || []).map((a: any) => String(a)).includes(loginCheckId)) {\n try {\n const ucanString = ucanToken(cap.caps[k].ucan)\n if (log) console.log('got ucan string', ucanString);\n if (ucanString) {\n v = await vMethod(ucanString, {aud: cap.did})\n if (log) console.log('tried v on cap', v);\n }\n } catch (e: any) {\n console.log(`Error verifying ucan from cap: ${cap._id}. Err:${e.message}`)\n }\n if (options?.log) console.log('tried v on cap', v);\n if (v?.ok) return v;\n }\n }\n }\n }\n }\n return v;\n }\n}\n\nexport type CapabilityModelConfig = {\n defaultScheme: string,\n defaultHierPart: string,\n secret: string,\n [key: string]: any\n};\n\nexport const modelCapabilities = (reqs: Array<CapabilityParts>, config: CapabilityModelConfig): Array<RequiredCapability> => {\n\n const rootIssuer = encodeKeyPair({secretKey: config.secret}).did();\n if (!Array.isArray(reqs)) return []\n return reqs.map(a => {\n return {\n capability: Array.isArray(a) ? genCapability({\n with: {scheme: config.defaultScheme, hierPart: config.defaultHierPart},\n can: {namespace: a[0], segments: typeof a[1] === 'string' ? [a[1]] : a[1]}\n }, config) : genCapability(a, config),\n rootIssuer\n };\n }) as Array<RequiredCapability>\n};\n\nexport declare type PassConfig = {\n loginConfig?: VerifyConfig\n}\nexport const checkUcan = (requiredCapabilities: UcanCap, options?: UcanAuthOptions & PassConfig) => {\n return async (context: HookContext): Promise<HookContext> => {\n const configuration = options?.loginConfig || context.app.get('authentication') as AnyObj;\n\n let v: any = {ok: false, value: []};\n\n const reqs: Array<RequiredCapability> = modelCapabilities(requiredCapabilities as Array<CapabilityParts>, configuration as CapabilityModelConfig);\n\n if (reqs.length) {\n v = await verifyAgainstReqs(reqs, configuration as VerifyConfig, options)(context)\n\n /** if the anyAuth setting is used along with specialChange, a user could get through to this point despite not being authenticated, so this step does not allow a pass for anyAuth setting even though no requiredCapabilities are present - because it was intended to throw if not authenticated unless special change conditions are met */\n } else if (requiredCapabilities !== '*') v.ok = true;\n if (v?.ok) {\n context.params.authenticated = true;\n context.params.canU = true;\n return context\n } else {\n\n // if (!v?.ok) {\n // let hasSplitNamespace = false;\n // const reducedReqs: Array<RequiredCapability> = [];\n // reqs.forEach((req, i) => {\n // const splt = (_get<RequiredCapability, string>(req, 'capability.can.namespace') || '').split(':')\n // if (splt[1]) {\n // req = _set(req, 'capability.can.namespace', splt[0]);\n // hasSplitNamespace = true;\n // }\n // reducedReqs.push(req)\n // })\n // if (hasSplitNamespace) v = await verifyAgainstReqs(reqs, configuration as VerifyConfig, options)(context);\n // }\n\n\n if (options?.log) console.log('checking special change', options?.specialChange);\n if (options?.specialChange) {\n if (options.specialChange === anyAuth) {\n context.params.canU = true;\n return context;\n } else if (Array.isArray(options.specialChange)) {\n if (['create', 'patch', 'update'].includes(context.method)) {\n if (Array.isArray(context.data)) throw new Error('No multi data allowed with special change')\n for (const k in context.data || {}) {\n if (['$set', '$unset', '$addToSet', '$pull', '$push'].includes(k)) {\n for (const sk in context.data[k] || {}) {\n if (!options.specialChange.includes(sk)) {\n const spl = sk.split('.');\n if (spl.length === 1) delete context.data[k][sk];\n else if (!options.specialChange.includes(spl[0])) delete context.data[k][sk]\n }\n }\n } else if (!options.specialChange.includes(k)) delete context.data[k];\n }\n context.params.canU = true;\n return context;\n }\n }\n }\n if (v?.ok) {\n context.params.authenticated = true;\n context.params.canU = true;\n return context;\n } else {\n\n //If creator pass enabled, check to see if the auth login is the creator of the record\n const {loginPass} = options || {loginPass: [[['*'], ['nonExistentMethod']]]}\n if (loginPass?.length) {\n //object of scrubbed data object for pass that includes only limited access or full context.data object if no limits were present\n let scrubbedData: AnyObj = {};\n //scruData defaults to true - is only set to false\n let scrubData = true;\n const checkLoginPass = async (lpass: LoginPassOption) => {\n let methodsOnly = [];\n const allMethods = lpass[1] === '*';\n let methodIdx = -1;\n if (allMethods) methodIdx = 0;\n else {\n //separate out any field specific methods e.g. patch/name,avatar\n methodsOnly = (lpass[1] as string[]).map(a => a.split('/')[0]);\n methodIdx = methodsOnly.indexOf(context.method);\n }\n /**ensure loginPass is allowed for this method*/\n if (methodIdx > -1) {\n /**retrieve existing record to check ids for login id*/\n const existing = await loadExists(context, {params: options?.existingParams});\n let loginOk = false;\n\n /** function for comparing record login id with context login*/\n const checkLogin = (recordLoginPassId: string, loginIdPath: string = '_id') => {\n const loginCheckId = _get(context.params, `${configuration.entity}.${loginIdPath}`) as any;\n /**Make sure both are present to avoid pass on undefined*/\n if (loginCheckId && recordLoginPassId) {\n /** change login path result to array no matter what */\n const checkArr = Array.isArray(loginCheckId) ? loginCheckId.map(a => String(a)) : [String(loginCheckId)];\n if (Array.isArray(recordLoginPassId)) {\n /**loop through to see if there is a match present use for loops for performance instead of some*/\n for (let i = 0; i < checkArr.length; i++) {\n const checkId = String(checkArr[i])\n for (let rl = 0; rl < recordLoginPassId.length;) {\n const rlId = String(recordLoginPassId[rl]);\n if (rlId === checkId) loginOk = true;\n else rl++;\n }\n if (loginOk) return;\n }\n } else if (checkArr.includes(String(recordLoginPassId))) {\n return loginOk = true;\n }\n } else return\n }\n\n if (existing) {\n context = setExists(context, existing);\n /**perform the check*/\n const idArr = Array.isArray(lpass[2]) ? lpass[2] : lpass[0] || [];\n for (const passPath of idArr || []) {\n const spl = String(passPath).split('/');\n if (spl[0].includes('*')) {\n const spl2 = spl[0].split('*');\n const obj = _get(existing, spl2[0]);\n if (obj && typeof obj === 'object') {\n if (Array.isArray(obj)) {\n /** IF array, iterate through array and check the sub-path */\n for (const o of obj) {\n checkLogin(_get(o, spl2[1]) as string, spl[1] || '_id');\n if (loginOk) break;\n }\n } else {\n /** IF object, iterate through object and check the sub-path */\n for (const k in obj) {\n checkLogin(_get(obj, `${k}.${spl2[1]}`) as string, spl[1] || '_id')\n if (loginOk) break;\n }\n }\n }\n\n } else checkLogin(_get(existing, spl[0]) as string, spl[1] || '_id');\n\n }\n }\n\n if (loginOk) {\n v.ok = true\n /**loginPass is true - but check for granular field permissions such as patch/owner,color,status that imply limited permission*/\n //TODO: possibly a throw option here. If loginPass is ok, it will go forward, but could send an empty or modified patch object\n if (lpass[1] !== '*' && !['find', 'get', 'remove'].some(a => lpass[1].includes(a))) {\n const currentMethod = allMethods ? '*' : lpass[1][methodIdx];\n const splitMethod = currentMethod.split('/')[0];\n //check if current method contains a split '/' signaling limited permission check\n if (splitMethod !== currentMethod) {\n //get an array of the allowed fields\n const fields = currentMethod.split('/').slice(1).join('').split(',') || [];\n\n for (const field of fields) {\n const topLevel = _get(context.data, field);\n if (topLevel) scrubbedData = _set(scrubbedData, field, topLevel);\n else {\n for (const operator of ['$addToSet', '$pull']) {\n const operatorLevel = _get(context.data, `${operator}.${field}`);\n if (operatorLevel) scrubbedData = _set(scrubbedData, `${operator}.${field}`, operatorLevel);\n }\n }\n }\n } else scrubData = false;\n } else scrubData = false;\n }\n }\n }\n\n for await (const lpass of loginPass) {\n if (scrubData) await checkLoginPass(lpass);\n else break;\n }\n if (scrubData) context = _set(context, 'data', scrubbedData);\n }\n\n if (v?.ok) {\n context.params.authenticated = true;\n context.params.canU = true;\n return context;\n } else {\n\n if (options?.log) console.error('Ucan capabilities requirements not met: ', v, context.type, context.path);\n if (!options?.noThrow) throw new Error('Missing proper capabilities for this action: ' + context.type + ': ' + context.path + ' - ' + context.method);\n else {\n // Preserve verification details on the context so callers can inspect why UCAN failed\n // (e.g., expired token) when using the noThrow option.\n context.params._no_throw_error = {\n type: context.type,\n method: context.method,\n path: context.path,\n verify: v // includes v.ok, v.err, and any details from verifyUcan\n }\n return context;\n }\n }\n }\n }\n }\n}\n\nexport const ucanAuth = <S>(requiredCapabilities?: UcanCap, options?: UcanAuthOptions) => {\n return async (context: HookContext<S>): Promise<HookContext<S>> => {\n const configuration = context.app.get('authentication') as AnyObj;\n const core_path = configuration.core_path || 'core';\n const entity = configuration.entity || 'login';\n\n // Diagnostics: show how/where we try to source the login when options.log is enabled\n if (options?.log) {\n try {\n const src1: any = _get(context.params, [core_path, entity]);\n const src2: any = _get(context.params, 'login');\n const src3: any = _get(context.params, ['connection', entity]);\n const authHeaderToken = _get(context.params, ['headers', 'authorization']);\n console.log('[UCAN DIAG] ucanAuth:login-sourcing', {\n entityKey: entity,\n corePath: core_path,\n // preview the three candidate sources\n src1Type: src1 ? (src1.constructor?.name || typeof src1) : typeof src1,\n src1HasId: !!(src1 && (src1._id || src1.id)),\n src2Type: src2 ? (src2.constructor?.name || typeof src2) : typeof src2,\n src2HasId: !!(src2 && (src2._id || src2.id)),\n src3Type: src3 ? (src3.constructor?.name || typeof src3) : typeof src3,\n src3HasId: !!(src3 && (src3._id || src3.id)),\n paramsKeys: Object.keys(context.params || {}).slice(0, 20),\n provider: (context as any).params?.provider,\n path: (context as any).path,\n method: (context as any).method,\n hasAuthHeader: typeof authHeaderToken === 'string' && authHeaderToken.length > 0\n });\n } catch {\n }\n }\n\n const existingLogin: any = _get(context.params, [core_path, entity]) || _get(context.params, 'login') || _get(context.params.connection, entity);\n // Ensure params[entity] is always an object with _id when a login identifier exists\n if (existingLogin) {\n context.params[entity] = typeof existingLogin === 'string'\n ? {_id: existingLogin}\n : existingLogin;\n }\n const loginId = typeof existingLogin === 'string' ? existingLogin : existingLogin?._id;\n const hasLogin = !!(existingLogin && (typeof existingLogin === 'string' || !!loginId));\n // Per requirement: UCAN is always at context.params[entity].ucan\n const existingUcan = _get(context.params, configuration.client_ucan || 'client_ucan') || _get(context.params, [entity, 'ucan']);\n\n if (options?.log) console.log('ucan auth', 'hasLogin', hasLogin, 'loginId', loginId, 'existingUcan', !!existingUcan, 'core_path', core_path, 'entity', entity, 'core', context.params[core_path], 'params login', context.params.login, 'required capabilities', requiredCapabilities);\n if (options?.log && !hasLogin) {\n try {\n logUcanParams('ucanAuth:pre-auth', context);\n } catch {\n }\n }\n //Below for passing through auth with no required capabilities\n if (requiredCapabilities === noThrow || (requiredCapabilities && requiredCapabilities[context.method] === noThrow)) return hasLogin ? context : await noThrowAuth(context);\n const adminPass = (options?.adminPass || []).includes(context.method) && (_get(context.params, 'admin_pass') || _get(context.params, [configuration.core_path, 'admin_pass'])) as any\n // If no login is present and no client UCAN is provided, perform authentication. Otherwise, reuse existing state/ucan.\n // Pass through a lightweight log flag so the strategy can emit diagnostics when enabled\n if (!hasLogin && !existingUcan) {\n if (options?.log) {\n try {\n (context as any).params = {...(context as any).params, log: true};\n } catch {\n }\n }\n context = (adminPass || options?.specialChange) ? await noThrowAuth(context) : await bareAuth(context);\n }\n if (options?.log && !hasLogin) {\n // Log again after attempting auth to see if strategy populated the login\n const postLogin: any = _get(context.params, [core_path, entity]) || _get(context.params, 'login') || _get(context.params.connection, entity);\n const postId = typeof postLogin === 'string' ? postLogin : postLogin?._id;\n console.log('[UCAN DIAG] ucanAuth:post-auth', {hasLogin: !!postLogin, postId, entityKey: entity});\n }\n if (requiredCapabilities === anyAuth && !options?.specialChange) {\n context.params.authenticated = !!context.params[entity];\n return context;\n }\n if (adminPass) return context;\n if (!requiredCapabilities) return context;\n return await checkUcan(requiredCapabilities, options)(context)\n }\n}\n\nexport const allUcanAuth = <S>(methods: UcanAllArgs, options?: UcanAuthOptions) => {\n return async (context: HookContext<S>): Promise<HookContext<S>> => {\n const config = context.app.get('authentication') as AuthConfig;\n // if a login is already present in params[core_path][entity], don't overwrite it\n const corePath = (config as any).core_path || 'core';\n const entityKey = (config as any).entity || 'login';\n const existingLogin = _get(context.params, [corePath, entityKey]);\n if (!existingLogin) {\n const entity = _get(context, ['auth', entityKey]);\n if (entity) context = _set(context, [corePath, entityKey], entity)\n }\n if (context.type === 'before') {\n const {method} = context as { method: keyof UcanAllArgs } & HookContext<S>;\n if (methods[method as keyof UcanAllArgs] || methods['all']) {\n return await ucanAuth(methods[method] || methods['all'], options)(context) as any;\n } else return context;\n } else return context;\n }\n}\n\nexport const handleAuthError = (err: any) => {\n return (context: HookContext) => {\n const authErrors = context.params?.ucan_auth_result?.err\n const message =\n Array.isArray(authErrors) && authErrors[0]\n ? authErrors[0]\n : err?.message || String(err) || 'authentication failed'\n\n const m = message?.toLowerCase() || ''\n const settings = {\n ucan: {\n reason: m.includes('expired') ? 'expired' : message\n }\n }\n\n console.warn(`Authentication error on ${context.path}: ${message}`)\n\n throw new NotAuthenticated(message, settings)\n }\n}\n","import {\n _get,\n buildUcan,\n encodeKeyPair,\n parseUcan,\n reduceAbilities,\n stackAbilities,\n ucanToken,\n validateUcan,\n verifyUcan\n} from 'symbol-ucan';\nimport {CoreCall} from '../core'\n\n\nexport const updateUcan = () => {\n return async (context:any) => {\n\n const { add = [], remove = [] } = context.data;\n //ensure capabilities were passed\n if(!add?.length && !remove?.length) throw new Error('No new capabilities passed');\n\n //check ability to edit the affected capabilities\n const {secret, ucan_aud, entity, ucan} = context.app.get('authentication');\n const rootIssuer = encodeKeyPair({secretKey: secret}).did();\n\n const checkAbilities = stackAbilities([...add, ...remove]);\n\n const canEdit = await verifyUcan(_get(context.params, [entity, ucan]) as string, {\n audience: _get(context.params, ucan_aud) as string,\n requiredCapabilities: checkAbilities.map(a => {\n return {\n //TODO: possibly READ shouldn't have the ability to allow others to READ\n capability: a,\n rootIssuer\n }\n })\n })\n\n if(!canEdit?.ok) throw new Error('You don\\'t have sufficient capabilities to grant those capabilities')\n\n //prep edited ucan\n const subjectId = context.id;\n const service = context.data.service || 'logins';\n const path = context.data.path || 'ucan';\n const subject = await new CoreCall(service, context, { skipJoins: true }).get(subjectId, { admin_pass: true, skip_hooks: true });\n\n const decoded = parseUcan(_get(subject, path) as string);\n const {aud, att, fct, nbf, prf} = decoded.payload;\n\n let capabilities = [...att];\n if(remove?.length) capabilities = reduceAbilities(remove, att);\n if(add?.length) capabilities = stackAbilities([...att, ...add]);\n\n\n const raw = await buildUcan({\n issuer: encodeKeyPair({secretKey: secret}),\n audience: aud,\n lifetimeInSeconds: 60 * 60 * 24 * 60,\n proofs: prf,\n ...context.data,\n capabilities\n });\n\n const encoded = ucanToken(raw);\n const isValid = await validateUcan(encoded);\n if (!isValid) throw new Error('Invalid ucan generated when updating');\n const patched = await new CoreCall(service, context).patch(subjectId, { [path]: encoded });\n context.result = {raw: context.data, encoded, subject: patched};\n return context;\n }\n};\n"],"names":["NotAuthError","Error","constructor","message","SPLIT_HEADER","UcanStrategy","AuthenticationBaseStrategy","args","expirationTimers","WeakMap","setAuthentication","auth","verifyAccessToken","accessToken","configuration","_this$authentication","_this$authentication2","authConfig","authentication","service","undefined","entity","entityId","config","core_path","header","schemes","handleConnection","event","connection","authResult","isValidLogout","validUcan","validateUcan","catch","err","console","log","errObj","code","indexOf","payload","exp","duration","Date","now","timer","lt","setTimeout","app","emit","clearTimeout","get","set","strategy","name","delete","verifyConfiguration","allowedKeys","key","Object","keys","includes","getEntityQuery","_params","getEntity","id","params","entityService","query","getParams","assign","_unset","result","provider","getEntityId","loginId","_this$app","pms","$limit","skipJoins","paramsKeys","slice","entities","find","skip_hooks","admin_pass","first","_entities$data","data","Array","isArray","_id","authenticate","ucan","ucanToken","tokenStr","String","trim","dotCount","match","length","decodedUcan","_decodedUcan$payload","aud","hasParamsEntity","_get","value","coreEntity","_this$configuration","_decodedUcan$payload2","idField","audience","usedCoreAud","parse","req","headerValue","headers","toLowerCase","scheme","schemeValue","hasScheme","some","current","RegExp","test","raw","token","AuthService","AuthenticationService","configKey","opts","NotAuthenticated","rest","options","create","_this$options","NotAuth","ucan_path","authStrategies","did","validatedUcan","warn","parsed","parseUcan","secret","issuer","encodeKeyPair","secretKey","buildUcan","lifetimeInSeconds","capabilities","att","patch","CoreCall","context","coreOptions","_context$params","core","_this$context$app","_this$context$app2","_this$context$app3","_this$context$app4","update","_this$context$app5","remove","_this$context$app6","_this$context$app7","_find","_this$context$app8","_create","_this$context$app9","_patch","_this$context$app10","_update","_this$context$app11","_remove","_this$context$app12","logUcanParams","label","_context$app","_context$params2","_entityVal$constructo","_core$constructor","corePath","entityKey","clientUcanPath","client_ucan","audPath","ucan_aud","obj","path","split","reduce","o","k","safePreview","v","_v$constructor","entityVal","tokenType","parsedOk","require","tokenPreview","audienceType","audiencePreview","entityType","entityHasId","coreType","coreKeys","existsPath","getExists","loadExists","ex","exists_check","setExists","val","_set","SUPERUSER","anyAuth","noThrow","noThrowAuth","e","bareAuth","verifyOne","_v","normalizedUcan","ok","verifyUcan","requiredCapabilities","newCapabilities","map","rc","_cloned$capability","cloned","capability","can","namespace","segments","orVerifyLoop","arr","i","_v2","verifyAgainstReqs","reqs","_v3","rawUcan","authCfg","maybe","vMethod","or","method","uc","methodOpts","a","ucan_auth_result","cs","cap_subjects","filter","loginConfig","loginCheckId","caps","capability_service","subject","$in","skip_loop_detection","special_params","cap","logins","_v4","ucanString","modelCapabilities","rootIssuer","genCapability","with","defaultScheme","hierPart","defaultHierPart","checkUcan","_v5","authenticated","canU","_v6","specialChange","sk","spl","_v7","loginPass","scrubbedData","scrubData","checkLoginPass","lpass","methodsOnly","allMethods","methodIdx","existing","existingParams","loginOk","checkLogin","recordLoginPassId","loginIdPath","checkArr","checkId","rl","rlId","idArr","passPath","spl2","currentMethod","splitMethod","fields","join","field","topLevel","operator","operatorLevel","error","type","_no_throw_error","verify","ucanAuth","_src1$constructor","_src2$constructor","_src3$constructor","src1","src2","src3","authHeaderToken","src1Type","src1HasId","src2Type","src2HasId","src3Type","src3HasId","hasAuthHeader","existingLogin","hasLogin","existingUcan","login","adminPass","postLogin","postId","allUcanAuth","methods","handleAuthError","authErrors","m","settings","reason","updateUcan","add","checkAbilities","stackAbilities","canEdit","subjectId","decoded","fct","nbf","prf","reduceAbilities","proofs","encoded","isValid","patched"],"mappings":";;;;;;;;;AAYM,MAAOA,cAAa,SAAQC,KAAK,CAAA;EACnCC,WAAAA,CAAYC,OAAgB,EAAA;IACxB,KAAK,CAACA,OAAO,CAAC,CAAA;AAClB,GAAA;AACH,CAAA;AACD,MAAMC,YAAY,GAAG,eAAe,CAAA;AAI9B,MAAOC,YAAa,SAAQC,yCAA0B,CAAA;AAAAJ,EAAAA,WAAAA,CAAA,GAAAK,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CACxDC,gBAAgB,GAAG,IAAIC,OAAO,EAAE,CAAA;AAAA,GAAA;EAEhCC,iBAAiBA,CAACC,IAAwB,EAAA;AACtC;AACAA,IAAAA,IAAI,CAACC,iBAAiB,GAAIC,WAAmB,IAAI;AAC7C,MAAA,OAAO,EAAS,CAAA;KACnB,CAAA;AACD,IAAA,KAAK,CAACH,iBAAiB,CAACC,IAAI,CAAC,CAAA;AACjC,GAAA;EAEA,IAAIG,aAAaA,GAAA;IAAA,IAAAC,oBAAA,EAAAC,qBAAA,CAAA;IACb,MAAMC,UAAU,GAAG,CAAA,CAAAF,oBAAA,GAAA,IAAI,CAACG,cAAc,KAAnBH,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAA,CAAqBD,aAAa,KAAI;AACrDK,MAAAA,OAAO,EAAEC,SAAS;AAClBC,MAAAA,MAAM,EAAED,SAAS;AACjBE,MAAAA,QAAQ,EAAEF,SAAAA;KACb,CAAA;AACD,IAAA,MAAMG,MAAM,GAAG,KAAK,CAACT,aAAa,CAAA;IAElC,OAAO;MACHK,OAAO,EAAEF,UAAU,CAACE,OAAO;MAC3BE,MAAM,EAAEJ,UAAU,CAACI,MAAM;MACzBC,QAAQ,EAAEL,UAAU,CAACK,QAAQ;AAC7B;MACAE,SAAS,EAAG,EAAAR,qBAAA,GAAA,IAAI,CAACE,cAAc,KAAA,IAAA,IAAA,CAAAF,qBAAA,GAAnBA,qBAAA,CAAqBF,aAAqB,KAAA,IAAA,GAAA,KAAA,CAAA,GAA1CE,qBAAA,CAA4CQ,SAAS,MAAKP,UAAkB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAlBA,UAAkB,CAAEO,SAAS,CAAA;AACnGC,MAAAA,MAAM,EAAE,eAAe;AACvBC,MAAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;MAC1B,GAAGH,MAAAA;KACN,CAAA;AACL,GAAA;AAEA,EAAA,MAAMI,gBAAgBA,CAACC,KAAsB,EAAEC,UAAe,EAAEC,UAAiC,EAAA;IAC7F,MAAMC,aAAa,GAAGH,KAAK,KAAK,QAAQ,IAAIC,UAAU,CAACX,cAAc,IAAIY,UAAU,IAC/ED,UAAU,CAACX,cAAc,CAACL,WAAW,KAAKiB,UAAU,CAACjB,WAAW,CAAA;IAEpE,MAAM;MAACA,WAAW;AAAEQ,MAAAA,MAAAA;KAAO,GAAGS,UAAU,IAAI,EAAE,CAAA;AAE9C,IAAA,IAAIjB,WAAW,IAAIe,KAAK,KAAK,OAAO,EAAE;MAClC,MAAMI,SAAS,GAAG,MAAMC,uBAAY,CAACpB,WAAW,CAAC,CAC5CqB,KAAK,CAACC,GAAG,IAAG;QACTC,OAAO,CAACC,GAAG,CAAC,yCAAyC,EAAEF,GAAG,CAAChC,OAAO,CAAC,CAAA;AACnE,QAAA,MAAMmC,MAAM,GAAG;AACXC,UAAAA,IAAI,EAAE,CAAC;AACPpC,UAAAA,OAAO,EAAE,+BAAA;SACZ,CAAA;QACD,IAAIgC,GAAG,CAAChC,OAAO,CAACqC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;UACtCF,MAAM,CAACC,IAAI,GAAG,CAAC,CAAA;UACfD,MAAM,CAACnC,OAAO,GAAG,cAAc,CAAA;AACnC,SAAA;AACA,QAAA,MAAM,IAAIF,KAAK,CAACqC,MAAM,CAACnC,OAAO,CAAC,CAAA;AACnC,OAAC,CAAC,CAAA;MACN,MAAM;AAACsC,QAAAA,OAAO,EAAE;AAACC,UAAAA,GAAAA;AAAG,SAAA;OAAE,GAAGV,SAAS,IAAI;AAACS,QAAAA,OAAO,EAAE;AAACC,UAAAA,GAAG,EAAE,CAAA;AAAC,SAAA;OAAE,CAAA;AACzD;MACA,MAAMC,QAAQ,GAAID,GAAG,GAAG,IAAI,GAAIE,IAAI,CAACC,GAAG,EAAE,CAAA;AAC1C;AACA;AACA,MAAA,MAAMC,KAAK,GAAGC,sBAAE,CAACC,UAAU,CAAC,MAAO,IAAI,CAACC,GAAW,CAACC,IAAI,CAAC,YAAY,EAAErB,UAAU,CAAC,EAAEc,QAAQ,CAAC,CAAA;MAE7FI,sBAAE,CAACI,YAAY,CAAC,IAAI,CAAC3C,gBAAgB,CAAC4C,GAAG,CAACvB,UAAU,CAAC,CAAC,CAAA;MACtD,IAAI,CAACrB,gBAAgB,CAAC6C,GAAG,CAACxB,UAAU,EAAEiB,KAAK,CAAC,CAAA;MAE5CjB,UAAU,CAACX,cAAc,GAAG;QACxBoC,QAAQ,EAAE,IAAI,CAACC,IAAI;AACnB1C,QAAAA,WAAAA;OACH,CAAA;AACL,KAAC,MAAM,IAAIe,KAAK,KAAK,YAAY,IAAIG,aAAa,EAAE;MAChD,MAAM;AAACV,QAAAA,MAAAA;OAAO,GAAG,IAAI,CAACP,aAAa,CAAA;MAEnC,OAAOe,UAAU,CAACR,MAAM,CAAC,CAAA;MACzB,OAAOQ,UAAU,CAACX,cAAc,CAAA;MAEhC6B,sBAAE,CAACI,YAAY,CAAC,IAAI,CAAC3C,gBAAgB,CAAC4C,GAAG,CAACvB,UAAU,CAAC,CAAC,CAAA;AACtD,MAAA,IAAI,CAACrB,gBAAgB,CAACgD,MAAM,CAAC3B,UAAU,CAAC,CAAA;AAC5C,KAAA;AACJ,GAAA;AAEA4B,EAAAA,mBAAmBA,GAAA;AACf;AACA;AACA;AACA,IAAA,MAAMC,WAAW,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IAEnG,KAAK,MAAMC,GAAG,IAAIC,MAAM,CAACC,IAAI,CAAC,IAAI,CAAC/C,aAAa,CAAC,EAAE;AAC/C,MAAA,IAAI,CAAC4C,WAAW,CAACI,QAAQ,CAACH,GAAG,CAAC,EAAE;QAC5B,MAAM,IAAI1D,KAAK,CAAgD,CAAA,4CAAA,EAAA,IAAI,CAACsD,IAAQ,CAAA,CAAA,EAAAI,GAA8D,CAAA,yDAAA,CAAA,CAAC,CAAA;AAC/I,OAAA;AACJ,KAAA;IAEA,IAAI,OAAO,IAAI,CAAC7C,aAAa,CAACW,MAAM,KAAK,QAAQ,EAAE;MAC/C,MAAM,IAAIxB,KAAK,CAAC,CAAA,4BAAA,EAA+B,IAAI,CAACsD,IAAgC,4BAAA,CAAC,CAAA;AACzF,KAAA;AACJ,GAAA;AAEA;EACA,MAAMQ,cAAcA,CAACC,OAAY,EAAA;AAC7B,IAAA,OAAO,EAAE,CAAA;AACb,GAAA;AAEA;;;;AAIG;AACH,EAAA,MAAMC,SAASA,CAACC,EAAU,EAAEC,MAAW,EAAA;AACnC,IAAA,MAAMC,aAAa,GAAG,IAAI,CAACA,aAAa,CAAA;IACxC,MAAM;AAAC/C,MAAAA,MAAAA;KAAO,GAAG,IAAI,CAACP,aAAa,CAAA;IAEnC,IAAIsD,aAAa,KAAK,IAAI,EAAE;AACxB,MAAA,MAAM,IAAIpE,cAAY,CAAC,+BAA+B,CAAC,CAAA;AAC3D,KAAA;IAEA,MAAMqE,KAAK,GAAG,MAAM,IAAI,CAACN,cAAc,CAACI,MAAM,CAAC,CAAA;AAC/C,IAAA,MAAMG,SAAS,GAAGV,MAAM,CAACW,MAAM,CAAC,EAAE,EAAEC,iBAAM,CAACL,MAAM,EAAE,UAAU,CAAC,EAAE;AAACE,MAAAA,KAAAA;AAAK,KAAC,CAAC,CAAA;IACxE,MAAMI,MAAM,GAAG,MAAML,aAAa,CAAChB,GAAG,CAACc,EAAE,EAAEI,SAAS,CAAC,CAAA;AAErD,IAAA,IAAI,CAACH,MAAM,CAACO,QAAQ,EAAE;AAClB,MAAA,OAAOD,MAAM,CAAA;AACjB,KAAA;AAEA,IAAA,OAAOL,aAAa,CAAChB,GAAG,CAACc,EAAE,EAAE;AAAC,MAAA,GAAGC,MAAM;AAAE,MAAA,CAAC9C,MAAM,GAAGoD,MAAAA;AAAM,KAAC,CAAC,CAAA;AAC/D,GAAA;AAEA,EAAA,MAAME,WAAWA,CAAC7C,UAAgC,EAAEkC,OAAe,EAAA;IAC/D,IAAI;MAACK,KAAK;AAAEO,MAAAA,OAAAA;AAAQ,KAAA,GAAGZ,OAAO,CAAA;AAC9B,IAAA,IAAIY,OAAO,EAAE,OAAOA,OAAO,CAAC,KACvB;AAAA,MAAA,IAAAC,SAAA,CAAA;MACD,MAAM;QAAC1D,OAAO;AAAEK,QAAAA,SAAS,GAAG,MAAA;OAAO,GAAG,IAAI,CAACV,aAAa,CAAA;AACxD,MAAA,MAAMgE,GAAG,GAAG;AACRT,QAAAA,KAAK,EAAE;AAAC,UAAA,GAAGA,KAAK;AAAEU,UAAAA,MAAM,EAAE,CAAA;SAAE;AAC5B,QAAA,CAACvD,SAAS,GAAG;AAACwD,UAAAA,SAAS,EAAE,IAAI;UAAE,GAAGhB,OAAO,CAACxC,SAAS,CAAA;AAAE,SAAA;OACxD,CAAA;AACD;AACA,MAAA,IAAIwC,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAE3B,GAAG,EAAE;QACd,IAAI;AACAD,UAAAA,OAAO,CAACC,GAAG,CAAC,kCAAkC,EAAE;YAC5ClB,OAAO;YACPK,SAAS;YACT6C,KAAK,EAAES,GAAG,CAACT,KAAK;YAChBK,QAAQ,EAAEV,OAAO,CAACU,QAAQ;AAC1BO,YAAAA,UAAU,EAAErB,MAAM,CAACC,IAAI,CAACG,OAAO,IAAI,EAAE,CAAC,CAACkB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAA;AACrD,WAAA,CAAC,CAAA;SACL,CAAC,MAAM,EAAC;AACb,OAAA;AACA,MAAA,MAAMC,QAAQ,GAAG,OAAA,CAAAN,SAAA,GAAM,IAAI,CAAC5B,GAAG,KAAR4B,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAA,CAAU1D,OAAO,CAACA,OAAO,CAAC,CAACiE,IAAI,CAAC;AAAC,QAAA,GAAGN,GAAG;AAAEE,QAAAA,SAAS,EAAE,IAAI;AAAEK,QAAAA,UAAU,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE,IAAA;AAAI,OAAQ,CAAC,CAAA,CAAA;AAC5H;AACA;AACA;MACA,IAAIC,KAAK,GAAQnE,SAAS,CAAA;MAC1B,IAAI+D,QAAQ,IAAI,OAAOA,QAAQ,KAAK,QAAQ,IAAI,MAAM,IAAIA,QAAQ,EAAE;AAAA,QAAA,IAAAK,cAAA,CAAA;QAChED,KAAK,GAAA,CAAAC,cAAA,GAAIL,QAAgB,CAACM,IAAI,KAArBD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAA,CAAwB,CAAC,CAAC,CAAA;OACtC,MAAM,IAAIE,KAAK,CAACC,OAAO,CAACR,QAAQ,CAAC,EAAE;AAChCI,QAAAA,KAAK,GAAGJ,QAAQ,CAAC,CAAC,CAAC,CAAA;AACvB,OAAA;MACA,IAAII,KAAK,IAAIA,KAAK,CAACK,GAAG,EAAE,OAAOL,KAAK,CAACK,GAAG,CAAA;AACxC,MAAA,MAAM,IAAI5F,cAAY,CAAC,gDAAgD,CAAC,CAAA;AAC5E,KAAA;AACJ,GAAA;AAEA,EAAA,MAAM6F,YAAYA,CAAC3E,cAAqC,EAAEiD,MAAc,EAAA;IACpE,IAAI;MAACtD,WAAW;MAAE+D,OAAO;AAAEkB,MAAAA,IAAAA;AAAI,KAAC,GAAG5E,cAAc,CAAA;IACjD,MAAM;MAACG,MAAM;AAAEG,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACV,aAAa,CAAA;IAC9C,IAAI,CAACD,WAAW,EAAE;AAEd,MAAA,IAAIiF,IAAI,EAAEjF,WAAW,GAAGkF,oBAAS,CAACD,IAAI,CAAC,CAAC,KACnC,MAAM,IAAI9F,cAAY,CAAC,2BAA2B,CAAC,CAAA;AACxD;AACJ,KAAA;AAEA;IACA,MAAMgG,QAAQ,GAAGC,MAAM,CAACpF,WAAW,IAAI,EAAE,CAAC,CAACqF,IAAI,EAAE,CAAA;AACjD,IAAA,MAAMC,QAAQ,GAAG,CAACH,QAAQ,CAACI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAEC,MAAM,CAAA;AACrD,IAAA,IAAI,CAACL,QAAQ,IAAIA,QAAQ,KAAK,MAAM,IAAIA,QAAQ,KAAK,WAAW,IAAIG,QAAQ,KAAK,CAAC,EAAE;AAChF,MAAA,MAAM,IAAInG,cAAY,CAAC,oEAAoE,CAAC,CAAA;AAChG,KAAA;AACA;AACA;AACA;AACA;AACA;AACA;IAEA,MAAMsG,WAAW,GAAG,MAAMrE,uBAAY,CAACpB,WAAW,CAAC,CAC9CqB,KAAK,CAACC,GAAG,IAAG;MACTC,OAAO,CAACC,GAAG,CAAC,iDAAiD,EAAEF,GAAG,CAAChC,OAAO,CAAC,CAAA;AAC3E,MAAA,MAAMmC,MAAM,GAAG;AACXC,QAAAA,IAAI,EAAE,CAAC;AACPpC,QAAAA,OAAO,EAAE,+BAAA;OACZ,CAAA;MACD,IAAIgC,GAAG,CAAChC,OAAO,CAACqC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;QACtCF,MAAM,CAACC,IAAI,GAAG,CAAC,CAAA;QACfD,MAAM,CAACnC,OAAO,GAAG,cAAc,CAAA;AACnC,OAAA;AACA,MAAA,MAAM,IAAIF,KAAK,CAACqC,MAAM,CAACnC,OAAO,CAAC,CAAA;AACnC,KAAC,CAAC,CAAA;AAEN,IAAA,IAAIgE,MAAM,IAAA,IAAA,IAANA,MAAM,CAAE9B,GAAG,EAAE;MACb,IAAI;AAAA,QAAA,IAAAkE,oBAAA,CAAA;AACAnE,QAAAA,OAAO,CAACC,GAAG,CAAC,mCAAmC,EAAE;UAC7ChB,MAAM;UACNG,SAAS;UACTgF,GAAG,EAAEF,WAAW,IAAA,IAAA,IAAA,CAAAC,oBAAA,GAAXD,WAAW,CAAE7D,OAAO,KAAA,IAAA,GAAA,KAAA,CAAA,GAApB8D,oBAAA,CAAsBC,GAAG;AAC9BC,UAAAA,eAAe,EAAE,CAAC,CAACC,eAAI,CAACvC,MAAM,EAAE,CAAC3C,SAAS,EAAEH,MAAM,CAAC,CAAC;UACpDqD,QAAQ,EAAEP,MAAM,CAACO,QAAAA;AACpB,SAAA,CAAC,CAAA;OACL,CAAC,MAAM,EAAC;AACb,KAAA;AAEA,IAAA,MAAMD,MAAM,GAAG;MACX5D,WAAW;AACXK,MAAAA,cAAc,EAAE;AACZoC,QAAAA,QAAQ,EAAE,KAAK;AACfzC,QAAAA,WAAAA;AACH,OAAA;KACJ,CAAA;IAED,IAAIQ,MAAM,KAAK,IAAI,EAAE;AACjB,MAAA,OAAOoD,MAAM,CAAA;AACjB,KAAA;AAEA,IAAA,IAAIkC,KAAK,CAAA;IACT,MAAMC,UAAU,GAAGF,eAAI,CAACvC,MAAM,EAAE,CAAC3C,SAAS,EAAEH,MAAM,CAAC,CAAC,CAAA;IACpD,IAAI,CAACuF,UAAU,EAAE;MAAA,IAAAC,mBAAA,EAAAC,qBAAA,CAAA;AACb;AACA,MAAA,MAAMC,OAAO,GAAI,CAAAF,CAAAA,mBAAA,GAAI,IAAA,CAAC/F,aAAqB,KAAA,IAAA,GAAA,KAAA,CAAA,GAA1B+F,mBAAA,CAA4BvF,QAAQ,KAAI,KAAK,CAAA;MAC9D,MAAM0F,QAAQ,GAAGN,eAAI,CAACvC,MAAM,EAAE,CAAC3C,SAAS,EAAE,UAAU,CAAC,CAAC,KAAI8E,WAAW,IAAAQ,IAAAA,IAAAA,CAAAA,qBAAA,GAAXR,WAAW,CAAE7D,OAAO,KAAA,IAAA,GAAA,KAAA,CAAA,GAApBqE,qBAAA,CAAsBN,GAAG,CAAA,CAAA;AACnF,MAAA,IAAIrC,MAAM,IAAA,IAAA,IAANA,MAAM,CAAE9B,GAAG,EAAE;QACb,IAAI;AACAD,UAAAA,OAAO,CAACC,GAAG,CAAC,oCAAoC,EAAE;YAC9C0E,OAAO;YACPC,QAAQ;YACRC,WAAW,EAAE,CAAC,CAACP,eAAI,CAACvC,MAAM,EAAE,CAAC3C,SAAS,EAAE,UAAU,CAAC,CAAA;AACtD,WAAA,CAAC,CAAA;SACL,CAAC,MAAM,EAAC;AACb,OAAA;MACA,MAAMF,QAAQ,GAAG,MAAM,IAAI,CAACqD,WAAW,CAACF,MAAM,EAAE;AAC5C,QAAA,GAAGN,MAAM;QACTS,OAAO;AACPP,QAAAA,KAAK,EAAE;AAAC,UAAA,CAAC0C,OAAO,GAAGC,QAAAA;AAAS,SAAA;AAC/B,OAAA,CAAC,CAAA;MACFL,KAAK,GAAG,MAAM,IAAI,CAAC1C,SAAS,CAAC3C,QAAQ,EAAE6C,MAAM,CAAC,CAAA;KACjD,MAAMwC,KAAK,GAAGC,UAAU,CAAA;IACzB,OAAO;AACH,MAAA,GAAGnC,MAAM;AACT,MAAA,CAACpD,MAAM,GAAGsF,KAAAA;KACb,CAAA;AAEL,GAAA;EAEA,MAAMO,KAAKA,CAACC,GAAoB,EAAA;IAC5B,MAAM;MAAC1F,MAAM;AAAEC,MAAAA,OAAAA;KAAQ,GAAG,IAAI,CAACZ,aAAa,CAAA;AAC5C,IAAA,MAAMsG,WAAW,GAAGD,GAAG,CAACE,OAAO,IAAIF,GAAG,CAACE,OAAO,CAAC5F,MAAM,CAAC6F,WAAW,EAAE,CAAC,CAAA;AAEpE,IAAA,IAAI,CAACF,WAAW,IAAI,OAAOA,WAAW,KAAK,QAAQ,EAAE;AACjD,MAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA,IAAA,MAAM,GAAGG,MAAM,EAAEC,WAAW,CAAC,GAAGJ,WAAW,CAAChB,KAAK,CAAChG,YAAY,CAAC,IAAI,EAAE,CAAA;IACrE,MAAMqH,SAAS,GAAGF,MAAM,IAAI7F,OAAO,CAACgG,IAAI,CACnCC,OAAY,IAAK,IAAIC,MAAM,CAACD,OAAO,EAAE,GAAG,CAAC,CAACE,IAAI,CAACN,MAAM,CAAC,CAC1D,CAAA;AAED,IAAA,IAAIA,MAAM,IAAI,CAACE,SAAS,EAAE;AACtB,MAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA,IAAA,MAAMK,GAAG,GAAGL,SAAS,GAAGD,WAAW,GAAIJ,WAAsB,CAAA;AAC7D,IAAA,MAAMW,KAAK,GAAG,OAAOD,GAAG,KAAK,QAAQ,GAAGA,GAAG,CAAC5B,IAAI,EAAE,GAAG4B,GAAG,CAAA;AACxD;IACA,IAAI,CAACC,KAAK,IAAIA,KAAK,KAAK,MAAM,IAAIA,KAAK,KAAK,WAAW,EAAE;AACrD,MAAA,OAAO,IAAI,CAAA;AACf,KAAA;IACA,OAAO;MACHzE,QAAQ,EAAE,IAAI,CAACC,IAAI;AACnB1C,MAAAA,WAAW,EAAEkH,KAAAA;KAChB,CAAA;AACL,GAAA;AACH;;ACnSK,MAAO/H,YAAa,SAAQC,KAAK,CAAA;EACnCC,WAAAA,CAAYC,OAAgB,EAAA;IACxB,KAAK,CAACA,OAAO,CAAC,CAAA;AAClB,GAAA;AACH,CAAA;AAMK,MAAO6H,WAAY,SAAQC,oCAAqB,CAAA;EAElD/H,WAAAA,CAAY+C,GAAQ,EAAEiF,SAAS,GAAG,gBAAgB,EAAEC,OAAiC,EAAE,EAAA;IACnF,MAAM;MAAEC,gBAAgB;MAAE,GAAGC,IAAAA;AAAM,KAAA,GAAGF,IAAI,CAAA;AAC1C,IAAA,KAAK,CAAClF,GAAG,EAAEiF,SAAS,EAAEG,IAAI,CAAC,CAAA;AAAA,IAAA,IAAA,CAH/BC,OAAO,GAAA,KAAA,CAAA,CAAA;IAIH,IAAI,CAACrF,GAAG,GAAGA,GAAG,CAAA;IACd,IAAI,CAACqF,OAAO,GAAG;AAAEF,MAAAA,gBAAAA;KAAkB,CAAA;AACvC,GAAA;AAEA,EAAA,MAAMG,MAAMA,CAAC9C,IAA2B,EAAEtB,MAA6B,EAAA;IAAA,IAAAqE,aAAA,EAAAxE,OAAA,CAAA;AACnE,IAAA,MAAMyE,OAAO,GAAG,CAAAD,CAAAA,aAAA,GAAI,IAAA,CAACF,OAAO,KAAA,IAAA,GAAA,KAAA,CAAA,GAAZE,aAAA,CAAcJ,gBAAgB,KAAIpI,YAAY,CAAA;IAE9D,MAAM;MAACqB,MAAM;MAAEF,OAAO;AAAEuH,MAAAA,SAAS,GAAG,MAAA;KAAO,GAAG,IAAI,CAACzF,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAE5E,IAAA,MAAMuF,cAAc,GAAG,CAAA3E,CAAAA,OAAA,GAAAG,MAAM,KAAA,IAAA,GAAA,KAAA,CAAA,GAANH,OAAA,CAAQ2E,cAAc,KAAI,IAAI,CAAC7H,aAAa,CAAC6H,cAAc,CAAA;AAElF,IAAA,IAAI,CAACxE,MAAM,EAAEA,MAAM,GAAG,EAAE,CAAA;AAExB,IAAA,IAAI,CAACwE,cAAc,CAACtC,MAAM,EAAE;AACxB,MAAA,MAAM,IAAIoC,OAAO,CAAC,4EAA4E,CAAC,CAAA;AACnG,KAAA;AAEA,IAAA,MAAM3G,UAAU,GAAG,MAAM,IAAI,CAAC+D,YAAY,CAACJ,IAAI,EAAEtB,MAAM,EAAE,GAAGwE,cAAc,CAAC,CACtEzG,KAAK,CAAEC,GAAQ,IAAI;AAChB,MAAA,MAAM,IAAIlC,KAAK,CAACkC,GAAG,CAAChC,OAAO,CAAC,CAAA;AAChC,KAAC,CAAC,CAAA;IAEN,IAAI2B,UAAU,CAACjB,WAAW,EAAE;AACxB,MAAA,OAAOiB,UAAU,CAAA;AACrB,KAAA;AACA,IAAA,MAAM8G,GAAG,GAAGnD,IAAI,CAACmD,GAAG,IAAIlC,eAAI,CAAC5E,UAAU,EAAE,CAACT,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;AACzD,IAAA,IAAIyE,IAAI,GAAGL,IAAI,CAACK,IAAI,IAAIY,eAAI,CAAC5E,UAAU,EAAE,CAACT,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAE1D,IAAI,CAACuH,GAAG,EAAE,MAAM,IAAI3I,KAAK,CAAC,0BAA0B,CAAC,CAAA;IACrD,IAAI,CAAC6F,IAAI,EAAE,MAAM,IAAI7F,KAAK,CAAC,yCAAyC,CAAC,CAAA;AACrE;IAEA,MAAM4I,aAAa,GAAG,MAAM5G,uBAAY,CAAC6D,IAAI,CAAC,CACzC5D,KAAK,CAACC,GAAG,IAAG;MACTC,OAAO,CAACC,GAAG,CAAC,mDAAmD,EAAEF,GAAG,CAAChC,OAAO,CAAC,CAAA;AAC7E,MAAA,MAAMmC,MAAM,GAAG;AACXC,QAAAA,IAAI,EAAE,CAAC;AACPpC,QAAAA,OAAO,EAAE,+BAAA;OACZ,CAAA;MACD,IAAIgC,GAAG,CAAChC,OAAO,CAACqC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;QACtCF,MAAM,CAACC,IAAI,GAAG,CAAC,CAAA;QACfD,MAAM,CAACnC,OAAO,GAAG,cAAc,CAAA;AACnC,OAAA;MACAiC,OAAO,CAAC0G,IAAI,CAAC,iDAAiD,EAAEhD,IAAI,EAAExD,MAAM,CAACnC,OAAO,CAAC,CAAA;AACrF,MAAA,OAAO,IAAI,CAAA;AACf,KAAC,CAAC,CAAA;IACN,IAAI,CAAC0I,aAAa,EAAE;AAChB,MAAA,MAAME,MAAM,GAAGC,oBAAS,CAAClD,IAAI,CAAC,CAAA;MAC9B,IAAI;AAACmD,QAAAA,MAAAA;OAAO,GAAG,IAAI,CAAChG,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;MAE7C,MAAM8F,MAAM,GAAGC,wBAAa,CAAC;AAACC,QAAAA,SAAS,EAAEH,MAAAA;AAAO,OAAA,CAAC,CAAA;MACjDnD,IAAI,GAAG,MAAMuD,oBAAS,CAAC;AACnBrC,QAAAA,QAAQ,EAAE+B,MAAM,CAACtG,OAAO,CAAC+D,GAAG;QAC5B0C,MAAM;AACNI,QAAAA,iBAAiB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACpCC,QAAAA,YAAY,EAAER,MAAM,CAACtG,OAAO,CAAC+G,GAAAA;AAChC,OAAA,CAAC,CAAA;MACFrF,MAAM,CAACmB,UAAU,GAAG,IAAI,CAAA;MACxB,MAAM,IAAI,CAACrC,GAAG,CAAC9B,OAAO,CAACA,OAAO,CAAC,CAACsI,KAAK,CAAC/C,eAAI,CAAC5E,UAAU,EAAE,CAACT,MAAM,EAAE,KAAK,CAAC,CAAe,EAAE;AAAC,QAAA,CAACqH,SAAS,GAAG3C,oBAAS,CAACD,IAAI,CAAA;OAAE,EAAE;QAAC,GAAG3B,MAAAA;AAAM,OAAC,CAAC,CAAA;AACvI,KAAA;AAGA,IAAA,MAAMtD,WAAW,GAAGkF,oBAAS,CAACD,IAAI,CAAC,CAAA;IAEnC,OAAO;MACHjF,WAAW;AACX,MAAA,GAAGiB,UAAU;AACbZ,MAAAA,cAAc,EAAE;QACZ,GAAGY,UAAU,CAACZ,cAAc;AAC5BuB,QAAAA,OAAO,EAAE5B,WAAAA;AACZ,OAAA;KACJ,CAAA;AACL,GAAA;AACH;;MC7EY6I,QAAQ,CAAA;AAKjBxJ,EAAAA,WAAAA,CAAYiB,OAAc,EAAEwI,OAAW,EAAEC,WAAqB,EAAA;AAAA,IAAA,IAAAC,eAAA,CAAA;AAAA,IAAA,IAAA,CAJ9DF,OAAO,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CACPxI,OAAO,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CACP2I,IAAI,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CACJzI,MAAM,GAAA,KAAA,CAAA,CAAA;IAEF,IAAI,CAACF,OAAO,GAAGA,OAAO,CAAA;IACtB,IAAI,CAACwI,OAAO,GAAGA,OAAO,CAAA;IACtB,MAAMtI,MAAM,GAAG,CAACsI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,IAAI;AAAE/B,MAAAA,MAAM,EAAE,OAAA;KAAS,EAAEA,MAAM,IAAI,OAAO,CAAA;IAC3F,IAAI,CAACA,MAAM,GAAGA,MAAM,CAAA;AACpB,IAAA,MAAMyI,IAAI,GAAG,CAAAD,CAAAA,eAAA,GAAAF,OAAO,CAACxF,MAAM,KAAA,IAAA,GAAA,KAAA,CAAA,GAAd0F,eAAA,CAAgBC,IAAI,KAAI,EAAE,CAAA;AACvC,IAAA,IAAG,CAACA,IAAI,CAACzI,MAAM,CAAC,EAAEyI,IAAI,CAACzI,MAAM,CAAC,GAAGsI,OAAO,CAACxF,MAAM,CAAC9C,MAAM,CAAC,CAAA;IACvD,IAAI,CAACyI,IAAI,GAAG;AAAE,MAAA,GAAGA,IAAI;MAAE,GAAGF,WAAAA;KAAa,CAAA;AAC3C,GAAA;EAEA,MAAMxG,GAAGA,CAACc,EAAa,EAAEC,SAAgB,EAAE,EAAA;AAAA,IAAA,IAAA4F,iBAAA,CAAA;IACvC,MAAM;AAACvI,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAA2G,CAAAA,iBAAA,GAAO,IAAI,CAACJ,OAAO,CAAC1G,GAAG,qBAAhB8G,iBAAA,CAAkB5I,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACiC,GAAG,CAACc,EAAE,EAAE;AAAC,MAAA,GAAGC,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;MAAE,GAAG;QAAE,CAACG,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AAC1I,GAAA;AACA,EAAA,MAAM1E,IAAIA,CAAEjB,MAAA,GAAgB,EAAE,EAAA;AAAA,IAAA,IAAA6F,kBAAA,CAAA;IAC1B,MAAM;AAACxI,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAC1D,IAAA,OAAA,CAAA4G,kBAAA,GAAO,IAAI,CAACL,OAAO,CAAC1G,GAAG,KAAhB+G,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAkB7I,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACiE,IAAI,CAAC;AAAC,MAAA,GAAGjB,MAAmB;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;AAAEiE,MAAAA,UAAU,EAAC,IAAI;MAAE,GAAG;QAAE,CAAC9D,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AACrK,GAAA;EACA,MAAMvB,MAAMA,CAAE9C,IAAW,EAAEtB,SAAgB,EAAE,EAAA;AAAA,IAAA,IAAA8F,kBAAA,CAAA;IACzC,MAAM;AAACzI,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAA6G,CAAAA,kBAAA,GAAO,IAAI,CAACN,OAAO,CAAC1G,GAAG,qBAAhBgH,kBAAA,CAAkB9I,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACoH,MAAM,CAAC9C,IAAI,EAAE;AAAC,MAAA,GAAGtB,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;MAAE,GAAG;QAAE,CAACG,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AAC/I,GAAA;EACA,MAAML,KAAKA,CAAEvF,EAAa,EAAEuB,IAAW,EAAEtB,SAAgB,EAAE,EAAA;AAAA,IAAA,IAAA+F,kBAAA,CAAA;IACvD,MAAM;AAAC1I,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAA8G,CAAAA,kBAAA,GAAO,IAAI,CAACP,OAAO,CAAC1G,GAAG,KAAhBiH,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAkB/I,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACsI,KAAK,CAACvF,EAAE,EAAEuB,IAAI,EAAE;AAAC,MAAA,GAAGtB,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;MAAE,GAAG;QAAE,CAACG,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AAClJ,GAAA;EACA,MAAMK,MAAMA,CAAEjG,EAAa,EAAEuB,IAAW,EAAEtB,SAAgB,EAAE,EAAA;AAAA,IAAA,IAAAiG,kBAAA,CAAA;IACxD,MAAM;AAAC5I,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAAgH,CAAAA,kBAAA,GAAO,IAAI,CAACT,OAAO,CAAC1G,GAAG,KAAhBmH,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAkBjJ,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACgJ,MAAM,CAACjG,EAAE,EAAEuB,IAAI,EAAE;AAAC,MAAA,GAAGtB,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;MAAE,GAAG;QAAE,CAACG,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AACnJ,GAAA;EACA,MAAMO,MAAMA,CAAEnG,EAAa,EAAEC,SAAgB,EAAE,EAAA;AAAA,IAAA,IAAAmG,kBAAA,CAAA;IAC3C,MAAM;AAAC9I,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAAkH,CAAAA,kBAAA,GAAO,IAAI,CAACX,OAAO,CAAC1G,GAAG,qBAAhBqH,kBAAA,CAAkBnJ,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACkJ,MAAM,CAACnG,EAAE,EAAE;AAAC,MAAA,GAAGC,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;MAAE,GAAG;QAAE,CAACG,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AAC7I,GAAA;EAEA,MAAMpD,IAAIA,CAACxC,EAAa,EAAEC,SAAgB,EAAE,EAAA;AAAA,IAAA,IAAAoG,kBAAA,CAAA;IACxC,MAAM;AAAC/I,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAAmH,CAAAA,kBAAA,GAAO,IAAI,CAACZ,OAAO,CAAC1G,GAAG,qBAAhBsH,kBAAA,CAAkBpJ,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACuF,IAAI,CAACxC,EAAE,EAAE;AAAC,MAAA,GAAGC,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;AAAEgE,MAAAA,UAAU,EAAE,IAAI;MAAE,GAAG;QAAE,CAAC7D,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AAC7J,GAAA;AACA,EAAA,MAAMU,KAAKA,CAAErG,MAAA,GAAgB,EAAE,EAAA;AAAA,IAAA,IAAAsG,kBAAA,CAAA;IAC3B,MAAM;AAACjJ,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAC1D,IAAA,OAAA,CAAAqH,kBAAA,GAAO,IAAI,CAACd,OAAO,CAAC1G,GAAG,KAAhBwH,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAkBtJ,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACqJ,KAAK,CAAC;AAAC,MAAA,GAAGrG,MAAmB;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;AAAEgE,MAAAA,UAAU,EAAE,IAAI;MAAE,GAAG;QAAE,CAAC7D,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AACvK,GAAA;EACA,MAAMY,OAAOA,CAAEjF,IAAW,EAAEtB,SAAe,EAAE,EAAA;AAAA,IAAA,IAAAwG,kBAAA,CAAA;IACzC,MAAM;AAACnJ,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAAuH,CAAAA,kBAAA,GAAO,IAAI,CAAChB,OAAO,CAAC1G,GAAG,qBAAhB0H,kBAAA,CAAkBxJ,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACuJ,OAAO,CAACjF,IAAI,EAAE;AAAC,MAAA,GAAGtB,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;AAAEgE,MAAAA,UAAU,EAAE,IAAI;MAAE,GAAG;QAAE,CAAC7D,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AAClK,GAAA;EACA,MAAMc,MAAMA,CAAE1G,EAAa,EAAEuB,IAAW,EAAEtB,SAAe,EAAE,EAAA;AAAA,IAAA,IAAA0G,mBAAA,CAAA;IACvD,MAAM;AAACrJ,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAAyH,CAAAA,mBAAA,GAAO,IAAI,CAAClB,OAAO,CAAC1G,GAAG,KAAhB4H,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAA,CAAkB1J,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACyJ,MAAM,CAAC1G,EAAE,EAAEuB,IAAI,EAAE;AAAC,MAAA,GAAGtB,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;AAAEgE,MAAAA,UAAU,EAAE,IAAI;MAAE,GAAG;QAAE,CAAC7D,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AACrK,GAAA;EACA,MAAMgB,OAAOA,CAAE5G,EAAa,EAAEuB,IAAW,EAAEtB,SAAe,EAAE,EAAA;AAAA,IAAA,IAAA4G,mBAAA,CAAA;IACxD,MAAM;AAACvJ,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAA2H,CAAAA,mBAAA,GAAO,IAAI,CAACpB,OAAO,CAAC1G,GAAG,KAAhB8H,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAA,CAAkB5J,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAAC2J,OAAO,CAAC5G,EAAE,EAAEuB,IAAI,EAAE;AAAC,MAAA,GAAGtB,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;AAAEgE,MAAAA,UAAU,EAAE,IAAI;MAAE,GAAG;QAAE,CAAC7D,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AACtK,GAAA;EACA,MAAMkB,OAAOA,CAAE9G,EAAa,EAAEC,SAAe,EAAE,EAAA;AAAA,IAAA,IAAA8G,mBAAA,CAAA;IAC3C,MAAM;AAACzJ,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAA6H,CAAAA,mBAAA,GAAO,IAAI,CAACtB,OAAO,CAAC1G,GAAG,qBAAhBgI,mBAAA,CAAkB9J,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAAC6J,OAAO,CAAC9G,EAAE,EAAE;AAAC,MAAA,GAAGC,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;AAAEgE,MAAAA,UAAU,EAAE,IAAI;MAAE,GAAG;QAAE,CAAC7D,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AAChK,GAAA;AAEH;;AClFD;AACA;AAEA;AACO,MAAMoB,aAAa,GAAGA,CAACC,KAAa,EAAExB,OAAY,KAAU;EAAA,IAAAyB,YAAA,EAAAvB,eAAA,EAAAwB,gBAAA,EAAAC,qBAAA,EAAAC,iBAAA,CAAA;EACjE,MAAMtK,UAAU,GAAG,CAAAmK,CAAAA,YAAA,GAAAzB,OAAO,CAAC1G,GAAG,KAAXmI,IAAAA,IAAAA,YAAA,CAAahI,GAAG,IAAA,IAAA,GAAA,KAAA,CAAA,GAAhBgI,YAAA,CAAahI,GAAG,CAAG,gBAAgB,CAAC,KAAI,EAAE,CAAA;AAC7D,EAAA,MAAMoI,QAAQ,GAAGvK,UAAU,CAACO,SAAS,IAAI,MAAM,CAAA;AAC/C,EAAA,MAAMiK,SAAS,GAAGxK,UAAU,CAACI,MAAM,IAAI,OAAO,CAAA;AAC9C,EAAA,MAAMqK,cAAc,GAAGzK,UAAU,CAAC0K,WAAW,IAAI,kBAAkB,CAAA;AACnE,EAAA,MAAMC,OAAO,GAAG3K,UAAU,CAAC4K,QAAQ,IAAI,eAAe,CAAA;AAEtD,EAAA,MAAMnF,IAAI,GAAGA,CAACoF,GAAQ,EAAEC,IAAY,KAClC9F,MAAM,CAAC8F,IAAI,IAAI,EAAE,CAAC,CACfC,KAAK,CAAC,GAAG,CAAA;AACV;AAAA,GACCC,MAAM,CAAC,CAACC,CAAM,EAAEC,CAAS,KAAMD,CAAC,GAAGA,CAAC,CAACC,CAAC,CAAC,GAAG/K,SAAU,EAAE0K,GAAG,CAAC,CAAA;EAE/D,MAAMM,WAAW,GAAIC,CAAU,IAAI;AAAA,IAAA,IAAAC,cAAA,CAAA;IACjC,IAAI,OAAOD,CAAC,KAAK,QAAQ,EAAE,OAAOA,CAAC,CAACnH,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAImH,CAAC,CAAChG,MAAM,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAA;IAC7E,IAAIgG,CAAC,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE,OAAO,CAAY,QAAA,EAAA,CAAA,CAAAC,cAAA,GAAAD,CAAS,CAACnM,WAAW,KAAA,IAAA,GAAA,KAAA,CAAA,GAArBoM,cAAA,CAAuB/I,IAAI,KAAI,QAAQ,CAAG,CAAA,CAAA,CAAA;IAC7F,IAAI;MAAE,OAAO0C,MAAM,CAACoG,CAAC,CAAC,CAAA;AAAE,KAAC,CAAC,MAAM;AAAE,MAAA,OAAO,eAAe,CAAA;AAAE,KAAA;GAC3D,CAAA;EAED,MAAMtE,KAAK,GAAGrB,IAAI,CAACiD,OAAO,CAACxF,MAAM,EAAEuH,cAAc,CAAC,CAAA;EAClD,MAAM1E,QAAQ,GAAGN,IAAI,CAACiD,OAAO,CAACxF,MAAM,EAAEyH,OAAO,CAAC,CAAA;EAC9C,MAAMW,SAAS,GAAA1C,CAAAA,eAAA,GAAGF,OAAO,CAACxF,MAAM,KAAd0F,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAA,CAAiB4B,SAAS,CAAC,CAAA;EAC7C,MAAM3B,IAAI,GAAAuB,CAAAA,gBAAA,GAAG1B,OAAO,CAACxF,MAAM,KAAdkH,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAAiBG,QAAQ,CAAC,CAAA;EAEvC,MAAMgB,SAAS,GAAG,OAAOzE,KAAK,CAAA;EAC9B,MAAM5B,QAAQ,GAAG,OAAO4B,KAAK,KAAK,QAAQ,GAAG,CAACA,KAAK,CAAC3B,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAEC,MAAM,GAAG,CAAC,CAAC,CAAA;EACnF,IAAIoG,QAAQ,GAAwBrL,SAAS,CAAA;EAC7C,IAAI;AACF;AACA;IACA,MAAM;AAAE4H,MAAAA,SAAAA;AAAW,KAAA,GAAG0D,OAAO,CAAC,aAAa,CAAC,CAAA;AAC5C,IAAA,MAAM3D,MAAM,GAAG,OAAOhB,KAAK,KAAK,QAAQ,GAAGiB,SAAS,CAACjB,KAAK,CAAC,GAAG,IAAI,CAAA;IAClE0E,QAAQ,GAAG,CAAC,CAAC1D,MAAM,IAAI,CAAC,EAACA,MAAM,IAAA,IAAA,IAANA,MAAM,CAAEtG,OAAO,CAAA,CAAA;AAC1C,GAAC,CAAC,MAAM;AACNgK,IAAAA,QAAQ,GAAGrL,SAAS,CAAA;AACtB,GAAA;AAEA;AACAgB,EAAAA,OAAO,CAACC,GAAG,CAAC,aAAa,EAAE8I,KAAK,EAAE;IAChCO,cAAc;IACdE,OAAO;IACPY,SAAS;AACTG,IAAAA,YAAY,EAAEP,WAAW,CAACrE,KAAK,CAAC;IAChC5B,QAAQ;AAAE;IACVsG,QAAQ;AAAE;IACVG,YAAY,EAAE,OAAO5F,QAAQ;AAC7B6F,IAAAA,eAAe,EAAET,WAAW,CAACpF,QAAQ,CAAC;IACtCyE,SAAS;AACTqB,IAAAA,UAAU,EAAEP,SAAS,GAAG,EAAAjB,qBAAA,GAAAiB,SAAS,CAACrM,WAAW,KAArBoL,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAAuB/H,IAAI,KAAI,OAAOgJ,SAAS,GAAG,OAAOA,SAAS;AAC1FQ,IAAAA,WAAW,EAAE,CAAC,EAAER,SAAS,KAAKA,SAAS,CAAC3G,GAAG,IAAI2G,SAAS,CAACrI,EAAE,CAAC,CAAC;AAC7D8I,IAAAA,QAAQ,EAAElD,IAAI,GAAG,EAAAyB,iBAAA,GAAAzB,IAAI,CAAC5J,WAAW,KAAhBqL,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAA,CAAkBhI,IAAI,KAAI,OAAOuG,IAAI,GAAG,OAAOA,IAAI;IACpEmD,QAAQ,EAAEnD,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,GAAGlG,MAAM,CAACC,IAAI,CAACiG,IAAI,CAAC,CAAC5E,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG4E,IAAAA;AAC/E,GAAA,CAAC,CAAA;AACJ,CAAC;;ACnDM,MAAMoD,UAAU,GAAG,UAAS;AAEtBC,MAAAA,SAAS,GAAIxD,OAA4B,IAAQ;EAC1D,MAAMoC,IAAI,GAAGpC,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,YAAY,CAAC,IAAI8J,UAAU,CAAA;AACxD,EAAA,OAAOxG,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,QAAQ4H,IAAQ,CAAA,CAAA,EAAApC,OAAO,CAACoC,IAAI,IAAIpC,OAAO,CAACzF,GAAI,CAAA,CAAC,IAAI9C,SAAS,CAAA;AAC1F,EAAC;AAEM,MAAMgM,UAAU,GAAG,OAAOzD,OAAmB,EAAErB,OAAkE,KAAiB;AACrI,EAAA,IAAI+E,EAAE,GAAGF,SAAS,CAACxD,OAAO,CAAC,CAAA;AAC3B,EAAA,IAAG,CAAC0D,EAAE,IAAI1D,OAAO,CAACzF,EAAE,EAAE;IAClBmJ,EAAE,GAAG,MAAM,IAAI3D,QAAQ,CAACC,OAAO,CAACoC,IAAI,EAAEpC,OAAO,EAAE;AAAE3E,MAAAA,SAAS,EAAE,CAAAsD,OAAO,oBAAPA,OAAO,CAAEtD,SAAS,MAAK,KAAA;KAAO,CAAC,CAAC5B,GAAG,CAACuG,OAAO,CAACzF,EAAE,EAAE;AAAEoJ,MAAAA,YAAY,EAAE,IAAI;AAAEhI,MAAAA,UAAU,EAAE,IAAI;AAAED,MAAAA,UAAU,EAAE,CAAC,EAACiD,OAAO,IAAPA,IAAAA,IAAAA,OAAO,CAAEjD,UAAU,CAAA;MAAE,IAAG,CAAAiD,OAAO,IAAPA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEnE,MAAM,KAAI,EAAE,CAAA;AAAE,KAAA,CAAC,CAAA;AACtN,GAAA;AACA,EAAA,OAAOkJ,EAAE,CAAA;AACb,EAAC;MAEYE,SAAS,GAAGA,CAAC5D,OAAmB,EAAE6D,GAAO,KAAgB;EAClE,MAAMzB,IAAI,GAAGpC,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,YAAY,CAAC,IAAI8J,UAAU,CAAA;AACxDvD,EAAAA,OAAO,CAACxF,MAAM,GAAGsJ,eAAI,CAAC9D,OAAO,CAACxF,MAAM,EAAU,CAAA,KAAA,EAAA4H,IAAQ,CAAA,CAAA,EAAApC,OAAO,CAACoC,IAAQ,CAAA,CAAA,EAAA,CAAAyB,GAAG,IAAHA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAG,CAAE5H,GAAG,KAAI+D,OAAO,CAACzF,EAAI,CAAA,CAAA,EAAEsJ,GAAG,CAAC,CAAA;AACpG,EAAA,OAAO7D,OAAO,CAAA;AAClB;;ACLA,MAAM+D,SAAS,GAAG,GAAG,CAAA;AAkBd,MAAMC,OAAO,GAAY,IAAc;AAEvC,MAAMC,OAAO,GAAY,IAAc;AAuCjCC,MAAAA,WAAW,GAAG,MAAUlE,OAAuB,IAA6B;EACrF,MAAMpI,MAAM,GAAGoI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAe,CAAA;AAC9D,EAAA,MAAM/B,MAAM,GAAGqF,eAAI,CAACiD,OAAO,EAAE,CAAC,MAAM,EAAEpI,MAAM,CAACF,MAAM,CAAC,CAAC,CAAA;AACrD,EAAA,IAAIA,MAAM,EAAE;AACRsI,IAAAA,OAAO,GAAG8D,eAAI,CAAC9D,OAAO,EAAE,CAACpI,MAAM,CAACC,SAAS,EAAED,MAAM,CAACF,MAAM,CAAC,EAAEA,MAAM,CAAC,CAAA;AACtE,GAAA;EACA,IAAI;AACA;AACAsI,IAAAA,OAAO,GAAG,MAAM9D,2BAAY,CAAC,KAAK,CAAC,CAAC8D,OAAc,CAAC,CAC9CzH,KAAK,CAAC,MAAK;AACR,MAAA,OAAOyH,OAAO,CAAA;AAClB,KAAC,CAAC,CAAA;GACT,CAAC,OAAOmE,CAAC,EAAE;AACR,IAAA,OAAOnE,OAAO,CAAA;AAClB,GAAA;AACA,EAAA,OAAOA,OAAO,CAAA;AAClB,EAAC;AAEYoE,MAAAA,QAAQ,GAAG,MAAUpE,OAAuB,IAA6B;EAClF,MAAMpI,MAAM,GAAGoI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAe,CAAA;AAC9D,EAAA,MAAM/B,MAAM,GAAGqF,eAAI,CAACiD,OAAO,EAAE,CAAC,MAAM,EAAEpI,MAAM,CAACF,MAAM,CAAC,CAAC,CAAA;AACrD,EAAA,IAAIA,MAAM,EAAEsI,OAAO,GAAG8D,eAAI,CAAC9D,OAAO,EAAE,CAACpI,MAAM,CAACC,SAAS,EAAED,MAAM,CAACF,MAAM,CAAC,EAAEA,MAAM,CAAC,CAAA;AAC9E;AACA,EAAA,OAAOwE,2BAAY,CAAC,KAAK,CAAC,CAAC8D,OAAc,CAAC,CAAA;AAC9C,EAAC;AAED,MAAMqE,SAAS,GAAG,OAAOlI,IAAY,EAAEwC,OAAsB,EAAEjG,GAAa,KAAI;EAC5E,IAAI;AAAA,IAAA,IAAA4L,EAAA,CAAA;AACA;IACA,IAAIC,cAAc,GAAuBpI,IAAW,CAAA;IACpD,IAAI,CAACoI,cAAc,EAAE;MACjB,IAAI;AACA;AACAA,QAAAA,cAAc,GAAGnI,oBAAS,CAACD,IAAW,CAAQ,CAAA;OACjD,CAAC,OAAOgI,CAAC,EAAE;AACRI,QAAAA,cAAc,GAAG9M,SAAS,CAAA;AAC9B,OAAA;AACJ,KAAA;AACA,IAAA,IAAI,CAAC8M,cAAc,IAAI,OAAOA,cAAc,KAAK,QAAQ,IAAIA,cAAc,CAAChI,IAAI,EAAE,KAAK,EAAE,EAAE;MACvF,OAAO;AAACiI,QAAAA,EAAE,EAAE,KAAK;QAAEhM,GAAG,EAAE,CAAC,+BAA+B,CAAA;OAAE,CAAA;AAC9D,KAAA;IAEA,IAAIkK,CAAC,GAAG,MAAM+B,qBAAU,CAACF,cAAc,EAAE5F,OAAO,CAAC,CAAA;AACjD,IAAA,IAAI,EAAA2F,CAAAA,EAAA,GAAC5B,CAAC,KAAD4B,IAAAA,IAAAA,EAAA,CAAGE,EAAE,CAAI7F,IAAAA,OAAO,CAAC+F,oBAAoB,EAAE;AACxC;MACA,MAAMC,eAAe,GAAGhG,OAAO,CAAC+F,oBAAoB,CAACE,GAAG,CAACC,EAAE,IAAG;AAAA,QAAA,IAAAC,kBAAA,CAAA;AAC1D,QAAA,MAAMC,MAAM,GAAG;AACX,UAAA,GAAGF,EAAE;AACLG,UAAAA,UAAU,EAAE;YACR,GAAGH,EAAE,CAACG,UAAU;YAChBC,GAAG,EAAEJ,EAAE,CAACG,UAAU,CAACC,GAAG,KAAKlB,SAAS,GAAGA,SAAS,GAAG;cAC/C,GAAGc,EAAE,CAACG,UAAU,CAACC,GAAAA;AACpB,aAAA;AACJ,WAAA;SACS,CAAA;AACd,QAAA,IAAK,EAAAH,kBAAA,GAAAC,MAAM,CAACC,UAAkB,cAAAF,kBAAA,GAAzBA,kBAAA,CAA2BG,GAAG,KAA9BH,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAgCI,SAAS,MAAKnB,SAAS,EAAE;UACzDgB,MAAM,CAACC,UAAkB,CAACC,GAAG,CAACE,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA;AACnD,SAAA;AACA,QAAA,OAAOJ,MAAM,CAAA;AACjB,OAAC,CAAC,CAAA;AACF,MAAA,IAAIrM,GAAG,EAAE;QACL,IAAI0G,MAAM,GAAQ3H,SAAS,CAAA;QAC3B,IAAI;AACA2H,UAAAA,MAAM,GAAGC,oBAAS,CAACkF,cAAc,CAAC,CAAA;SACrC,CAAC,MAAM,EACR;QACA9L,OAAO,CAACC,GAAG,CAAC,0BAA0B,EAAEiM,eAAe,EAAEvF,MAAM,CAAC,CAAA;AACpE,OAAA;AACAsD,MAAAA,CAAC,GAAG,MAAM+B,qBAAU,CAACF,cAAc,EAAE;AACjC,QAAA,GAAG5F,OAAO;AAAE+F,QAAAA,oBAAoB,EAAEC,eAAAA;AACrC,OAAA,CAAC,CAAA;MACF,IAAIjM,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,6BAA6B,EAAEgK,CAAC,CAAC,CAAA;AAC1D,KAAA;AACA,IAAA,OAAOA,CAAC,CAAA;GACX,CAAC,OAAOyB,CAAM,EAAE;IACb,OAAO;AAACK,MAAAA,EAAE,EAAE,KAAK;AAAEhM,MAAAA,GAAG,EAAE,CAAC2L,CAAC,CAAC3N,OAAO,CAAA;KAAE,CAAA;AACxC,GAAA;AACJ,CAAC,CAAA;AACM,MAAM4O,YAAY,GAAG,OAAOC,GAAqB,EAAE3M,GAAa,KAAwB;AAC3F,EAAA,IAAIgK,CAAC,GAAQ;AAAC8B,IAAAA,EAAE,EAAE,KAAK;AAAExH,IAAAA,KAAK,EAAE,EAAA;GAAG,CAAA;EAEnC,IAAI;AACA,IAAA,KAAK,MAAMsI,CAAC,IAAID,GAAG,EAAE;AAAA,MAAA,IAAAE,GAAA,CAAA;AACjB,MAAA,IAAI7M,GAAG,EAAE;QACL,IAAI0G,MAAM,GAAQ3H,SAAS,CAAA;QAC3B,IAAI;UACA,IAAI,OAAO4N,GAAG,CAACC,CAAC,CAAC,CAACnJ,IAAI,KAAK,QAAQ,EAAEiD,MAAM,GAAGC,oBAAS,CAACgG,GAAG,CAACC,CAAC,CAAC,CAACnJ,IAAI,CAAC,CAAA;SACvE,CAAC,MAAM,EACR;QACA1D,OAAO,CAACC,GAAG,CAAC,gBAAgB,EAAE2M,GAAG,CAACC,CAAC,CAAC,EAAElG,MAAM,CAAC,CAAA;AACjD,OAAA;MACA,IAAI,EAAA,CAAAmG,GAAA,GAAC7C,CAAC,aAAD6C,GAAA,CAAGf,EAAE,CAAE,EAAA;QACR,MAAM;UAACrI,IAAI;UAAE,GAAGwC,OAAAA;AAAQ,SAAA,GAAG0G,GAAG,CAACC,CAAC,CAAC,CAAA;QACjC5C,CAAC,GAAG,MAAM2B,SAAS,CAAClI,IAAI,EAAEwC,OAAO,EAAEjG,GAAG,CAAC,CAAA;QACvC,IAAIA,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,oBAAoB,EAAEgK,CAAC,CAAC,CAAA;AACjD,OAAC,MAAM,MAAA;AACX,KAAA;AACA,IAAA,OAAOA,CAAC,CAAA;GACX,CAAC,OAAOyB,CAAM,EAAE;IACb,OAAO;AAACK,MAAAA,EAAE,EAAE,KAAK;AAAEhM,MAAAA,GAAG,EAAE,CAAC2L,CAAC,CAAC3N,OAAO,CAAA;KAAE,CAAA;AACxC,GAAA;AACJ,EAAC;AASM,MAAMgP,iBAAiB,GAAGA,CAAIC,IAA+B,EAAE7N,MAAoB,EAAE+G,OAAyB,KAAI;EACrH,OAAO,MAAOqB,OAAuB,IAAwB;AAAA,IAAA,IAAA0F,GAAA,CAAA;AACzD,IAAA,MAAMhN,GAAG,GAAGiG,OAAO,IAAPA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEjG,GAAG,CAAA;IACxB,IAAIiN,OAAO,GAAG5I,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE5C,MAAM,CAACoK,WAAW,CAAW,CAAA;IAChE,IAAG,CAAC2D,OAAO,EAAC;MACR,MAAMC,OAAO,GAAG5F,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAW,CAAA;MAC3D,MAAMqI,SAAS,GAAG,CAAA8D,OAAO,oBAAPA,OAAO,CAAElO,MAAM,KAAI,OAAO,CAAA;AAC5CiO,MAAAA,OAAO,GAAG5I,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAACsH,SAAS,EAAE,MAAM,CAAC,CAAW,CAAA;AACjE,KAAA;IACA,IAAIpJ,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,kBAAkB,EAAEiN,OAAO,CAAC,CAAA;IACjD,IAAIxJ,IAAI,GAAGwJ,OAA4B,CAAA;IACvC,IAAI;AACA;AACA,MAAA,MAAME,KAAK,GAAGzJ,oBAAS,CAACuJ,OAAc,CAAC,CAAA;MACvC,IAAIE,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE1J,IAAI,GAAG0J,KAAK,CAAA;MACpD,IAAInN,GAAG,IAAIiN,OAAO,KAAKxJ,IAAI,EAAE1D,OAAO,CAACC,GAAG,CAAC,wCAAwC,CAAC,CAAA;KACrF,CAAC,OAAOyL,CAAM,EAAE;AACb,MAAA,IAAIzL,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,+CAA+C,EAAEyL,CAAC,IAAA,IAAA,GAAA,KAAA,CAAA,GAADA,CAAC,CAAE3N,OAAO,CAAC,CAAA;AACrF,KAAA;AAEA,IAAA,MAAM6G,QAAQ,GAAG,CAAAsB,OAAO,IAAPA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEtB,QAAQ,KAAIN,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE5C,MAAM,CAACsK,QAAQ,CAAW,CAAA;IACrF,IAAIxJ,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,qBAAqB,EAAE+M,IAAI,CAAC,CAAA;AACjD,IAAA,IAAIK,OAAqE,CAAA;IACzE,MAAMC,EAAE,GAAG,CAAApH,OAAO,oBAAPA,OAAO,CAAEoH,EAAE,KAAI,EAAE,CAAA;AAC5B,IAAA,IAAI5J,IAAI,KAAK4J,EAAE,KAAK,GAAG,IAAIA,EAAE,CAAC5L,QAAQ,CAAC6F,OAAO,CAACgG,MAAM,CAAC,CAAC,EAAEF,OAAO,GAAGA,CAACG,EAAW,EAAEC,UAAuB,KAAKd,YAAY,CAAC,CAACK,IAAI,IAAI,EAAE,EAAEb,GAAG,CAACuB,CAAC,IAAG;MAC3I,OAAO;QACHhK,IAAI,EAAE8J,EAAE,IAAI9J,IAAI;QAChBkB,QAAQ,EAAE,CAAA6I,UAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAVA,UAAU,CAAErJ,GAAG,KAAIQ,QAAQ;QACrCqH,oBAAoB,EAAE,CAACyB,CAAC,CAAA;OAC3B,CAAA;AACL,KAAC,CAAC,EAAEzN,GAAG,CAAC,CAAA,KACHoN,OAAO,GAAGA,CAACG,EAAW,EAAEC,UAAuB,KAAK7B,SAAS,CAAC4B,EAAE,IAAI9J,IAAI,EAAE;MAC3EkB,QAAQ,EAAE,CAAA6I,UAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAVA,UAAU,CAAErJ,GAAG,KAAIQ,QAAQ;AACrCqH,MAAAA,oBAAoB,EAAEe,IAAAA;KACzB,EAAE/M,GAAG,CAAuB,CAAA;AAC7B,IAAA,IAAIgK,CAAC,GAAG,MAAMoD,OAAO,EAAE,CAAA;AACvB9F,IAAAA,OAAO,CAACxF,MAAM,CAAC4L,gBAAgB,GAAG1D,CAAC,CAAA;IACnC,IAAIhK,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,kBAAkB,EAAEgK,CAAC,CAAC,CAAA;IAC3C,IAAAgD,CAAAA,GAAA,GAAIhD,CAAC,KAAA,IAAA,IAADgD,GAAA,CAAGlB,EAAE,EAAE,OAAO9B,CAAC,CAAA;AACnB,IAAA,MAAM2D,EAAE,GAAG,CAAC,CAAA1H,OAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAPA,OAAO,CAAE2H,YAAY,KAAI,EAAE,EAAEC,MAAM,CAACJ,CAAC,IAAI,CAAC,CAACA,CAAC,CAAC,CAAA;IACzD,IAAIzN,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,oBAAoB,EAAE2N,EAAE,CAAC,CAAA;AAC9C,IAAA,IAAIA,EAAE,EAAE;AACJ,MAAA,MAAMlP,aAAa,GAAG,CAAAS,MAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAANA,MAAM,CAAE4O,WAAW,KAAIxG,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAW,CAAA;AACxF,MAAA,MAAMgN,YAAY,GAAGnK,MAAM,CAACS,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAK,CAAA,EAAArD,aAAa,CAACO,MAAM,MAAM,IAAI,EAAE,CAAC,CAAQ,CAAA;AAC7F,MAAA,MAAMgP,IAAI,GAAG,MAAM,IAAI3G,QAAQ,CAAC5I,aAAa,CAACwP,kBAAkB,IAAI,MAAM,EAAE3G,OAAO,CAAC,CAACvE,IAAI,CAAC;AACtFf,QAAAA,KAAK,EAAE;UACHU,MAAM,EAAEiL,EAAE,CAAC3J,MAAM;AACjBkK,UAAAA,OAAO,EAAE;AAACC,YAAAA,GAAG,EAAER,EAAAA;AAAG,WAAA;SACrB;AACD3K,QAAAA,UAAU,EAAE,IAAI;AAChBC,QAAAA,UAAU,EAAE,IAAI;AAChBmL,QAAAA,mBAAmB,EAAE,IAAI;QACzB,IAAG,CAAAnI,OAAO,IAAPA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEoI,cAAc,KAAI,EAAE,CAAA;OACnC,CAAC,CACGxO,KAAK,CAACC,GAAG,IAAIC,OAAO,CAACC,GAAG,CAAC,oCAAoCF,GAAG,CAAChC,OAAS,CAAA,CAAA,CAAC,CAAC,CAAA;MACjF,IAAIkC,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,MAAM,EAAEgO,IAAI,CAAC,CAAA;AAClC,MAAA,IAAIA,IAAI,IAAA,IAAA,IAAJA,IAAI,CAAE5K,IAAI,EAAE;AACZ,QAAA,KAAK,MAAMkL,GAAG,IAAIN,IAAI,CAAC5K,IAAI,EAAE;UACzB,KAAK,MAAM0G,CAAC,IAAIwE,GAAG,CAACN,IAAI,IAAI,EAAE,EAAE;YAC5B,IAAIhO,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,WAAW,EAAE8J,CAAC,EAAEwE,GAAG,CAACN,IAAI,CAAClE,CAAC,CAAC,CAACyE,MAAM,EAAER,YAAY,CAAC,CAAA;YACtE,IAAI,CAACO,GAAG,CAACN,IAAI,CAAClE,CAAC,CAAC,CAACyE,MAAM,IAAI,EAAE,EAAErC,GAAG,CAAEuB,CAAM,IAAK7J,MAAM,CAAC6J,CAAC,CAAC,CAAC,CAAChM,QAAQ,CAACsM,YAAY,CAAC,EAAE;AAAA,cAAA,IAAAS,GAAA,CAAA;cAC9E,IAAI;AACA,gBAAA,MAAMC,UAAU,GAAG/K,oBAAS,CAAC4K,GAAG,CAACN,IAAI,CAAClE,CAAC,CAAC,CAACrG,IAAI,CAAC,CAAA;gBAC9C,IAAIzD,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,iBAAiB,EAAEyO,UAAU,CAAC,CAAA;AACnD,gBAAA,IAAIA,UAAU,EAAE;AACZzE,kBAAAA,CAAC,GAAG,MAAMoD,OAAO,CAACqB,UAAU,EAAE;oBAACtK,GAAG,EAAEmK,GAAG,CAAC/H,GAAAA;AAAG,mBAAC,CAAC,CAAA;kBAC7C,IAAIvG,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,gBAAgB,EAAEgK,CAAC,CAAC,CAAA;AAC7C,iBAAA;eACH,CAAC,OAAOyB,CAAM,EAAE;AACb1L,gBAAAA,OAAO,CAACC,GAAG,CAAC,CAAA,+BAAA,EAAkCsO,GAAG,CAAC/K,GAAG,CAAA,MAAA,EAASkI,CAAC,CAAC3N,OAAO,CAAA,CAAE,CAAC,CAAA;AAC9E,eAAA;AACA,cAAA,IAAImI,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEjG,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,gBAAgB,EAAEgK,CAAC,CAAC,CAAA;cAClD,IAAAwE,CAAAA,GAAA,GAAIxE,CAAC,KAAA,IAAA,IAADwE,GAAA,CAAG1C,EAAE,EAAE,OAAO9B,CAAC,CAAA;AACvB,aAAA;AACJ,WAAA;AACJ,SAAA;AACJ,OAAA;AACJ,KAAA;AACA,IAAA,OAAOA,CAAC,CAAA;GACX,CAAA;AACL,EAAC;MASY0E,iBAAiB,GAAGA,CAAC3B,IAA4B,EAAE7N,MAA6B,KAA+B;EAExH,MAAMyP,UAAU,GAAG7H,wBAAa,CAAC;IAACC,SAAS,EAAE7H,MAAM,CAAC0H,MAAAA;AAAO,GAAA,CAAC,CAACL,GAAG,EAAE,CAAA;EAClE,IAAI,CAAClD,KAAK,CAACC,OAAO,CAACyJ,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;AACnC,EAAA,OAAOA,IAAI,CAACb,GAAG,CAACuB,CAAC,IAAG;IAChB,OAAO;MACHnB,UAAU,EAAEjJ,KAAK,CAACC,OAAO,CAACmK,CAAC,CAAC,GAAGmB,wBAAa,CAAC;AACzCC,QAAAA,IAAI,EAAE;UAAC3J,MAAM,EAAEhG,MAAM,CAAC4P,aAAa;UAAEC,QAAQ,EAAE7P,MAAM,CAAC8P,eAAAA;SAAgB;AACtEzC,QAAAA,GAAG,EAAE;AAACC,UAAAA,SAAS,EAAEiB,CAAC,CAAC,CAAC,CAAC;AAAEhB,UAAAA,QAAQ,EAAE,OAAOgB,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,CAACA,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAA;AAAE,SAAA;OAC7E,EAAEvO,MAAM,CAAC,GAAG0P,wBAAa,CAACnB,CAAC,EAAEvO,MAAM,CAAC;AACrCyP,MAAAA,UAAAA;KACH,CAAA;AACL,GAAC,CAA8B,CAAA;AACnC,EAAC;MAKYM,SAAS,GAAGA,CAACjD,oBAA6B,EAAE/F,OAAsC,KAAI;EAC/F,OAAO,MAAOqB,OAAoB,IAA0B;AAAA,IAAA,IAAA4H,GAAA,CAAA;AACxD,IAAA,MAAMzQ,aAAa,GAAG,CAAAwH,OAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAPA,OAAO,CAAE6H,WAAW,KAAIxG,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAW,CAAA;AAEzF,IAAA,IAAIiJ,CAAC,GAAQ;AAAC8B,MAAAA,EAAE,EAAE,KAAK;AAAExH,MAAAA,KAAK,EAAE,EAAA;KAAG,CAAA;AAEnC,IAAA,MAAMyI,IAAI,GAA8B2B,iBAAiB,CAAC1C,oBAA8C,EAAEvN,aAAsC,CAAC,CAAA;IAEjJ,IAAIsO,IAAI,CAAC/I,MAAM,EAAE;AACbgG,MAAAA,CAAC,GAAG,MAAM8C,iBAAiB,CAACC,IAAI,EAAEtO,aAA6B,EAAEwH,OAAO,CAAC,CAACqB,OAAO,CAAC,CAAA;AAElF;KACH,MAAM,IAAI0E,oBAAoB,KAAK,GAAG,EAAEhC,CAAC,CAAC8B,EAAE,GAAG,IAAI,CAAA;AACpD,IAAA,IAAA,CAAAoD,GAAA,GAAIlF,CAAC,aAADkF,GAAA,CAAGpD,EAAE,EAAE;AACPxE,MAAAA,OAAO,CAACxF,MAAM,CAACqN,aAAa,GAAG,IAAI,CAAA;AACnC7H,MAAAA,OAAO,CAACxF,MAAM,CAACsN,IAAI,GAAG,IAAI,CAAA;AAC1B,MAAA,OAAO9H,OAAO,CAAA;AAClB,KAAC,MAAM;AAAA,MAAA,IAAA+H,GAAA,CAAA;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,MAAA,IAAIpJ,OAAO,IAAPA,IAAAA,IAAAA,OAAO,CAAEjG,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,yBAAyB,EAAEiG,OAAO,oBAAPA,OAAO,CAAEqJ,aAAa,CAAC,CAAA;AAChF,MAAA,IAAIrJ,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEqJ,aAAa,EAAE;AACxB,QAAA,IAAIrJ,OAAO,CAACqJ,aAAa,KAAKhE,OAAO,EAAE;AACnChE,UAAAA,OAAO,CAACxF,MAAM,CAACsN,IAAI,GAAG,IAAI,CAAA;AAC1B,UAAA,OAAO9H,OAAO,CAAA;SACjB,MAAM,IAAIjE,KAAK,CAACC,OAAO,CAAC2C,OAAO,CAACqJ,aAAa,CAAC,EAAE;AAC7C,UAAA,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC7N,QAAQ,CAAC6F,OAAO,CAACgG,MAAM,CAAC,EAAE;AACxD,YAAA,IAAIjK,KAAK,CAACC,OAAO,CAACgE,OAAO,CAAClE,IAAI,CAAC,EAAE,MAAM,IAAIxF,KAAK,CAAC,2CAA2C,CAAC,CAAA;YAC7F,KAAK,MAAMkM,CAAC,IAAIxC,OAAO,CAAClE,IAAI,IAAI,EAAE,EAAE;AAChC,cAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC3B,QAAQ,CAACqI,CAAC,CAAC,EAAE;AAC/D,gBAAA,KAAK,MAAMyF,EAAE,IAAIjI,OAAO,CAAClE,IAAI,CAAC0G,CAAC,CAAC,IAAI,EAAE,EAAE;kBACpC,IAAI,CAAC7D,OAAO,CAACqJ,aAAa,CAAC7N,QAAQ,CAAC8N,EAAE,CAAC,EAAE;AACrC,oBAAA,MAAMC,GAAG,GAAGD,EAAE,CAAC5F,KAAK,CAAC,GAAG,CAAC,CAAA;AACzB,oBAAA,IAAI6F,GAAG,CAACxL,MAAM,KAAK,CAAC,EAAE,OAAOsD,OAAO,CAAClE,IAAI,CAAC0G,CAAC,CAAC,CAACyF,EAAE,CAAC,CAAC,KAC5C,IAAI,CAACtJ,OAAO,CAACqJ,aAAa,CAAC7N,QAAQ,CAAC+N,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAOlI,OAAO,CAAClE,IAAI,CAAC0G,CAAC,CAAC,CAACyF,EAAE,CAAC,CAAA;AAChF,mBAAA;AACJ,iBAAA;AACJ,eAAC,MAAM,IAAI,CAACtJ,OAAO,CAACqJ,aAAa,CAAC7N,QAAQ,CAACqI,CAAC,CAAC,EAAE,OAAOxC,OAAO,CAAClE,IAAI,CAAC0G,CAAC,CAAC,CAAA;AACzE,aAAA;AACAxC,YAAAA,OAAO,CAACxF,MAAM,CAACsN,IAAI,GAAG,IAAI,CAAA;AAC1B,YAAA,OAAO9H,OAAO,CAAA;AAClB,WAAA;AACJ,SAAA;AACJ,OAAA;AACA,MAAA,IAAA,CAAA+H,GAAA,GAAIrF,CAAC,aAADqF,GAAA,CAAGvD,EAAE,EAAE;AACPxE,QAAAA,OAAO,CAACxF,MAAM,CAACqN,aAAa,GAAG,IAAI,CAAA;AACnC7H,QAAAA,OAAO,CAACxF,MAAM,CAACsN,IAAI,GAAG,IAAI,CAAA;AAC1B,QAAA,OAAO9H,OAAO,CAAA;AAClB,OAAC,MAAM;AAAA,QAAA,IAAAmI,GAAA,CAAA;AAEH;QACA,MAAM;AAACC,UAAAA,SAAAA;SAAU,GAAGzJ,OAAO,IAAI;UAACyJ,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAA;SAAE,CAAA;AAC5E,QAAA,IAAIA,SAAS,IAAA,IAAA,IAATA,SAAS,CAAE1L,MAAM,EAAE;AACnB;UACA,IAAI2L,YAAY,GAAW,EAAE,CAAA;AAC7B;UACA,IAAIC,SAAS,GAAG,IAAI,CAAA;AACpB,UAAA,MAAMC,cAAc,GAAG,MAAOC,KAAsB,IAAI;YACpD,IAAIC,WAAW,GAAG,EAAE,CAAA;AACpB,YAAA,MAAMC,UAAU,GAAGF,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAA;YACnC,IAAIG,SAAS,GAAG,CAAC,CAAC,CAAA;AAClB,YAAA,IAAID,UAAU,EAAEC,SAAS,GAAG,CAAC,CAAC,KACzB;AACD;AACAF,cAAAA,WAAW,GAAID,KAAK,CAAC,CAAC,CAAc,CAAC5D,GAAG,CAACuB,CAAC,IAAIA,CAAC,CAAC9D,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;cAC9DsG,SAAS,GAAGF,WAAW,CAAC5P,OAAO,CAACmH,OAAO,CAACgG,MAAM,CAAC,CAAA;AACnD,aAAA;AACA;AACA,YAAA,IAAI2C,SAAS,GAAG,CAAC,CAAC,EAAE;AAChB;AACA,cAAA,MAAMC,QAAQ,GAAG,MAAMnF,UAAU,CAACzD,OAAO,EAAE;AAACxF,gBAAAA,MAAM,EAAEmE,OAAO,IAAPA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEkK,cAAAA;AAAc,eAAC,CAAC,CAAA;cAC7E,IAAIC,OAAO,GAAG,KAAK,CAAA;AAEnB;cACA,MAAMC,UAAU,GAAGA,CAACC,iBAAyB,EAAEC,WAAsB,GAAA,KAAK,KAAI;AAC1E,gBAAA,MAAMxC,YAAY,GAAG1J,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAK,CAAA,EAAArD,aAAa,CAACO,MAAM,CAAIuR,CAAAA,EAAAA,WAAW,EAAE,CAAQ,CAAA;AAC1F;gBACA,IAAIxC,YAAY,IAAIuC,iBAAiB,EAAE;AACnC;kBACA,MAAME,QAAQ,GAAGnN,KAAK,CAACC,OAAO,CAACyK,YAAY,CAAC,GAAGA,YAAY,CAAC7B,GAAG,CAACuB,CAAC,IAAI7J,MAAM,CAAC6J,CAAC,CAAC,CAAC,GAAG,CAAC7J,MAAM,CAACmK,YAAY,CAAC,CAAC,CAAA;AACxG,kBAAA,IAAI1K,KAAK,CAACC,OAAO,CAACgN,iBAAiB,CAAC,EAAE;AAClC;AACA,oBAAA,KAAK,IAAI1D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4D,QAAQ,CAACxM,MAAM,EAAE4I,CAAC,EAAE,EAAE;sBACtC,MAAM6D,OAAO,GAAG7M,MAAM,CAAC4M,QAAQ,CAAC5D,CAAC,CAAC,CAAC,CAAA;sBACnC,KAAK,IAAI8D,EAAE,GAAG,CAAC,EAAEA,EAAE,GAAGJ,iBAAiB,CAACtM,MAAM,GAAG;wBAC7C,MAAM2M,IAAI,GAAG/M,MAAM,CAAC0M,iBAAiB,CAACI,EAAE,CAAC,CAAC,CAAA;wBAC1C,IAAIC,IAAI,KAAKF,OAAO,EAAEL,OAAO,GAAG,IAAI,CAAC,KAChCM,EAAE,EAAE,CAAA;AACb,uBAAA;AACA,sBAAA,IAAIN,OAAO,EAAE,OAAA;AACjB,qBAAA;mBACH,MAAM,IAAII,QAAQ,CAAC/O,QAAQ,CAACmC,MAAM,CAAC0M,iBAAiB,CAAC,CAAC,EAAE;oBACrD,OAAOF,OAAO,GAAG,IAAI,CAAA;AACzB,mBAAA;AACJ,iBAAC,MAAM,OAAA;eACV,CAAA;AAED,cAAA,IAAIF,QAAQ,EAAE;AACV5I,gBAAAA,OAAO,GAAG4D,SAAS,CAAC5D,OAAO,EAAE4I,QAAQ,CAAC,CAAA;AACtC;gBACA,MAAMU,KAAK,GAAGvN,KAAK,CAACC,OAAO,CAACwM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AACjE,gBAAA,KAAK,MAAMe,QAAQ,IAAID,KAAK,IAAI,EAAE,EAAE;kBAChC,MAAMpB,GAAG,GAAG5L,MAAM,CAACiN,QAAQ,CAAC,CAAClH,KAAK,CAAC,GAAG,CAAC,CAAA;kBACvC,IAAI6F,GAAG,CAAC,CAAC,CAAC,CAAC/N,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACtB,MAAMqP,IAAI,GAAGtB,GAAG,CAAC,CAAC,CAAC,CAAC7F,KAAK,CAAC,GAAG,CAAC,CAAA;oBAC9B,MAAMF,GAAG,GAAGpF,eAAI,CAAC6L,QAAQ,EAAEY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,oBAAA,IAAIrH,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;AAChC,sBAAA,IAAIpG,KAAK,CAACC,OAAO,CAACmG,GAAG,CAAC,EAAE;AACpB;AACA,wBAAA,KAAK,MAAMI,CAAC,IAAIJ,GAAG,EAAE;AACjB4G,0BAAAA,UAAU,CAAChM,eAAI,CAACwF,CAAC,EAAEiH,IAAI,CAAC,CAAC,CAAC,CAAW,EAAEtB,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAA;AACvD,0BAAA,IAAIY,OAAO,EAAE,MAAA;AACjB,yBAAA;AACJ,uBAAC,MAAM;AACH;AACA,wBAAA,KAAK,MAAMtG,CAAC,IAAIL,GAAG,EAAE;0BACjB4G,UAAU,CAAChM,eAAI,CAACoF,GAAG,EAAK,CAAAK,EAAAA,CAAK,IAAAgH,IAAI,CAAC,CAAC,CAAG,CAAA,CAAA,CAAW,EAAEtB,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAA;AACnE,0BAAA,IAAIY,OAAO,EAAE,MAAA;AACjB,yBAAA;AACJ,uBAAA;AACJ,qBAAA;AAEJ,mBAAC,MAAMC,UAAU,CAAChM,eAAI,CAAC6L,QAAQ,EAAEV,GAAG,CAAC,CAAC,CAAC,CAAW,EAAEA,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAA;AAExE,iBAAA;AACJ,eAAA;AAEA,cAAA,IAAIY,OAAO,EAAE;gBACTpG,CAAC,CAAC8B,EAAE,GAAG,IAAI,CAAA;AACX;AACA;AACA,gBAAA,IAAIgE,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAACzK,IAAI,CAACoI,CAAC,IAAIqC,KAAK,CAAC,CAAC,CAAC,CAACrO,QAAQ,CAACgM,CAAC,CAAC,CAAC,EAAE;AAChF,kBAAA,MAAMsD,aAAa,GAAGf,UAAU,GAAG,GAAG,GAAGF,KAAK,CAAC,CAAC,CAAC,CAACG,SAAS,CAAC,CAAA;kBAC5D,MAAMe,WAAW,GAAGD,aAAa,CAACpH,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/C;kBACA,IAAIqH,WAAW,KAAKD,aAAa,EAAE;AAC/B;oBACA,MAAME,MAAM,GAAGF,aAAa,CAACpH,KAAK,CAAC,GAAG,CAAC,CAAC9G,KAAK,CAAC,CAAC,CAAC,CAACqO,IAAI,CAAC,EAAE,CAAC,CAACvH,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;AAE1E,oBAAA,KAAK,MAAMwH,KAAK,IAAIF,MAAM,EAAE;sBACxB,MAAMG,QAAQ,GAAG/M,eAAI,CAACiD,OAAO,CAAClE,IAAI,EAAE+N,KAAK,CAAC,CAAA;AAC1C,sBAAA,IAAIC,QAAQ,EAAEzB,YAAY,GAAGvE,eAAI,CAACuE,YAAY,EAAEwB,KAAK,EAAEC,QAAQ,CAAC,CAAC,KAC5D;wBACD,KAAK,MAAMC,QAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;AAC3C,0BAAA,MAAMC,aAAa,GAAGjN,eAAI,CAACiD,OAAO,CAAClE,IAAI,EAAE,CAAGiO,EAAAA,QAAQ,CAAIF,CAAAA,EAAAA,KAAK,EAAE,CAAC,CAAA;AAChE,0BAAA,IAAIG,aAAa,EAAE3B,YAAY,GAAGvE,eAAI,CAACuE,YAAY,EAAE,CAAA,EAAG0B,QAAQ,CAAIF,CAAAA,EAAAA,KAAK,CAAE,CAAA,EAAEG,aAAa,CAAC,CAAA;AAC/F,yBAAA;AACJ,uBAAA;AACJ,qBAAA;mBACH,MAAM1B,SAAS,GAAG,KAAK,CAAA;iBAC3B,MAAMA,SAAS,GAAG,KAAK,CAAA;AAC5B,eAAA;AACJ,aAAA;WACH,CAAA;AAED,UAAA,WAAW,MAAME,KAAK,IAAIJ,SAAS,EAAE;YACjC,IAAIE,SAAS,EAAE,MAAMC,cAAc,CAACC,KAAK,CAAC,CAAC,KACtC,MAAA;AACT,WAAA;UACA,IAAIF,SAAS,EAAEtI,OAAO,GAAG8D,eAAI,CAAC9D,OAAO,EAAE,MAAM,EAAEqI,YAAY,CAAC,CAAA;AAChE,SAAA;AAEA,QAAA,IAAA,CAAAF,GAAA,GAAIzF,CAAC,aAADyF,GAAA,CAAG3D,EAAE,EAAE;AACPxE,UAAAA,OAAO,CAACxF,MAAM,CAACqN,aAAa,GAAG,IAAI,CAAA;AACnC7H,UAAAA,OAAO,CAACxF,MAAM,CAACsN,IAAI,GAAG,IAAI,CAAA;AAC1B,UAAA,OAAO9H,OAAO,CAAA;AAClB,SAAC,MAAM;UAEH,IAAIrB,OAAO,YAAPA,OAAO,CAAEjG,GAAG,EAAED,OAAO,CAACwR,KAAK,CAAC,0CAA0C,EAAEvH,CAAC,EAAE1C,OAAO,CAACkK,IAAI,EAAElK,OAAO,CAACoC,IAAI,CAAC,CAAA;AAC1G,UAAA,IAAI,EAACzD,OAAO,IAAPA,IAAAA,IAAAA,OAAO,CAAEsF,OAAO,CAAE,EAAA,MAAM,IAAI3N,KAAK,CAAC,+CAA+C,GAAG0J,OAAO,CAACkK,IAAI,GAAG,IAAI,GAAGlK,OAAO,CAACoC,IAAI,GAAG,KAAK,GAAGpC,OAAO,CAACgG,MAAM,CAAC,CAAC,KACjJ;AACD;AACA;AACAhG,YAAAA,OAAO,CAACxF,MAAM,CAAC2P,eAAe,GAAG;cAC7BD,IAAI,EAAElK,OAAO,CAACkK,IAAI;cAClBlE,MAAM,EAAEhG,OAAO,CAACgG,MAAM;cACtB5D,IAAI,EAAEpC,OAAO,CAACoC,IAAI;cAClBgI,MAAM,EAAE1H,CAAC;aACZ,CAAA;;AACD,YAAA,OAAO1C,OAAO,CAAA;AAClB,WAAA;AACJ,SAAA;AACJ,OAAA;AACJ,KAAA;GACH,CAAA;AACL,EAAC;MAEYqK,QAAQ,GAAGA,CAAI3F,oBAA8B,EAAE/F,OAAyB,KAAI;EACrF,OAAO,MAAOqB,OAAuB,IAA6B;IAC9D,MAAM7I,aAAa,GAAG6I,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAW,CAAA;AACjE,IAAA,MAAM5B,SAAS,GAAGV,aAAa,CAACU,SAAS,IAAI,MAAM,CAAA;AACnD,IAAA,MAAMH,MAAM,GAAGP,aAAa,CAACO,MAAM,IAAI,OAAO,CAAA;AAE9C;AACA,IAAA,IAAIiH,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEjG,GAAG,EAAE;MACd,IAAI;AAAA,QAAA,IAAA4R,iBAAA,EAAAC,iBAAA,EAAAC,iBAAA,EAAAtK,eAAA,CAAA;AACA,QAAA,MAAMuK,IAAI,GAAQ1N,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAAC3C,SAAS,EAAEH,MAAM,CAAC,CAAC,CAAA;QAC3D,MAAMgT,IAAI,GAAQ3N,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,OAAO,CAAC,CAAA;AAC/C,QAAA,MAAMmQ,IAAI,GAAQ5N,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAAC,YAAY,EAAE9C,MAAM,CAAC,CAAC,CAAA;AAC9D,QAAA,MAAMkT,eAAe,GAAG7N,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAA;AAC1E/B,QAAAA,OAAO,CAACC,GAAG,CAAC,qCAAqC,EAAE;AAC/CoJ,UAAAA,SAAS,EAAEpK,MAAM;AACjBmK,UAAAA,QAAQ,EAAEhK,SAAS;AACnB;AACAgT,UAAAA,QAAQ,EAAEJ,IAAI,GAAI,EAAAH,iBAAA,GAAAG,IAAI,CAAClU,WAAW,KAAhB+T,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAA,CAAkB1Q,IAAI,KAAI,OAAO6Q,IAAI,GAAI,OAAOA,IAAI;AACtEK,UAAAA,SAAS,EAAE,CAAC,EAAEL,IAAI,KAAKA,IAAI,CAACxO,GAAG,IAAIwO,IAAI,CAAClQ,EAAE,CAAC,CAAC;AAC5CwQ,UAAAA,QAAQ,EAAEL,IAAI,GAAI,EAAAH,iBAAA,GAAAG,IAAI,CAACnU,WAAW,KAAhBgU,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAA,CAAkB3Q,IAAI,KAAI,OAAO8Q,IAAI,GAAI,OAAOA,IAAI;AACtEM,UAAAA,SAAS,EAAE,CAAC,EAAEN,IAAI,KAAKA,IAAI,CAACzO,GAAG,IAAIyO,IAAI,CAACnQ,EAAE,CAAC,CAAC;AAC5C0Q,UAAAA,QAAQ,EAAEN,IAAI,GAAI,EAAAH,iBAAA,GAAAG,IAAI,CAACpU,WAAW,KAAhBiU,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAA,CAAkB5Q,IAAI,KAAI,OAAO+Q,IAAI,GAAI,OAAOA,IAAI;AACtEO,UAAAA,SAAS,EAAE,CAAC,EAAEP,IAAI,KAAKA,IAAI,CAAC1O,GAAG,IAAI0O,IAAI,CAACpQ,EAAE,CAAC,CAAC;AAC5Ce,UAAAA,UAAU,EAAErB,MAAM,CAACC,IAAI,CAAC8F,OAAO,CAACxF,MAAM,IAAI,EAAE,CAAC,CAACe,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;UAC1DR,QAAQ,EAAA,CAAAmF,eAAA,GAAGF,OAAe,CAACxF,MAAM,KAAA,IAAA,GAAA,KAAA,CAAA,GAAtB0F,eAAA,CAAwBnF,QAAQ;UAC3CqH,IAAI,EAAGpC,OAAe,CAACoC,IAAI;UAC3B4D,MAAM,EAAGhG,OAAe,CAACgG,MAAM;UAC/BmF,aAAa,EAAE,OAAOP,eAAe,KAAK,QAAQ,IAAIA,eAAe,CAAClO,MAAM,GAAG,CAAA;AAClF,SAAA,CAAC,CAAA;OACL,CAAC,MAAM,EACR;AACJ,KAAA;AAEA,IAAA,MAAM0O,aAAa,GAAQrO,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAAC3C,SAAS,EAAEH,MAAM,CAAC,CAAC,IAAIqF,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,OAAO,CAAC,IAAIuC,eAAI,CAACiD,OAAO,CAACxF,MAAM,CAACtC,UAAU,EAAER,MAAM,CAAC,CAAA;AAChJ;AACA,IAAA,IAAI0T,aAAa,EAAE;MACfpL,OAAO,CAACxF,MAAM,CAAC9C,MAAM,CAAC,GAAG,OAAO0T,aAAa,KAAK,QAAQ,GACpD;AAACnP,QAAAA,GAAG,EAAEmP,aAAAA;AAAc,OAAA,GACpBA,aAAa,CAAA;AACvB,KAAA;AACA,IAAA,MAAMnQ,OAAO,GAAG,OAAOmQ,aAAa,KAAK,QAAQ,GAAGA,aAAa,GAAGA,aAAa,IAAbA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAa,CAAEnP,GAAG,CAAA;AACtF,IAAA,MAAMoP,QAAQ,GAAG,CAAC,EAAED,aAAa,KAAK,OAAOA,aAAa,KAAK,QAAQ,IAAI,CAAC,CAACnQ,OAAO,CAAC,CAAC,CAAA;AACtF;IACA,MAAMqQ,YAAY,GAAGvO,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAErD,aAAa,CAAC6K,WAAW,IAAI,aAAa,CAAC,IAAIjF,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAAC9C,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAE/H,IAAIiH,OAAO,IAAPA,IAAAA,IAAAA,OAAO,CAAEjG,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE2S,QAAQ,EAAE,SAAS,EAAEpQ,OAAO,EAAE,cAAc,EAAE,CAAC,CAACqQ,YAAY,EAAE,WAAW,EAAEzT,SAAS,EAAE,QAAQ,EAAEH,MAAM,EAAE,MAAM,EAAEsI,OAAO,CAACxF,MAAM,CAAC3C,SAAS,CAAC,EAAE,cAAc,EAAEmI,OAAO,CAACxF,MAAM,CAAC+Q,KAAK,EAAE,uBAAuB,EAAE7G,oBAAoB,CAAC,CAAA;IACtR,IAAI/F,OAAO,YAAPA,OAAO,CAAEjG,GAAG,IAAI,CAAC2S,QAAQ,EAAE;MAC3B,IAAI;AACA9J,QAAAA,aAAa,CAAC,mBAAmB,EAAEvB,OAAO,CAAC,CAAA;OAC9C,CAAC,MAAM,EACR;AACJ,KAAA;AACA;IACA,IAAI0E,oBAAoB,KAAKT,OAAO,IAAKS,oBAAoB,IAAIA,oBAAoB,CAAC1E,OAAO,CAACgG,MAAM,CAAC,KAAK/B,OAAQ,EAAE,OAAOoH,QAAQ,GAAGrL,OAAO,GAAG,MAAMkE,WAAW,CAAClE,OAAO,CAAC,CAAA;AAC1K,IAAA,MAAMwL,SAAS,GAAG,CAAC,CAAA7M,OAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAPA,OAAO,CAAE6M,SAAS,KAAI,EAAE,EAAErR,QAAQ,CAAC6F,OAAO,CAACgG,MAAM,CAAC,KAAKjJ,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,YAAY,CAAC,IAAIuC,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAACrD,aAAa,CAACU,SAAS,EAAE,YAAY,CAAC,CAAC,CAAQ,CAAA;AACrL;AACA;AACA,IAAA,IAAI,CAACwT,QAAQ,IAAI,CAACC,YAAY,EAAE;AAC5B,MAAA,IAAI3M,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEjG,GAAG,EAAE;QACd,IAAI;UACCsH,OAAe,CAACxF,MAAM,GAAG;YAAC,GAAIwF,OAAe,CAACxF,MAAM;AAAE9B,YAAAA,GAAG,EAAE,IAAA;WAAK,CAAA;SACpE,CAAC,MAAM,EACR;AACJ,OAAA;AACAsH,MAAAA,OAAO,GAAIwL,SAAS,IAAI7M,OAAO,IAAPA,IAAAA,IAAAA,OAAO,CAAEqJ,aAAa,GAAI,MAAM9D,WAAW,CAAClE,OAAO,CAAC,GAAG,MAAMoE,QAAQ,CAACpE,OAAO,CAAC,CAAA;AAC1G,KAAA;IACA,IAAIrB,OAAO,YAAPA,OAAO,CAAEjG,GAAG,IAAI,CAAC2S,QAAQ,EAAE;AAC3B;AACA,MAAA,MAAMI,SAAS,GAAQ1O,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAAC3C,SAAS,EAAEH,MAAM,CAAC,CAAC,IAAIqF,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,OAAO,CAAC,IAAIuC,eAAI,CAACiD,OAAO,CAACxF,MAAM,CAACtC,UAAU,EAAER,MAAM,CAAC,CAAA;AAC5I,MAAA,MAAMgU,MAAM,GAAG,OAAOD,SAAS,KAAK,QAAQ,GAAGA,SAAS,GAAGA,SAAS,IAATA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAS,CAAExP,GAAG,CAAA;AACzExD,MAAAA,OAAO,CAACC,GAAG,CAAC,gCAAgC,EAAE;QAAC2S,QAAQ,EAAE,CAAC,CAACI,SAAS;QAAEC,MAAM;AAAE5J,QAAAA,SAAS,EAAEpK,MAAAA;AAAM,OAAC,CAAC,CAAA;AACrG,KAAA;IACA,IAAIgN,oBAAoB,KAAKV,OAAO,IAAI,EAACrF,OAAO,IAAPA,IAAAA,IAAAA,OAAO,CAAEqJ,aAAa,CAAE,EAAA;AAC7DhI,MAAAA,OAAO,CAACxF,MAAM,CAACqN,aAAa,GAAG,CAAC,CAAC7H,OAAO,CAACxF,MAAM,CAAC9C,MAAM,CAAC,CAAA;AACvD,MAAA,OAAOsI,OAAO,CAAA;AAClB,KAAA;IACA,IAAIwL,SAAS,EAAE,OAAOxL,OAAO,CAAA;AAC7B,IAAA,IAAI,CAAC0E,oBAAoB,EAAE,OAAO1E,OAAO,CAAA;IACzC,OAAO,MAAM2H,SAAS,CAACjD,oBAAoB,EAAE/F,OAAO,CAAC,CAACqB,OAAO,CAAC,CAAA;GACjE,CAAA;AACL,EAAC;MAEY2L,WAAW,GAAGA,CAAIC,OAAoB,EAAEjN,OAAyB,KAAI;EAC9E,OAAO,MAAOqB,OAAuB,IAA6B;IAC9D,MAAMpI,MAAM,GAAGoI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAe,CAAA;AAC9D;AACA,IAAA,MAAMoI,QAAQ,GAAIjK,MAAc,CAACC,SAAS,IAAI,MAAM,CAAA;AACpD,IAAA,MAAMiK,SAAS,GAAIlK,MAAc,CAACF,MAAM,IAAI,OAAO,CAAA;AACnD,IAAA,MAAM0T,aAAa,GAAGrO,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAACqH,QAAQ,EAAEC,SAAS,CAAC,CAAC,CAAA;IACjE,IAAI,CAACsJ,aAAa,EAAE;MAChB,MAAM1T,MAAM,GAAGqF,eAAI,CAACiD,OAAO,EAAE,CAAC,MAAM,EAAE8B,SAAS,CAAC,CAAC,CAAA;AACjD,MAAA,IAAIpK,MAAM,EAAEsI,OAAO,GAAG8D,eAAI,CAAC9D,OAAO,EAAE,CAAC6B,QAAQ,EAAEC,SAAS,CAAC,EAAEpK,MAAM,CAAC,CAAA;AACtE,KAAA;AACA,IAAA,IAAIsI,OAAO,CAACkK,IAAI,KAAK,QAAQ,EAAE;MAC3B,MAAM;AAAClE,QAAAA,MAAAA;AAAO,OAAA,GAAGhG,OAAyD,CAAA;MAC1E,IAAI4L,OAAO,CAAC5F,MAA2B,CAAC,IAAI4F,OAAO,CAAC,KAAK,CAAC,EAAE;AACxD,QAAA,OAAO,MAAMvB,QAAQ,CAACuB,OAAO,CAAC5F,MAAM,CAAC,IAAI4F,OAAO,CAAC,KAAK,CAAC,EAAEjN,OAAO,CAAC,CAACqB,OAAO,CAAQ,CAAA;OACpF,MAAM,OAAOA,OAAO,CAAA;KACxB,MAAM,OAAOA,OAAO,CAAA;GACxB,CAAA;AACL,EAAC;AAEY6L,MAAAA,eAAe,GAAIrT,GAAQ,IAAI;AACxC,EAAA,OAAQwH,OAAoB,IAAI;AAAA,IAAA,IAAA0B,gBAAA,CAAA;AAC5B,IAAA,MAAMoK,UAAU,GAAApK,CAAAA,gBAAA,GAAG1B,OAAO,CAACxF,MAAM,KAAA,IAAA,IAAA,CAAAkH,gBAAA,GAAdA,gBAAA,CAAgB0E,gBAAgB,KAAhC1E,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAAkClJ,GAAG,CAAA;AACxD,IAAA,MAAMhC,OAAO,GACTuF,KAAK,CAACC,OAAO,CAAC8P,UAAU,CAAC,IAAIA,UAAU,CAAC,CAAC,CAAC,GACpCA,UAAU,CAAC,CAAC,CAAC,GACb,CAAAtT,GAAG,oBAAHA,GAAG,CAAEhC,OAAO,KAAI8F,MAAM,CAAC9D,GAAG,CAAC,IAAI,uBAAuB,CAAA;IAEhE,MAAMuT,CAAC,GAAG,CAAAvV,OAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAPA,OAAO,CAAEmH,WAAW,EAAE,KAAI,EAAE,CAAA;AACtC,IAAA,MAAMqO,QAAQ,GAAG;AACb7P,MAAAA,IAAI,EAAE;QACF8P,MAAM,EAAEF,CAAC,CAAC5R,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG3D,OAAAA;AAC/C,OAAA;KACJ,CAAA;IAEDiC,OAAO,CAAC0G,IAAI,CAA4B,CAAAa,wBAAAA,EAAAA,OAAO,CAACoC,IAAS,CAAA,EAAA,EAAA5L,OAAS,CAAA,CAAA,CAAC,CAAA;AAEnE,IAAA,MAAM,IAAIiI,uBAAgB,CAACjI,OAAO,EAAEwV,QAAQ,CAAC,CAAA;GAChD,CAAA;AACL;;AC5lBaE,MAAAA,UAAU,GAAGA,MAAK;EAC3B,OAAO,MAAOlM,OAAW,IAAI;IAEzB,MAAM;AAAEmM,MAAAA,GAAG,GAAG,EAAE;AAAEzL,MAAAA,MAAM,GAAG,EAAA;KAAI,GAAGV,OAAO,CAAClE,IAAI,CAAA;AAC9C;AACA,IAAA,IAAG,EAACqQ,GAAG,IAAA,IAAA,IAAHA,GAAG,CAAEzP,MAAM,KAAI,EAACgE,MAAM,YAANA,MAAM,CAAEhE,MAAM,CAAE,EAAA,MAAM,IAAIpG,KAAK,CAAC,4BAA4B,CAAC,CAAA;AAEjF;IACA,MAAM;MAACgJ,MAAM;MAAE4C,QAAQ;MAAExK,MAAM;AAAEyE,MAAAA,IAAAA;KAAK,GAAG6D,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1E,MAAM4N,UAAU,GAAG7H,wBAAa,CAAC;AAACC,MAAAA,SAAS,EAAEH,MAAAA;AAAO,KAAA,CAAC,CAACL,GAAG,EAAE,CAAA;IAE3D,MAAMmN,cAAc,GAAGC,yBAAc,CAAC,CAAC,GAAGF,GAAG,EAAE,GAAGzL,MAAM,CAAC,CAAC,CAAA;AAE1D,IAAA,MAAM4L,OAAO,GAAG,MAAM7H,qBAAU,CAAC1H,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAAC9C,MAAM,EAAEyE,IAAI,CAAC,CAAW,EAAE;MAC7EkB,QAAQ,EAAEN,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE0H,QAAQ,CAAW;AAClDwC,MAAAA,oBAAoB,EAAE0H,cAAc,CAACxH,GAAG,CAACuB,CAAC,IAAG;QACzC,OAAO;AACH;AACAnB,UAAAA,UAAU,EAAEmB,CAAC;AACbkB,UAAAA,UAAAA;SACH,CAAA;OACJ,CAAA;AACJ,KAAA,CAAC,CAAA;AAEF,IAAA,IAAG,EAACiF,OAAO,IAAPA,IAAAA,IAAAA,OAAO,CAAE9H,EAAE,CAAE,EAAA,MAAM,IAAIlO,KAAK,CAAC,qEAAqE,CAAC,CAAA;AAEvG;AACA,IAAA,MAAMiW,SAAS,GAAGvM,OAAO,CAACzF,EAAE,CAAA;IAC5B,MAAM/C,OAAO,GAAGwI,OAAO,CAAClE,IAAI,CAACtE,OAAO,IAAI,QAAQ,CAAA;IAChD,MAAM4K,IAAI,GAAGpC,OAAO,CAAClE,IAAI,CAACsG,IAAI,IAAI,MAAM,CAAA;IACxC,MAAMwE,OAAO,GAAG,MAAM,IAAI7G,QAAQ,CAACvI,OAAO,EAAEwI,OAAO,EAAE;AAAE3E,MAAAA,SAAS,EAAE,IAAA;AAAI,KAAE,CAAC,CAAC5B,GAAG,CAAC8S,SAAS,EAAE;AAAE5Q,MAAAA,UAAU,EAAE,IAAI;AAAED,MAAAA,UAAU,EAAE,IAAA;AAAI,KAAE,CAAC,CAAA;IAEhI,MAAM8Q,OAAO,GAAGnN,oBAAS,CAACtC,eAAI,CAAC6J,OAAO,EAAExE,IAAI,CAAW,CAAC,CAAA;IACxD,MAAM;MAACvF,GAAG;MAAEgD,GAAG;MAAE4M,GAAG;MAAEC,GAAG;AAAEC,MAAAA,GAAAA;KAAI,GAAGH,OAAO,CAAC1T,OAAO,CAAA;AAEjD,IAAA,IAAI8G,YAAY,GAAG,CAAC,GAAGC,GAAG,CAAC,CAAA;AAC3B,IAAA,IAAGa,MAAM,IAAA,IAAA,IAANA,MAAM,CAAEhE,MAAM,EAAEkD,YAAY,GAAGgN,0BAAe,CAAClM,MAAM,EAAEb,GAAG,CAAC,CAAA;AAC9D,IAAA,IAAGsM,GAAG,IAAHA,IAAAA,IAAAA,GAAG,CAAEzP,MAAM,EAAEkD,YAAY,GAAGyM,yBAAc,CAAC,CAAC,GAAGxM,GAAG,EAAE,GAAGsM,GAAG,CAAC,CAAC,CAAA;AAG/D,IAAA,MAAMhO,GAAG,GAAG,MAAMuB,oBAAS,CAAC;MACxBH,MAAM,EAAEC,wBAAa,CAAC;AAACC,QAAAA,SAAS,EAAEH,MAAAA;OAAO,CAAC;AAC1CjC,MAAAA,QAAQ,EAAER,GAAG;AACb8C,MAAAA,iBAAiB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACpCkN,MAAAA,MAAM,EAAEF,GAAG;MACX,GAAG3M,OAAO,CAAClE,IAAI;AACf8D,MAAAA,YAAAA;AACH,KAAA,CAAC,CAAA;AAEF,IAAA,MAAMkN,OAAO,GAAG1Q,oBAAS,CAAC+B,GAAG,CAAC,CAAA;AAC9B,IAAA,MAAM4O,OAAO,GAAG,MAAMzU,uBAAY,CAACwU,OAAO,CAAC,CAAA;IAC3C,IAAI,CAACC,OAAO,EAAE,MAAM,IAAIzW,KAAK,CAAC,sCAAsC,CAAC,CAAA;AACrE,IAAA,MAAM0W,OAAO,GAAG,MAAM,IAAIjN,QAAQ,CAACvI,OAAO,EAAEwI,OAAO,CAAC,CAACF,KAAK,CAACyM,SAAS,EAAE;AAAE,MAAA,CAACnK,IAAI,GAAG0K,OAAAA;AAAS,KAAA,CAAC,CAAA;IAC1F9M,OAAO,CAAClF,MAAM,GAAG;MAACqD,GAAG,EAAE6B,OAAO,CAAClE,IAAI;MAAEgR,OAAO;AAAElG,MAAAA,OAAO,EAAEoG,OAAAA;KAAQ,CAAA;AAC/D,IAAA,OAAOhN,OAAO,CAAA;GACjB,CAAA;AACL;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/auth-service/ucan-strategy.ts","../src/auth-service/index.ts","../src/core/methods.ts","../src/utils/log-ucan-params.ts","../src/utils/check-exists.ts","../src/hooks/ucan-auth.ts","../src/hooks/update-ucan.ts"],"sourcesContent":["import {IncomingMessage} from 'http';\nimport {\n AuthenticationBase,\n AuthenticationBaseStrategy,\n AuthenticationRequest,\n AuthenticationResult,\n ConnectionEvent\n} from '@feathersjs/authentication';\n// @ts-ignore\nimport lt from 'long-timeout';\nimport {_get, _unset, ucanToken, validateUcan} from 'symbol-ucan';\n\nexport class NotAuthError extends Error {\n constructor(message?: string) {\n super(message)\n }\n}\nconst SPLIT_HEADER = /(\\S+)\\s+(\\S+)/;\n\ntype AnyObj = { [key: string]: any };\n\nexport class UcanStrategy extends AuthenticationBaseStrategy {\n expirationTimers = new WeakMap();\n\n setAuthentication(auth: AuthenticationBase) {\n // console.log('set authentication', auth);\n auth.verifyAccessToken = (accessToken: string) => {\n return {} as any;\n };\n super.setAuthentication(auth);\n }\n\n get configuration() {\n const authConfig = this.authentication?.configuration || {\n service: undefined,\n entity: undefined,\n entityId: undefined\n };\n const config = super.configuration;\n\n return {\n service: authConfig.service,\n entity: authConfig.entity,\n entityId: authConfig.entityId,\n // propagate core_path so hooks/strategies can share the same namespace\n core_path: (this.authentication?.configuration as any)?.core_path || (authConfig as any)?.core_path,\n header: 'Authorization',\n schemes: ['Bearer', 'JWT'],\n ...config\n };\n }\n\n async handleConnection(event: ConnectionEvent, connection: any, authResult?: AuthenticationResult) {\n const isValidLogout = event === 'logout' && connection.authentication && authResult &&\n connection.authentication.accessToken === authResult.accessToken;\n\n const {accessToken, entity} = authResult || {};\n\n if (accessToken && event === 'login') {\n const validUcan = await validateUcan(accessToken)\n .catch(err => {\n console.log('Could not validate ucan in connection: ', err.message);\n const errObj = {\n code: 0,\n message: 'Unknown Issue Validating Ucan'\n };\n if (err.message.indexOf('Expired.') > -1) {\n errObj.code = 1;\n errObj.message = 'Expired Ucan'\n }\n throw new Error(errObj.message);\n });\n const {payload: {exp}} = validUcan || {payload: {exp: 0}}\n // The time (in ms) until the token expires\n const duration = (exp * 1000) - Date.now();\n // This may have to be a `logout` event but right now we don't want\n // the whole context object lingering around until the timer is gone\n const timer = lt.setTimeout(() => (this.app as any).emit('disconnect', connection), duration);\n\n lt.clearTimeout(this.expirationTimers.get(connection));\n this.expirationTimers.set(connection, timer);\n\n connection.authentication = {\n strategy: this.name,\n accessToken\n };\n } else if (event === 'disconnect' || isValidLogout) {\n const {entity} = this.configuration;\n\n delete connection[entity];\n delete connection.authentication;\n\n lt.clearTimeout(this.expirationTimers.get(connection));\n this.expirationTimers.delete(connection);\n }\n }\n\n verifyConfiguration() {\n // Allow strategy configuration keys that this package supports. We recently\n // started propagating `core_path` from the app's authentication config, so\n // it must be considered valid here to avoid startup errors.\n const allowedKeys = ['entity', 'entityId', 'service', 'header', 'schemes', 'audience', 'core_path'];\n\n for (const key of Object.keys(this.configuration)) {\n if (!allowedKeys.includes(key)) {\n throw new Error(`Invalid ucanStrategy option 'authentication.${this.name}.${key}'. Did you mean to set it in 'authentication.jwtOptions'?`);\n }\n }\n\n if (typeof this.configuration.header !== 'string') {\n throw new Error(`The 'header' option for the ${this.name} strategy must be a string`);\n }\n }\n\n // eslint-disable-next-line no-unused-vars\n async getEntityQuery(_params: any) {\n return {};\n }\n\n /**\n * Return the entity for a given id\n * @param id The id to use\n * @param params Service call parameters\n */\n async getEntity(id: string, params: any) {\n const entityService = this.entityService;\n const {entity} = this.configuration;\n\n if (entityService === null) {\n throw new NotAuthError('Could not find entity service');\n }\n\n const query = await this.getEntityQuery(params);\n const getParams = Object.assign({}, _unset(params, 'provider'), {query});\n const result = await entityService.get(id, getParams);\n\n if (!params.provider) {\n return result;\n }\n\n return entityService.get(id, {...params, [entity]: result});\n }\n\n async getEntityId(authResult: AuthenticationResult, _params: AnyObj) {\n let {query, loginId} = _params;\n if (loginId) return loginId;\n else {\n const {service, core_path = 'core'} = this.configuration;\n const pms = {\n query: {...query, $limit: 1},\n [core_path]: {skipJoins: true, ..._params[core_path]}\n }\n // Diagnostics to help understand why a login may not be found\n if (_params?.log) {\n try {\n console.log('[UCAN DIAG] strategy:getEntityId', {\n service,\n core_path,\n query: pms.query,\n provider: _params.provider,\n paramsKeys: Object.keys(_params || {}).slice(0, 20)\n });\n } catch {}\n }\n const entities = await this.app?.service(service).find({...pms, skipJoins: true, skip_hooks: true, admin_pass: true} as any);\n // Support both paginated and non-paginated service responses\n // - Paginated: { total, limit, skip, data: [...] }\n // - Non-paginated: Array\n let first: any = undefined;\n if (entities && typeof entities === 'object' && 'data' in entities) {\n first = (entities as any).data?.[0];\n } else if (Array.isArray(entities)) {\n first = entities[0];\n }\n if (first && first._id) return first._id;\n throw new NotAuthError('Could not find login associated with this ucan');\n }\n }\n\n async authenticate(authentication: AuthenticationRequest, params: AnyObj) {\n let {accessToken, loginId, ucan} = authentication;\n const {entity, core_path} = this.configuration;\n if (!accessToken) {\n\n if (ucan) accessToken = ucanToken(ucan);\n else throw new NotAuthError('Missing UCAN access token');\n // } else throw new NotAuthenticated('No access token');\n }\n\n // Guard: prevent passing null/invalid tokens to validateUcan\n const tokenStr = String(accessToken || '').trim();\n const dotCount = (tokenStr.match(/\\./g) || []).length;\n if (!tokenStr || tokenStr === 'null' || tokenStr === 'undefined' || dotCount !== 2) {\n throw new NotAuthError('Invalid or missing UCAN in Authorization header or request payload');\n }\n //\n // await verifyUcan(accessToken, {audience: ucan_audience || params.ucan_aud, requiredCapabilities})\n // .catch(err => {\n // console.error('error verifying ucan', err);\n // throw new NotAuthenticated('Could not verify ucan: ' + err.message);\n // });\n\n const decodedUcan = await validateUcan(accessToken)\n .catch(err => {\n console.log('Could not validate ucan during authentication: ', err.message);\n const errObj = {\n code: 0,\n message: 'Unknown Issue Validating Ucan'\n };\n if (err.message.indexOf('Expired.') > -1) {\n errObj.code = 1;\n errObj.message = 'Expired Ucan'\n }\n throw new Error(errObj.message);\n });\n\n if (params?.log) {\n try {\n console.log('[UCAN DIAG] strategy:authenticate', {\n entity,\n core_path,\n aud: decodedUcan?.payload?.aud,\n hasParamsEntity: !!_get(params, [core_path, entity]),\n provider: params.provider\n });\n } catch {}\n }\n\n const result = {\n accessToken,\n authentication: {\n strategy: 'jwt',\n accessToken\n }\n };\n\n if (entity === null) {\n return result;\n }\n\n let value;\n const coreEntity = _get(params, [core_path, entity]);\n if (!coreEntity) {\n // Determine which field to query by (configurable) and which audience to use\n const idField = (this.configuration as any)?.entityId || 'did';\n const audience = _get(params, [core_path, 'ucan_aud']) || decodedUcan?.payload?.aud;\n if (params?.log) {\n try {\n console.log('[UCAN DIAG] strategy:entity-lookup', {\n idField,\n audience,\n usedCoreAud: !!_get(params, [core_path, 'ucan_aud'])\n });\n } catch {}\n }\n const entityId = await this.getEntityId(result, {\n ...params,\n loginId,\n query: {[idField]: audience}\n });\n value = await this.getEntity(entityId, params);\n } else value = coreEntity;\n return {\n ...result,\n [entity]: value\n };\n\n }\n\n async parse(req: IncomingMessage) {\n const {header, schemes} = this.configuration;\n const headerValue = req.headers && req.headers[header.toLowerCase()];\n\n if (!headerValue || typeof headerValue !== 'string') {\n return null;\n }\n\n const [, scheme, schemeValue] = headerValue.match(SPLIT_HEADER) || [];\n const hasScheme = scheme && schemes.some(\n (current: any) => new RegExp(current, 'i').test(scheme)\n );\n\n if (scheme && !hasScheme) {\n return null;\n }\n\n const raw = hasScheme ? schemeValue : (headerValue as string);\n const token = typeof raw === 'string' ? raw.trim() : raw;\n // If clients accidentally send \"Bearer null\"/\"Bearer undefined\" or empty, ignore this strategy\n if (!token || token === 'null' || token === 'undefined') {\n return null;\n }\n return {\n strategy: this.name,\n accessToken: token\n };\n }\n}\n\n\n","import {_get, buildUcan, encodeKeyPair, parseUcan, ucanToken, validateUcan} from 'symbol-ucan';\nimport {AuthenticationParams, AuthenticationRequest, AuthenticationService} from '@feathersjs/authentication';\nimport {NullableId} from '../core';\n\ntype AnyObj = any\n\nexport class NotAuthError extends Error {\n constructor(message?: string) {\n super(message)\n }\n}\nexport type AuthServiceOptions = {\n NotAuthenticated?: any\n}\nexport * from './ucan-strategy';\n\nexport class AuthService extends AuthenticationService {\n options: AuthServiceOptions\n constructor(app: any, configKey = 'authentication', opts:AnyObj&AuthServiceOptions = {}) {\n const { NotAuthenticated, ...rest } = opts\n super(app, configKey, rest)\n this.app = app;\n this.options = { NotAuthenticated }\n };\n\n async create(data: AuthenticationRequest, params?: AuthenticationParams) {\n const NotAuth = this.options?.NotAuthenticated || NotAuthError;\n\n const {entity, service, ucan_path = 'ucan'} = this.app.get('authentication');\n\n const authStrategies = params?.authStrategies || this.configuration.authStrategies\n\n if (!params) params = {}\n\n if (!authStrategies.length) {\n throw new NotAuth('No authentication strategies allowed for creating a JWT (`authStrategies`)')\n }\n\n const authResult = await this.authenticate(data, params, ...authStrategies)\n .catch((err: any) => {\n throw new Error(err.message)\n })\n\n if (authResult.accessToken) {\n return authResult\n }\n const did = data.did || _get(authResult, [entity, 'did']);\n let ucan = data.ucan || _get(authResult, [entity, 'ucan']);\n\n if (!did) throw new Error('No did audience provided');\n if (!ucan) throw new Error('No ucan provided to authentication call');\n // const {secret} = this.configuration;\n\n const validatedUcan = await validateUcan(ucan)\n .catch(err => {\n console.log('Could not validate ucan creating authentication: ', err.message);\n const errObj = {\n code: 0,\n message: 'Unknown Issue Validating Ucan'\n };\n if (err.message.indexOf('Expired.') > -1) {\n errObj.code = 1;\n errObj.message = 'Expired Ucan'\n }\n console.warn('Could not validate ucan creating authentication', ucan, errObj.message);\n return null;\n });\n if (!validatedUcan) {\n const parsed = parseUcan(ucan);\n let {secret} = this.app.get('authentication');\n\n const issuer = encodeKeyPair({secretKey: secret});\n ucan = await buildUcan({\n audience: parsed.payload.aud,\n issuer,\n lifetimeInSeconds: 60 * 60 * 24 * 60,\n capabilities: parsed.payload.att\n })\n params.admin_pass = true;\n await this.app.service(service).patch(_get(authResult, [entity, '_id']) as NullableId, {[ucan_path]: ucanToken(ucan)}, {...params})\n }\n\n\n const accessToken = ucanToken(ucan);\n\n return {\n accessToken,\n ...authResult,\n authentication: {\n ...authResult.authentication,\n payload: accessToken\n }\n }\n }\n}\n\n","type AnyObj = any\n\nexport type Id = number | string\nexport type NullableId = Id | null\n\nexport type CallFindResult<T = AnyObj> = {\n total:number,\n limit: number,\n skip:number,\n data: Array<T>\n}\nexport type AnyParams = Iterable<AnyObj>\n\ndeclare type CoreOpts = {\n skipJoins?: boolean,\n admin_pass?: boolean\n}\nexport class CoreCall {\n context:any;\n service:string;\n core:AnyObj;\n entity:string;\n constructor(service:string, context:any, coreOptions?:CoreOpts){\n this.service = service\n this.context = context\n const entity = (context.app.get('authentication') || { entity: 'login' }).entity || 'login';\n this.entity = entity;\n const core = context.params?.core || {};\n if(!core[entity]) core[entity] = context.params[entity];\n this.core = { ...core, ...coreOptions }\n }\n\n async get(id:NullableId, params:AnyObj = {}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service).get(id, {...params, [this.entity]: params[this.entity], ...{ [core_path]: this.core }})\n }\n async find (params:AnyObj = {}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service).find({...params as AnyParams, [this.entity]: params[this.entity], admin_pass:true, ...{ [core_path]: this.core }})\n }\n async create (data:AnyObj, params:AnyObj = {}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service).create(data, {...params, [this.entity]: params[this.entity], ...{ [core_path]: this.core }})\n }\n async patch (id:NullableId, data:AnyObj, params:AnyObj = {}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service).patch(id, data, {...params, [this.entity]: params[this.entity], ...{ [core_path]: this.core }})\n }\n async update (id:NullableId, data:AnyObj, params:AnyObj = {}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service).update(id, data, {...params, [this.entity]: params[this.entity], ...{ [core_path]: this.core }})\n }\n async remove (id:NullableId, params:AnyObj = {}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service).remove(id, {...params, [this.entity]: params[this.entity], ...{ [core_path]: this.core }})\n }\n\n async _get(id:NullableId, params:AnyObj = {}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service)._get(id, {...params, [this.entity]: params[this.entity], skip_hooks: true, ...{ [core_path]: this.core }})\n }\n async _find (params:AnyObj = {}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service)._find({...params as AnyParams, [this.entity]: params[this.entity], skip_hooks: true, ...{ [core_path]: this.core }})\n }\n async _create (data:AnyObj, params:AnyObj ={}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service)._create(data, {...params, [this.entity]: params[this.entity], skip_hooks: true, ...{ [core_path]: this.core }})\n }\n async _patch (id:NullableId, data:AnyObj, params:AnyObj ={}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service)._patch(id, data, {...params, [this.entity]: params[this.entity], skip_hooks: true, ...{ [core_path]: this.core }})\n }\n async _update (id:NullableId, data:AnyObj, params:AnyObj ={}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service)._update(id, data, {...params, [this.entity]: params[this.entity], skip_hooks: true, ...{ [core_path]: this.core }})\n }\n async _remove (id:NullableId, params:AnyObj ={}){\n const {core_path} = this.context.app.get('authentication');\n return this.context.app?.service(this.service)._remove(id, {...params, [this.entity]: params[this.entity], skip_hooks: true, ...{ [core_path]: this.core }})\n }\n\n}\n\n","// Utility: UCAN diagnostics logger for use around ucanAuth/allUcanAuth\n// Minimal helper to understand what values are present at verify time.\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const logUcanParams = (label: string, context: any): void => {\n const authConfig = context.app?.get?.('authentication') || {};\n const corePath = authConfig.core_path || 'core';\n const entityKey = authConfig.entity || 'login';\n const clientUcanPath = authConfig.client_ucan || 'core.client_ucan';\n const audPath = authConfig.ucan_aud || 'core.ucan_aud';\n\n const _get = (obj: any, path: string) =>\n String(path || '')\n .split('.')\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .reduce((o: any, k: string) => (o ? o[k] : undefined), obj);\n\n const safePreview = (v: unknown) => {\n if (typeof v === 'string') return v.slice(0, 48) + (v.length > 48 ? '…' : '');\n if (v && typeof v === 'object') return `[object ${(v as any).constructor?.name || 'Object'}]`;\n try { return String(v); } catch { return '[unprintable]'; }\n };\n\n const token = _get(context.params, clientUcanPath);\n const audience = _get(context.params, audPath);\n const entityVal = context.params?.[entityKey];\n const core = context.params?.[corePath];\n\n const tokenType = typeof token;\n const dotCount = typeof token === 'string' ? (token.match(/\\./g) || []).length : -1;\n let parsedOk: boolean | undefined = undefined;\n try {\n // optional dependency at runtime; only used for diagnostics\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const { parseUcan } = require('symbol-ucan');\n const parsed = typeof token === 'string' ? parseUcan(token) : null;\n parsedOk = !!parsed && !!parsed?.payload;\n } catch {\n parsedOk = undefined;\n }\n\n // eslint-disable-next-line no-console\n console.log('[UCAN DIAG]', label, {\n clientUcanPath,\n audPath,\n tokenType,\n tokenPreview: safePreview(token),\n dotCount, // should be 2 for a compact JWS UCAN\n parsedOk, // true if parseUcan(token) yielded a payload\n audienceType: typeof audience,\n audiencePreview: safePreview(audience),\n entityKey,\n entityType: entityVal ? entityVal.constructor?.name || typeof entityVal : typeof entityVal,\n entityHasId: !!(entityVal && (entityVal._id || entityVal.id)),\n coreType: core ? core.constructor?.name || typeof core : typeof core,\n coreKeys: core && typeof core === 'object' ? Object.keys(core).slice(0, 10) : core,\n });\n};\n\nexport default logUcanParams;\n","import {_get, _set} from 'symbol-ucan';\nimport {HookContext} from '../types';\nimport {CoreCall} from '../core';\n\ntype AnyObj = any\n\nexport const existsPath = '_exists';\n\nexport const getExists = (context:Partial<HookContext>):any => {\n const path = context.app.get('existsPath') || existsPath;\n return _get(context.params, `core.${path}.${context.path}.${context.id}`) || undefined;\n}\n\nexport const loadExists = async (context:HookContext, options?:{ skipJoins?: boolean, params?: AnyObj, skip_hooks?:any }):Promise<any> => {\n let ex = getExists(context);\n if(!ex && context.id) {\n ex = await new CoreCall(context.path, context, { skipJoins: options?.skipJoins !== false }).get(context.id, { exists_check: true, admin_pass: true, skip_hooks: !!options?.skip_hooks, ...options?.params || {} })\n }\n return ex;\n}\n\nexport const setExists = (context:HookContext, val:any):HookContext => {\n const path = context.app.get('existsPath') || existsPath;\n context.params = _set(context.params, `core.${path}.${context.path}.${val?._id || context.id}`, val)\n return context;\n};\n","import {HookContext} from '../types';\nimport {authenticate} from '@feathersjs/authentication';\nimport {\n _get,\n _set,\n Capability,\n encodeKeyPair,\n genCapability,\n parseUcan,\n ucanToken,\n VerifyOptions,\n verifyUcan\n} from 'symbol-ucan';\nimport {logUcanParams} from '../utils/log-ucan-params';\nimport {NotAuthenticated} from '@feathersjs/errors';\nimport {loadExists, setExists} from '../utils';\nimport {CoreCall} from '../core';\n\ntype AnyObj = any\n\nconst SUPERUSER = '*'\n\nexport type UcanAuthConfig = {\n entity: string,\n service: string,\n client_ucan: string,\n ucan_aud: string,\n ucan_path: string,\n core_path: string,\n defaultHierPart: string,\n defaultScheme: string\n}\n\ntype AuthConfig = {\n [key: string]: string\n}\n\ntype AnyAuth = '*'\nexport const anyAuth: AnyAuth = '*' as AnyAuth;\ntype NoThrow = '$'\nexport const noThrow: NoThrow = '$' as NoThrow;\n\n\nexport type CapabilityParts = Partial<Capability> | [string, Array<string> | string];\n\nexport declare type LoginPassOption =\n [Array<string>, Array<string> | '*']\n | [Array<string>, Array<string> | '*', Array<string>];\nexport declare type UcanAuthOptions = {\n creatorPass?: '*' | Array<string>,\n loginPass?: Array<LoginPassOption>,\n or?: '*' | Array<string>\n adminPass?: Array<string>,\n noThrow?: boolean,\n log?: boolean,\n existingParams?: AnyObj,\n specialChange?: Array<string> | AnyAuth,\n cap_subjects?: Array<string>,\n special_params?: Record<string, any>, //Pass any params\n audience?: string\n}\ntype RequiredCapability = { capability: Capability, rootIssuer: string }\nexport type UcanCap = Array<CapabilityParts> | AnyAuth | NoThrow;\nexport type UcanAllArgs = {\n all?: UcanCap,\n get?: UcanCap,\n find?: UcanCap,\n create?: UcanCap,\n patch?: UcanCap,\n update?: UcanCap,\n remove?: UcanCap\n};\n\ntype VerifyOne = { ucan: string } & VerifyOptions;\n\ntype Auth = <S>(method: string) => (context: HookContext<S>) => Promise<HookContext<S>>\ntype Config = { entity: string, service: string, defaultScheme: string, defaultHierPart: string };\ntype VerifyRes = { ok: boolean, value?: Array<any>, err?: Array<any> };\n\nexport const noThrowAuth = async <S>(context: HookContext<S>): Promise<HookContext<S>> => {\n const config = context.app.get('authentication') as AuthConfig;\n const entity = _get(context, ['auth', config.entity]);\n if (entity) {\n context = _set(context, [config.core_path, config.entity], entity)\n }\n try {\n // Must pass explicit strategy per app requirements\n context = await authenticate('jwt')(context as any)\n .catch(() => {\n return context;\n })\n } catch (e) {\n return context;\n }\n return context;\n}\n\nexport const bareAuth = async <S>(context: HookContext<S>): Promise<HookContext<S>> => {\n const config = context.app.get('authentication') as AuthConfig;\n const entity = _get(context, ['auth', config.entity]);\n if (entity) context = _set(context, [config.core_path, config.entity], entity)\n // Must pass explicit strategy per app requirements\n return authenticate('jwt')(context as any);\n}\n\nconst verifyOne = async (ucan: string, options: VerifyOptions, log?: boolean) => {\n try {\n // Normalize UCAN input and guard against missing tokens\n let normalizedUcan: string | undefined = ucan as any;\n if (!normalizedUcan) {\n try {\n // ucanToken can stringify object-form UCANs; may throw if invalid\n normalizedUcan = ucanToken(ucan as any) as any;\n } catch (e) {\n normalizedUcan = undefined;\n }\n }\n if (!normalizedUcan || typeof normalizedUcan !== 'string' || normalizedUcan.trim() === '') {\n return {ok: false, err: ['Missing or invalid UCAN token']};\n }\n\n let v = await verifyUcan(normalizedUcan, options);\n if (!v?.ok && options.requiredCapabilities) {\n // Retry by widening segments to '*' for non-superuser namespaces, without mutating original reqs\n const newCapabilities = options.requiredCapabilities.map(rc => {\n const cloned = {\n ...rc,\n capability: {\n ...rc.capability,\n can: rc.capability.can === SUPERUSER ? SUPERUSER : {\n ...rc.capability.can\n }\n }\n } as typeof rc;\n if ((cloned.capability as any)?.can?.namespace !== SUPERUSER) {\n (cloned.capability as any).can.segments = ['*'];\n }\n return cloned;\n })\n if (log) {\n let parsed: any = undefined;\n try {\n parsed = parseUcan(normalizedUcan);\n } catch {\n }\n console.log('set new req capabilities', newCapabilities, parsed)\n }\n v = await verifyUcan(normalizedUcan, {\n ...options, requiredCapabilities: newCapabilities\n })\n if (log) console.log('Second verification result:', v);\n }\n return v;\n } catch (e: any) {\n return {ok: false, err: [e.message]}\n }\n};\nexport const orVerifyLoop = async (arr: Array<VerifyOne>, log?: boolean): Promise<VerifyRes> => {\n let v: any = {ok: false, value: []};\n\n try {\n for (const i in arr) {\n if (log) {\n let parsed: any = undefined;\n try {\n if (typeof arr[i].ucan === 'string') parsed = parseUcan(arr[i].ucan);\n } catch {\n }\n console.log('or verify loop', arr[i], parsed);\n }\n if (!v?.ok) {\n const {ucan, ...options} = arr[i];\n v = await verifyOne(ucan, options, log)\n if (log) console.log('got in verify loop', v);\n } else break;\n }\n return v;\n } catch (e: any) {\n return {ok: false, err: [e.message]}\n }\n}\n\nexport type VerifyConfig = {\n client_ucan: string,\n ucan_aud: string,\n [key: string]: any\n};\n\ntype MethodOpts = { aud?: string }\nexport const verifyAgainstReqs = <S>(reqs: Array<RequiredCapability>, config: VerifyConfig, options?: UcanAuthOptions) => {\n return async (context: HookContext<S>): Promise<VerifyRes> => {\n const log = options?.log\n let rawUcan = _get(context.params, config.client_ucan) as string;\n if(!rawUcan){\n const authCfg = context.app.get('authentication') as AnyObj;\n const entityKey = authCfg?.entity || 'login';\n rawUcan = _get(context.params, [entityKey, 'ucan']) as string;\n }\n if (log) console.log('get initial ucan', rawUcan)\n let ucan = rawUcan as unknown as string;\n try {\n // ucanToken will stringify a UCAN object or return the compact form for strings\n const maybe = ucanToken(rawUcan as any);\n if (maybe && typeof maybe === 'string') ucan = maybe;\n if (log && rawUcan !== ucan) console.log('Normalized client UCAN via ucanToken()');\n } catch (e: any) {\n if (log) console.log('UCAN normalization skipped (ucanToken threw):', e?.message);\n }\n\n const audience = options?.audience || _get(context.params, config.ucan_aud) as string;\n if (log) console.log('verify against reqs', reqs)\n let vMethod: (uc?: string, methodOpts?: MethodOpts) => Promise<VerifyRes>\n const or = options?.or || []\n if (ucan && (or === '*' || or.includes(context.method))) vMethod = (uc?: string, methodOpts?: MethodOpts) => orVerifyLoop((reqs || []).map(a => {\n return {\n ucan: uc || ucan,\n audience: methodOpts?.aud || audience,\n requiredCapabilities: [a]\n }\n }), log)\n else vMethod = (uc?: string, methodOpts?: MethodOpts) => verifyOne(uc || ucan, {\n audience: methodOpts?.aud || audience,\n requiredCapabilities: reqs\n }, log) as Promise<VerifyRes>\n let v = await vMethod()\n context.params.ucan_auth_result = v;\n if (log) console.log('first verify try', v);\n if (v?.ok) return v;\n const cs = (options?.cap_subjects || []).filter(a => !!a)\n if (log) console.log('check cap_subjects', cs);\n if (cs) {\n const configuration = config?.loginConfig || context.app.get('authentication') as AnyObj;\n const loginCheckId = String(_get(context.params, `${configuration.entity}._id` || '')) as any;\n const caps = await new CoreCall(configuration.capability_service || 'caps', context).find({\n query: {\n $limit: cs.length,\n subject: {$in: cs}\n },\n skip_hooks: true,\n admin_pass: true,\n skip_loop_detection: true,\n ...options?.special_params || {}\n })\n .catch(err => console.log(`Error finding caps in ucan auth: ${err.message}`))\n if (log) console.log('caps', caps);\n if (caps?.data) {\n for (const cap of caps.data) {\n for (const k in cap.caps || {}) {\n if (log) console.log('check cap', k, cap.caps[k].logins, loginCheckId);\n if ((cap.caps[k].logins || []).map((a: any) => String(a)).includes(loginCheckId)) {\n try {\n const ucanString = ucanToken(cap.caps[k].ucan)\n if (log) console.log('got ucan string', ucanString);\n if (ucanString) {\n v = await vMethod(ucanString, {aud: cap.did})\n if (log) console.log('tried v on cap', v);\n }\n } catch (e: any) {\n console.log(`Error verifying ucan from cap: ${cap._id}. Err:${e.message}`)\n }\n if (options?.log) console.log('tried v on cap', v);\n if (v?.ok) return v;\n }\n }\n }\n }\n }\n return v;\n }\n}\n\nexport type CapabilityModelConfig = {\n defaultScheme: string,\n defaultHierPart: string,\n secret: string,\n [key: string]: any\n};\n\nexport const modelCapabilities = (reqs: Array<CapabilityParts>, config: CapabilityModelConfig): Array<RequiredCapability> => {\n\n const rootIssuer = encodeKeyPair({secretKey: config.secret}).did();\n if (!Array.isArray(reqs)) return []\n return reqs.map(a => {\n return {\n capability: Array.isArray(a) ? genCapability({\n with: {scheme: config.defaultScheme, hierPart: config.defaultHierPart},\n can: {namespace: a[0], segments: typeof a[1] === 'string' ? [a[1]] : a[1]}\n }, config) : genCapability(a, config),\n rootIssuer\n };\n }) as Array<RequiredCapability>\n};\n\nexport declare type PassConfig = {\n loginConfig?: VerifyConfig\n}\nexport const checkUcan = (requiredCapabilities: UcanCap, options?: UcanAuthOptions & PassConfig) => {\n return async (context: HookContext): Promise<HookContext> => {\n const configuration = options?.loginConfig || context.app.get('authentication') as AnyObj;\n\n let v: any = {ok: false, value: []};\n\n const reqs: Array<RequiredCapability> = modelCapabilities(requiredCapabilities as Array<CapabilityParts>, configuration as CapabilityModelConfig);\n\n if (reqs.length) {\n v = await verifyAgainstReqs(reqs, configuration as VerifyConfig, options)(context)\n\n /** if the anyAuth setting is used along with specialChange, a user could get through to this point despite not being authenticated, so this step does not allow a pass for anyAuth setting even though no requiredCapabilities are present - because it was intended to throw if not authenticated unless special change conditions are met */\n } else if (requiredCapabilities !== '*') v.ok = true;\n if (v?.ok) {\n context.params.authenticated = true;\n context.params.canU = true;\n return context\n } else {\n\n // if (!v?.ok) {\n // let hasSplitNamespace = false;\n // const reducedReqs: Array<RequiredCapability> = [];\n // reqs.forEach((req, i) => {\n // const splt = (_get<RequiredCapability, string>(req, 'capability.can.namespace') || '').split(':')\n // if (splt[1]) {\n // req = _set(req, 'capability.can.namespace', splt[0]);\n // hasSplitNamespace = true;\n // }\n // reducedReqs.push(req)\n // })\n // if (hasSplitNamespace) v = await verifyAgainstReqs(reqs, configuration as VerifyConfig, options)(context);\n // }\n\n\n if (options?.log) console.log('checking special change', options?.specialChange);\n if (options?.specialChange) {\n if (options.specialChange === anyAuth) {\n context.params.canU = true;\n return context;\n } else if (Array.isArray(options.specialChange)) {\n if (['create', 'patch', 'update'].includes(context.method)) {\n if (Array.isArray(context.data)) throw new Error('No multi data allowed with special change')\n for (const k in context.data || {}) {\n if (['$set', '$unset', '$addToSet', '$pull', '$push'].includes(k)) {\n for (const sk in context.data[k] || {}) {\n if (!options.specialChange.includes(sk)) {\n const spl = sk.split('.');\n if (spl.length === 1) delete context.data[k][sk];\n else if (!options.specialChange.includes(spl[0])) delete context.data[k][sk]\n }\n }\n } else if (!options.specialChange.includes(k)) delete context.data[k];\n }\n context.params.canU = true;\n return context;\n }\n }\n }\n if (v?.ok) {\n context.params.authenticated = true;\n context.params.canU = true;\n return context;\n } else {\n\n //If creator pass enabled, check to see if the auth login is the creator of the record\n const {loginPass} = options || {loginPass: [[['*'], ['nonExistentMethod']]]}\n if (loginPass?.length) {\n //object of scrubbed data object for pass that includes only limited access or full context.data object if no limits were present\n let scrubbedData: AnyObj = {};\n //scruData defaults to true - is only set to false\n let scrubData = true;\n const checkLoginPass = async (lpass: LoginPassOption) => {\n let methodsOnly = [];\n const allMethods = lpass[1] === '*';\n let methodIdx = -1;\n if (allMethods) methodIdx = 0;\n else {\n //separate out any field specific methods e.g. patch/name,avatar\n methodsOnly = (lpass[1] as string[]).map(a => a.split('/')[0]);\n methodIdx = methodsOnly.indexOf(context.method);\n }\n /**ensure loginPass is allowed for this method*/\n if (methodIdx > -1) {\n /**retrieve existing record to check ids for login id*/\n const existing = await loadExists(context, {params: options?.existingParams});\n let loginOk = false;\n\n /** function for comparing record login id with context login*/\n const checkLogin = (recordLoginPassId: string, loginIdPath: string = '_id') => {\n const loginCheckId = _get(context.params, `${configuration.entity}.${loginIdPath}`) as any;\n if(options?.log) console.log('checkLoginPass', loginCheckId, recordLoginPassId);\n /**Make sure both are present to avoid pass on undefined*/\n if (loginCheckId && recordLoginPassId) {\n /** change login path result to array no matter what */\n const checkArr = Array.isArray(loginCheckId) ? loginCheckId.map(a => String(a)) : [String(loginCheckId)];\n if (Array.isArray(recordLoginPassId)) {\n /**loop through to see if there is a match present use for loops for performance instead of some*/\n for (let i = 0; i < checkArr.length; i++) {\n const checkId = String(checkArr[i])\n for (let rl = 0; rl < recordLoginPassId.length;) {\n const rlId = String(recordLoginPassId[rl]);\n if (rlId === checkId) loginOk = true;\n else rl++;\n }\n if (loginOk) return;\n }\n } else if (checkArr.includes(String(recordLoginPassId))) {\n return loginOk = true;\n }\n } else return\n }\n\n if (existing) {\n context = setExists(context, existing);\n /**perform the check*/\n const idArr = Array.isArray(lpass[2]) ? lpass[2] : lpass[0] || [];\n for (const passPath of idArr || []) {\n const spl = String(passPath).split('/');\n if (spl[0].includes('*')) {\n const spl2 = spl[0].split('*');\n const obj = _get(existing, spl2[0]);\n if (obj && typeof obj === 'object') {\n if (Array.isArray(obj)) {\n /** IF array, iterate through array and check the sub-path */\n for (const o of obj) {\n checkLogin(_get(o, spl2[1]) as string, spl[1] || '_id');\n if (loginOk) break;\n }\n } else {\n /** IF object, iterate through object and check the sub-path */\n for (const k in obj) {\n checkLogin(_get(obj, `${k}.${spl2[1]}`) as string, spl[1] || '_id')\n if (loginOk) break;\n }\n }\n }\n\n } else checkLogin(_get(existing, spl[0]) as string, spl[1] || '_id');\n\n }\n }\n\n if (loginOk) {\n v.ok = true\n /**loginPass is true - but check for granular field permissions such as patch/owner,color,status that imply limited permission*/\n //TODO: possibly a throw option here. If loginPass is ok, it will go forward, but could send an empty or modified patch object\n if (lpass[1] !== '*' && !['find', 'get', 'remove'].some(a => lpass[1].includes(a))) {\n const currentMethod = allMethods ? '*' : lpass[1][methodIdx];\n const splitMethod = currentMethod.split('/')[0];\n //check if current method contains a split '/' signaling limited permission check\n if (splitMethod !== currentMethod) {\n //get an array of the allowed fields\n const fields = currentMethod.split('/').slice(1).join('').split(',') || [];\n\n for (const field of fields) {\n const topLevel = _get(context.data, field);\n if (topLevel) scrubbedData = _set(scrubbedData, field, topLevel);\n else {\n for (const operator of ['$addToSet', '$pull']) {\n const operatorLevel = _get(context.data, `${operator}.${field}`);\n if (operatorLevel) scrubbedData = _set(scrubbedData, `${operator}.${field}`, operatorLevel);\n }\n }\n }\n } else scrubData = false;\n } else scrubData = false;\n }\n }\n }\n\n for await (const lpass of loginPass) {\n if (scrubData) await checkLoginPass(lpass);\n else break;\n }\n if (scrubData) context = _set(context, 'data', scrubbedData);\n }\n\n if (v?.ok) {\n context.params.authenticated = true;\n context.params.canU = true;\n return context;\n } else {\n\n if (options?.log) console.error('Ucan capabilities requirements not met: ', v, context.type, context.path);\n if (!options?.noThrow) throw new Error('Missing proper capabilities for this action: ' + context.type + ': ' + context.path + ' - ' + context.method);\n else {\n // Preserve verification details on the context so callers can inspect why UCAN failed\n // (e.g., expired token) when using the noThrow option.\n context.params._no_throw_error = {\n type: context.type,\n method: context.method,\n path: context.path,\n verify: v // includes v.ok, v.err, and any details from verifyUcan\n }\n return context;\n }\n }\n }\n }\n }\n}\n\nexport const ucanAuth = <S>(requiredCapabilities?: UcanCap, options?: UcanAuthOptions) => {\n return async (context: HookContext<S>): Promise<HookContext<S>> => {\n const configuration = context.app.get('authentication') as AnyObj;\n const core_path = configuration.core_path || 'core';\n const entity = configuration.entity || 'login';\n\n // Diagnostics: show how/where we try to source the login when options.log is enabled\n if (options?.log) {\n try {\n const src1: any = _get(context.params, [core_path, entity]);\n const src2: any = _get(context.params, 'login');\n const src3: any = _get(context.params, ['connection', entity]);\n const authHeaderToken = _get(context.params, ['headers', 'authorization']);\n console.log('[UCAN DIAG] ucanAuth:login-sourcing', {\n entityKey: entity,\n corePath: core_path,\n // preview the three candidate sources\n src1Type: src1 ? (src1.constructor?.name || typeof src1) : typeof src1,\n src1HasId: !!(src1 && (src1._id || src1.id)),\n src2Type: src2 ? (src2.constructor?.name || typeof src2) : typeof src2,\n src2HasId: !!(src2 && (src2._id || src2.id)),\n src3Type: src3 ? (src3.constructor?.name || typeof src3) : typeof src3,\n src3HasId: !!(src3 && (src3._id || src3.id)),\n paramsKeys: Object.keys(context.params || {}).slice(0, 20),\n provider: (context as any).params?.provider,\n path: (context as any).path,\n method: (context as any).method,\n hasAuthHeader: typeof authHeaderToken === 'string' && authHeaderToken.length > 0\n });\n } catch {\n }\n }\n\n const existingLogin: any = _get(context.params, [core_path, entity]) || _get(context.params, 'login') || _get(context.params.connection, entity);\n // Ensure params[entity] is always an object with _id when a login identifier exists\n if (existingLogin) {\n context.params[entity] = typeof existingLogin === 'string'\n ? {_id: existingLogin}\n : existingLogin;\n }\n const loginId = typeof existingLogin === 'string' ? existingLogin : existingLogin?._id;\n const hasLogin = !!(existingLogin && (typeof existingLogin === 'string' || !!loginId));\n // Per requirement: UCAN is always at context.params[entity].ucan\n const existingUcan = _get(context.params, configuration.client_ucan || 'client_ucan') || _get(context.params, [entity, 'ucan']);\n\n if (options?.log) console.log('ucan auth', 'hasLogin', hasLogin, 'loginId', loginId, 'existingUcan', !!existingUcan, 'core_path', core_path, 'entity', entity, 'core', context.params[core_path], 'params login', context.params.login, 'required capabilities', requiredCapabilities);\n if (options?.log && !hasLogin) {\n try {\n logUcanParams('ucanAuth:pre-auth', context);\n } catch {\n }\n }\n //Below for passing through auth with no required capabilities\n if (requiredCapabilities === noThrow || (requiredCapabilities && requiredCapabilities[context.method] === noThrow)) return hasLogin ? context : await noThrowAuth(context);\n const adminPass = (options?.adminPass || []).includes(context.method) && (_get(context.params, 'admin_pass') || _get(context.params, [configuration.core_path, 'admin_pass'])) as any\n // If no login is present and no client UCAN is provided, perform authentication. Otherwise, reuse existing state/ucan.\n // Pass through a lightweight log flag so the strategy can emit diagnostics when enabled\n if (!hasLogin && !existingUcan) {\n if (options?.log) {\n try {\n (context as any).params = {...(context as any).params, log: true};\n } catch {\n }\n }\n context = (adminPass || options?.specialChange) ? await noThrowAuth(context) : await bareAuth(context);\n }\n if (options?.log && !hasLogin) {\n // Log again after attempting auth to see if strategy populated the login\n const postLogin: any = _get(context.params, [core_path, entity]) || _get(context.params, 'login') || _get(context.params.connection, entity);\n const postId = typeof postLogin === 'string' ? postLogin : postLogin?._id;\n console.log('[UCAN DIAG] ucanAuth:post-auth', {hasLogin: !!postLogin, postId, entityKey: entity});\n }\n if (requiredCapabilities === anyAuth && !options?.specialChange) {\n context.params.authenticated = !!context.params[entity];\n return context;\n }\n if (adminPass) return context;\n if (!requiredCapabilities) return context;\n return await checkUcan(requiredCapabilities, options)(context)\n }\n}\n\nexport const allUcanAuth = <S>(methods: UcanAllArgs, options?: UcanAuthOptions) => {\n return async (context: HookContext<S>): Promise<HookContext<S>> => {\n const config = context.app.get('authentication') as AuthConfig;\n // if a login is already present in params[core_path][entity], don't overwrite it\n const corePath = (config as any).core_path || 'core';\n const entityKey = (config as any).entity || 'login';\n const existingLogin = _get(context.params, [corePath, entityKey]);\n if (!existingLogin) {\n const entity = _get(context, ['auth', entityKey]);\n if (entity) context = _set(context, [corePath, entityKey], entity)\n }\n if (context.type === 'before') {\n const {method} = context as { method: keyof UcanAllArgs } & HookContext<S>;\n if (methods[method as keyof UcanAllArgs] || methods['all']) {\n return await ucanAuth(methods[method] || methods['all'], options)(context) as any;\n } else return context;\n } else return context;\n }\n}\n\nexport const handleAuthError = (err: any) => {\n return (context: HookContext) => {\n const authErrors = context.params?.ucan_auth_result?.err\n const message =\n Array.isArray(authErrors) && authErrors[0]\n ? authErrors[0]\n : err?.message || String(err) || 'authentication failed'\n\n const m = message?.toLowerCase() || ''\n const settings = {\n ucan: {\n reason: m.includes('expired') ? 'expired' : message\n }\n }\n\n console.warn(`Authentication error on ${context.path}: ${message}`)\n\n throw new NotAuthenticated(message, settings)\n }\n}\n","import {\n _get,\n buildUcan,\n encodeKeyPair,\n parseUcan,\n reduceAbilities,\n stackAbilities,\n ucanToken,\n validateUcan,\n verifyUcan\n} from 'symbol-ucan';\nimport {CoreCall} from '../core'\n\n\nexport const updateUcan = () => {\n return async (context:any) => {\n\n const { add = [], remove = [] } = context.data;\n //ensure capabilities were passed\n if(!add?.length && !remove?.length) throw new Error('No new capabilities passed');\n\n //check ability to edit the affected capabilities\n const {secret, ucan_aud, entity, ucan} = context.app.get('authentication');\n const rootIssuer = encodeKeyPair({secretKey: secret}).did();\n\n const checkAbilities = stackAbilities([...add, ...remove]);\n\n const canEdit = await verifyUcan(_get(context.params, [entity, ucan]) as string, {\n audience: _get(context.params, ucan_aud) as string,\n requiredCapabilities: checkAbilities.map(a => {\n return {\n //TODO: possibly READ shouldn't have the ability to allow others to READ\n capability: a,\n rootIssuer\n }\n })\n })\n\n if(!canEdit?.ok) throw new Error('You don\\'t have sufficient capabilities to grant those capabilities')\n\n //prep edited ucan\n const subjectId = context.id;\n const service = context.data.service || 'logins';\n const path = context.data.path || 'ucan';\n const subject = await new CoreCall(service, context, { skipJoins: true }).get(subjectId, { admin_pass: true, skip_hooks: true });\n\n const decoded = parseUcan(_get(subject, path) as string);\n const {aud, att, fct, nbf, prf} = decoded.payload;\n\n let capabilities = [...att];\n if(remove?.length) capabilities = reduceAbilities(remove, att);\n if(add?.length) capabilities = stackAbilities([...att, ...add]);\n\n\n const raw = await buildUcan({\n issuer: encodeKeyPair({secretKey: secret}),\n audience: aud,\n lifetimeInSeconds: 60 * 60 * 24 * 60,\n proofs: prf,\n ...context.data,\n capabilities\n });\n\n const encoded = ucanToken(raw);\n const isValid = await validateUcan(encoded);\n if (!isValid) throw new Error('Invalid ucan generated when updating');\n const patched = await new CoreCall(service, context).patch(subjectId, { [path]: encoded });\n context.result = {raw: context.data, encoded, subject: patched};\n return context;\n }\n};\n"],"names":["NotAuthError","Error","constructor","message","SPLIT_HEADER","UcanStrategy","AuthenticationBaseStrategy","args","expirationTimers","WeakMap","setAuthentication","auth","verifyAccessToken","accessToken","configuration","_this$authentication","_this$authentication2","authConfig","authentication","service","undefined","entity","entityId","config","core_path","header","schemes","handleConnection","event","connection","authResult","isValidLogout","validUcan","validateUcan","catch","err","console","log","errObj","code","indexOf","payload","exp","duration","Date","now","timer","lt","setTimeout","app","emit","clearTimeout","get","set","strategy","name","delete","verifyConfiguration","allowedKeys","key","Object","keys","includes","getEntityQuery","_params","getEntity","id","params","entityService","query","getParams","assign","_unset","result","provider","getEntityId","loginId","_this$app","pms","$limit","skipJoins","paramsKeys","slice","entities","find","skip_hooks","admin_pass","first","_entities$data","data","Array","isArray","_id","authenticate","ucan","ucanToken","tokenStr","String","trim","dotCount","match","length","decodedUcan","_decodedUcan$payload","aud","hasParamsEntity","_get","value","coreEntity","_this$configuration","_decodedUcan$payload2","idField","audience","usedCoreAud","parse","req","headerValue","headers","toLowerCase","scheme","schemeValue","hasScheme","some","current","RegExp","test","raw","token","AuthService","AuthenticationService","configKey","opts","NotAuthenticated","rest","options","create","_this$options","NotAuth","ucan_path","authStrategies","did","validatedUcan","warn","parsed","parseUcan","secret","issuer","encodeKeyPair","secretKey","buildUcan","lifetimeInSeconds","capabilities","att","patch","CoreCall","context","coreOptions","_context$params","core","_this$context$app","_this$context$app2","_this$context$app3","_this$context$app4","update","_this$context$app5","remove","_this$context$app6","_this$context$app7","_find","_this$context$app8","_create","_this$context$app9","_patch","_this$context$app10","_update","_this$context$app11","_remove","_this$context$app12","logUcanParams","label","_context$app","_context$params2","_entityVal$constructo","_core$constructor","corePath","entityKey","clientUcanPath","client_ucan","audPath","ucan_aud","obj","path","split","reduce","o","k","safePreview","v","_v$constructor","entityVal","tokenType","parsedOk","require","tokenPreview","audienceType","audiencePreview","entityType","entityHasId","coreType","coreKeys","existsPath","getExists","loadExists","ex","exists_check","setExists","val","_set","SUPERUSER","anyAuth","noThrow","noThrowAuth","e","bareAuth","verifyOne","_v","normalizedUcan","ok","verifyUcan","requiredCapabilities","newCapabilities","map","rc","_cloned$capability","cloned","capability","can","namespace","segments","orVerifyLoop","arr","i","_v2","verifyAgainstReqs","reqs","_v3","rawUcan","authCfg","maybe","vMethod","or","method","uc","methodOpts","a","ucan_auth_result","cs","cap_subjects","filter","loginConfig","loginCheckId","caps","capability_service","subject","$in","skip_loop_detection","special_params","cap","logins","_v4","ucanString","modelCapabilities","rootIssuer","genCapability","with","defaultScheme","hierPart","defaultHierPart","checkUcan","_v5","authenticated","canU","_v6","specialChange","sk","spl","_v7","loginPass","scrubbedData","scrubData","checkLoginPass","lpass","methodsOnly","allMethods","methodIdx","existing","existingParams","loginOk","checkLogin","recordLoginPassId","loginIdPath","checkArr","checkId","rl","rlId","idArr","passPath","spl2","currentMethod","splitMethod","fields","join","field","topLevel","operator","operatorLevel","error","type","_no_throw_error","verify","ucanAuth","_src1$constructor","_src2$constructor","_src3$constructor","src1","src2","src3","authHeaderToken","src1Type","src1HasId","src2Type","src2HasId","src3Type","src3HasId","hasAuthHeader","existingLogin","hasLogin","existingUcan","login","adminPass","postLogin","postId","allUcanAuth","methods","handleAuthError","authErrors","m","settings","reason","updateUcan","add","checkAbilities","stackAbilities","canEdit","subjectId","decoded","fct","nbf","prf","reduceAbilities","proofs","encoded","isValid","patched"],"mappings":";;;;;;;;;AAYM,MAAOA,cAAa,SAAQC,KAAK,CAAA;EACnCC,WAAAA,CAAYC,OAAgB,EAAA;IACxB,KAAK,CAACA,OAAO,CAAC,CAAA;AAClB,GAAA;AACH,CAAA;AACD,MAAMC,YAAY,GAAG,eAAe,CAAA;AAI9B,MAAOC,YAAa,SAAQC,yCAA0B,CAAA;AAAAJ,EAAAA,WAAAA,CAAA,GAAAK,IAAA,EAAA;AAAA,IAAA,KAAA,CAAA,GAAAA,IAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CACxDC,gBAAgB,GAAG,IAAIC,OAAO,EAAE,CAAA;AAAA,GAAA;EAEhCC,iBAAiBA,CAACC,IAAwB,EAAA;AACtC;AACAA,IAAAA,IAAI,CAACC,iBAAiB,GAAIC,WAAmB,IAAI;AAC7C,MAAA,OAAO,EAAS,CAAA;KACnB,CAAA;AACD,IAAA,KAAK,CAACH,iBAAiB,CAACC,IAAI,CAAC,CAAA;AACjC,GAAA;EAEA,IAAIG,aAAaA,GAAA;IAAA,IAAAC,oBAAA,EAAAC,qBAAA,CAAA;IACb,MAAMC,UAAU,GAAG,CAAA,CAAAF,oBAAA,GAAA,IAAI,CAACG,cAAc,KAAnBH,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,oBAAA,CAAqBD,aAAa,KAAI;AACrDK,MAAAA,OAAO,EAAEC,SAAS;AAClBC,MAAAA,MAAM,EAAED,SAAS;AACjBE,MAAAA,QAAQ,EAAEF,SAAAA;KACb,CAAA;AACD,IAAA,MAAMG,MAAM,GAAG,KAAK,CAACT,aAAa,CAAA;IAElC,OAAO;MACHK,OAAO,EAAEF,UAAU,CAACE,OAAO;MAC3BE,MAAM,EAAEJ,UAAU,CAACI,MAAM;MACzBC,QAAQ,EAAEL,UAAU,CAACK,QAAQ;AAC7B;MACAE,SAAS,EAAG,EAAAR,qBAAA,GAAA,IAAI,CAACE,cAAc,KAAA,IAAA,IAAA,CAAAF,qBAAA,GAAnBA,qBAAA,CAAqBF,aAAqB,KAAA,IAAA,GAAA,KAAA,CAAA,GAA1CE,qBAAA,CAA4CQ,SAAS,MAAKP,UAAkB,IAAA,IAAA,GAAA,KAAA,CAAA,GAAlBA,UAAkB,CAAEO,SAAS,CAAA;AACnGC,MAAAA,MAAM,EAAE,eAAe;AACvBC,MAAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC;MAC1B,GAAGH,MAAAA;KACN,CAAA;AACL,GAAA;AAEA,EAAA,MAAMI,gBAAgBA,CAACC,KAAsB,EAAEC,UAAe,EAAEC,UAAiC,EAAA;IAC7F,MAAMC,aAAa,GAAGH,KAAK,KAAK,QAAQ,IAAIC,UAAU,CAACX,cAAc,IAAIY,UAAU,IAC/ED,UAAU,CAACX,cAAc,CAACL,WAAW,KAAKiB,UAAU,CAACjB,WAAW,CAAA;IAEpE,MAAM;MAACA,WAAW;AAAEQ,MAAAA,MAAAA;KAAO,GAAGS,UAAU,IAAI,EAAE,CAAA;AAE9C,IAAA,IAAIjB,WAAW,IAAIe,KAAK,KAAK,OAAO,EAAE;MAClC,MAAMI,SAAS,GAAG,MAAMC,uBAAY,CAACpB,WAAW,CAAC,CAC5CqB,KAAK,CAACC,GAAG,IAAG;QACTC,OAAO,CAACC,GAAG,CAAC,yCAAyC,EAAEF,GAAG,CAAChC,OAAO,CAAC,CAAA;AACnE,QAAA,MAAMmC,MAAM,GAAG;AACXC,UAAAA,IAAI,EAAE,CAAC;AACPpC,UAAAA,OAAO,EAAE,+BAAA;SACZ,CAAA;QACD,IAAIgC,GAAG,CAAChC,OAAO,CAACqC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;UACtCF,MAAM,CAACC,IAAI,GAAG,CAAC,CAAA;UACfD,MAAM,CAACnC,OAAO,GAAG,cAAc,CAAA;AACnC,SAAA;AACA,QAAA,MAAM,IAAIF,KAAK,CAACqC,MAAM,CAACnC,OAAO,CAAC,CAAA;AACnC,OAAC,CAAC,CAAA;MACN,MAAM;AAACsC,QAAAA,OAAO,EAAE;AAACC,UAAAA,GAAAA;AAAG,SAAA;OAAE,GAAGV,SAAS,IAAI;AAACS,QAAAA,OAAO,EAAE;AAACC,UAAAA,GAAG,EAAE,CAAA;AAAC,SAAA;OAAE,CAAA;AACzD;MACA,MAAMC,QAAQ,GAAID,GAAG,GAAG,IAAI,GAAIE,IAAI,CAACC,GAAG,EAAE,CAAA;AAC1C;AACA;AACA,MAAA,MAAMC,KAAK,GAAGC,sBAAE,CAACC,UAAU,CAAC,MAAO,IAAI,CAACC,GAAW,CAACC,IAAI,CAAC,YAAY,EAAErB,UAAU,CAAC,EAAEc,QAAQ,CAAC,CAAA;MAE7FI,sBAAE,CAACI,YAAY,CAAC,IAAI,CAAC3C,gBAAgB,CAAC4C,GAAG,CAACvB,UAAU,CAAC,CAAC,CAAA;MACtD,IAAI,CAACrB,gBAAgB,CAAC6C,GAAG,CAACxB,UAAU,EAAEiB,KAAK,CAAC,CAAA;MAE5CjB,UAAU,CAACX,cAAc,GAAG;QACxBoC,QAAQ,EAAE,IAAI,CAACC,IAAI;AACnB1C,QAAAA,WAAAA;OACH,CAAA;AACL,KAAC,MAAM,IAAIe,KAAK,KAAK,YAAY,IAAIG,aAAa,EAAE;MAChD,MAAM;AAACV,QAAAA,MAAAA;OAAO,GAAG,IAAI,CAACP,aAAa,CAAA;MAEnC,OAAOe,UAAU,CAACR,MAAM,CAAC,CAAA;MACzB,OAAOQ,UAAU,CAACX,cAAc,CAAA;MAEhC6B,sBAAE,CAACI,YAAY,CAAC,IAAI,CAAC3C,gBAAgB,CAAC4C,GAAG,CAACvB,UAAU,CAAC,CAAC,CAAA;AACtD,MAAA,IAAI,CAACrB,gBAAgB,CAACgD,MAAM,CAAC3B,UAAU,CAAC,CAAA;AAC5C,KAAA;AACJ,GAAA;AAEA4B,EAAAA,mBAAmBA,GAAA;AACf;AACA;AACA;AACA,IAAA,MAAMC,WAAW,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;IAEnG,KAAK,MAAMC,GAAG,IAAIC,MAAM,CAACC,IAAI,CAAC,IAAI,CAAC/C,aAAa,CAAC,EAAE;AAC/C,MAAA,IAAI,CAAC4C,WAAW,CAACI,QAAQ,CAACH,GAAG,CAAC,EAAE;QAC5B,MAAM,IAAI1D,KAAK,CAAgD,CAAA,4CAAA,EAAA,IAAI,CAACsD,IAAQ,CAAA,CAAA,EAAAI,GAA8D,CAAA,yDAAA,CAAA,CAAC,CAAA;AAC/I,OAAA;AACJ,KAAA;IAEA,IAAI,OAAO,IAAI,CAAC7C,aAAa,CAACW,MAAM,KAAK,QAAQ,EAAE;MAC/C,MAAM,IAAIxB,KAAK,CAAC,CAAA,4BAAA,EAA+B,IAAI,CAACsD,IAAgC,4BAAA,CAAC,CAAA;AACzF,KAAA;AACJ,GAAA;AAEA;EACA,MAAMQ,cAAcA,CAACC,OAAY,EAAA;AAC7B,IAAA,OAAO,EAAE,CAAA;AACb,GAAA;AAEA;;;;AAIG;AACH,EAAA,MAAMC,SAASA,CAACC,EAAU,EAAEC,MAAW,EAAA;AACnC,IAAA,MAAMC,aAAa,GAAG,IAAI,CAACA,aAAa,CAAA;IACxC,MAAM;AAAC/C,MAAAA,MAAAA;KAAO,GAAG,IAAI,CAACP,aAAa,CAAA;IAEnC,IAAIsD,aAAa,KAAK,IAAI,EAAE;AACxB,MAAA,MAAM,IAAIpE,cAAY,CAAC,+BAA+B,CAAC,CAAA;AAC3D,KAAA;IAEA,MAAMqE,KAAK,GAAG,MAAM,IAAI,CAACN,cAAc,CAACI,MAAM,CAAC,CAAA;AAC/C,IAAA,MAAMG,SAAS,GAAGV,MAAM,CAACW,MAAM,CAAC,EAAE,EAAEC,iBAAM,CAACL,MAAM,EAAE,UAAU,CAAC,EAAE;AAACE,MAAAA,KAAAA;AAAK,KAAC,CAAC,CAAA;IACxE,MAAMI,MAAM,GAAG,MAAML,aAAa,CAAChB,GAAG,CAACc,EAAE,EAAEI,SAAS,CAAC,CAAA;AAErD,IAAA,IAAI,CAACH,MAAM,CAACO,QAAQ,EAAE;AAClB,MAAA,OAAOD,MAAM,CAAA;AACjB,KAAA;AAEA,IAAA,OAAOL,aAAa,CAAChB,GAAG,CAACc,EAAE,EAAE;AAAC,MAAA,GAAGC,MAAM;AAAE,MAAA,CAAC9C,MAAM,GAAGoD,MAAAA;AAAM,KAAC,CAAC,CAAA;AAC/D,GAAA;AAEA,EAAA,MAAME,WAAWA,CAAC7C,UAAgC,EAAEkC,OAAe,EAAA;IAC/D,IAAI;MAACK,KAAK;AAAEO,MAAAA,OAAAA;AAAQ,KAAA,GAAGZ,OAAO,CAAA;AAC9B,IAAA,IAAIY,OAAO,EAAE,OAAOA,OAAO,CAAC,KACvB;AAAA,MAAA,IAAAC,SAAA,CAAA;MACD,MAAM;QAAC1D,OAAO;AAAEK,QAAAA,SAAS,GAAG,MAAA;OAAO,GAAG,IAAI,CAACV,aAAa,CAAA;AACxD,MAAA,MAAMgE,GAAG,GAAG;AACRT,QAAAA,KAAK,EAAE;AAAC,UAAA,GAAGA,KAAK;AAAEU,UAAAA,MAAM,EAAE,CAAA;SAAE;AAC5B,QAAA,CAACvD,SAAS,GAAG;AAACwD,UAAAA,SAAS,EAAE,IAAI;UAAE,GAAGhB,OAAO,CAACxC,SAAS,CAAA;AAAE,SAAA;OACxD,CAAA;AACD;AACA,MAAA,IAAIwC,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAE3B,GAAG,EAAE;QACd,IAAI;AACAD,UAAAA,OAAO,CAACC,GAAG,CAAC,kCAAkC,EAAE;YAC5ClB,OAAO;YACPK,SAAS;YACT6C,KAAK,EAAES,GAAG,CAACT,KAAK;YAChBK,QAAQ,EAAEV,OAAO,CAACU,QAAQ;AAC1BO,YAAAA,UAAU,EAAErB,MAAM,CAACC,IAAI,CAACG,OAAO,IAAI,EAAE,CAAC,CAACkB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAA;AACrD,WAAA,CAAC,CAAA;SACL,CAAC,MAAM,EAAC;AACb,OAAA;AACA,MAAA,MAAMC,QAAQ,GAAG,OAAA,CAAAN,SAAA,GAAM,IAAI,CAAC5B,GAAG,KAAR4B,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAA,CAAU1D,OAAO,CAACA,OAAO,CAAC,CAACiE,IAAI,CAAC;AAAC,QAAA,GAAGN,GAAG;AAAEE,QAAAA,SAAS,EAAE,IAAI;AAAEK,QAAAA,UAAU,EAAE,IAAI;AAAEC,QAAAA,UAAU,EAAE,IAAA;AAAI,OAAQ,CAAC,CAAA,CAAA;AAC5H;AACA;AACA;MACA,IAAIC,KAAK,GAAQnE,SAAS,CAAA;MAC1B,IAAI+D,QAAQ,IAAI,OAAOA,QAAQ,KAAK,QAAQ,IAAI,MAAM,IAAIA,QAAQ,EAAE;AAAA,QAAA,IAAAK,cAAA,CAAA;QAChED,KAAK,GAAA,CAAAC,cAAA,GAAIL,QAAgB,CAACM,IAAI,KAArBD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,cAAA,CAAwB,CAAC,CAAC,CAAA;OACtC,MAAM,IAAIE,KAAK,CAACC,OAAO,CAACR,QAAQ,CAAC,EAAE;AAChCI,QAAAA,KAAK,GAAGJ,QAAQ,CAAC,CAAC,CAAC,CAAA;AACvB,OAAA;MACA,IAAII,KAAK,IAAIA,KAAK,CAACK,GAAG,EAAE,OAAOL,KAAK,CAACK,GAAG,CAAA;AACxC,MAAA,MAAM,IAAI5F,cAAY,CAAC,gDAAgD,CAAC,CAAA;AAC5E,KAAA;AACJ,GAAA;AAEA,EAAA,MAAM6F,YAAYA,CAAC3E,cAAqC,EAAEiD,MAAc,EAAA;IACpE,IAAI;MAACtD,WAAW;MAAE+D,OAAO;AAAEkB,MAAAA,IAAAA;AAAI,KAAC,GAAG5E,cAAc,CAAA;IACjD,MAAM;MAACG,MAAM;AAAEG,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACV,aAAa,CAAA;IAC9C,IAAI,CAACD,WAAW,EAAE;AAEd,MAAA,IAAIiF,IAAI,EAAEjF,WAAW,GAAGkF,oBAAS,CAACD,IAAI,CAAC,CAAC,KACnC,MAAM,IAAI9F,cAAY,CAAC,2BAA2B,CAAC,CAAA;AACxD;AACJ,KAAA;AAEA;IACA,MAAMgG,QAAQ,GAAGC,MAAM,CAACpF,WAAW,IAAI,EAAE,CAAC,CAACqF,IAAI,EAAE,CAAA;AACjD,IAAA,MAAMC,QAAQ,GAAG,CAACH,QAAQ,CAACI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAEC,MAAM,CAAA;AACrD,IAAA,IAAI,CAACL,QAAQ,IAAIA,QAAQ,KAAK,MAAM,IAAIA,QAAQ,KAAK,WAAW,IAAIG,QAAQ,KAAK,CAAC,EAAE;AAChF,MAAA,MAAM,IAAInG,cAAY,CAAC,oEAAoE,CAAC,CAAA;AAChG,KAAA;AACA;AACA;AACA;AACA;AACA;AACA;IAEA,MAAMsG,WAAW,GAAG,MAAMrE,uBAAY,CAACpB,WAAW,CAAC,CAC9CqB,KAAK,CAACC,GAAG,IAAG;MACTC,OAAO,CAACC,GAAG,CAAC,iDAAiD,EAAEF,GAAG,CAAChC,OAAO,CAAC,CAAA;AAC3E,MAAA,MAAMmC,MAAM,GAAG;AACXC,QAAAA,IAAI,EAAE,CAAC;AACPpC,QAAAA,OAAO,EAAE,+BAAA;OACZ,CAAA;MACD,IAAIgC,GAAG,CAAChC,OAAO,CAACqC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;QACtCF,MAAM,CAACC,IAAI,GAAG,CAAC,CAAA;QACfD,MAAM,CAACnC,OAAO,GAAG,cAAc,CAAA;AACnC,OAAA;AACA,MAAA,MAAM,IAAIF,KAAK,CAACqC,MAAM,CAACnC,OAAO,CAAC,CAAA;AACnC,KAAC,CAAC,CAAA;AAEN,IAAA,IAAIgE,MAAM,IAAA,IAAA,IAANA,MAAM,CAAE9B,GAAG,EAAE;MACb,IAAI;AAAA,QAAA,IAAAkE,oBAAA,CAAA;AACAnE,QAAAA,OAAO,CAACC,GAAG,CAAC,mCAAmC,EAAE;UAC7ChB,MAAM;UACNG,SAAS;UACTgF,GAAG,EAAEF,WAAW,IAAA,IAAA,IAAA,CAAAC,oBAAA,GAAXD,WAAW,CAAE7D,OAAO,KAAA,IAAA,GAAA,KAAA,CAAA,GAApB8D,oBAAA,CAAsBC,GAAG;AAC9BC,UAAAA,eAAe,EAAE,CAAC,CAACC,eAAI,CAACvC,MAAM,EAAE,CAAC3C,SAAS,EAAEH,MAAM,CAAC,CAAC;UACpDqD,QAAQ,EAAEP,MAAM,CAACO,QAAAA;AACpB,SAAA,CAAC,CAAA;OACL,CAAC,MAAM,EAAC;AACb,KAAA;AAEA,IAAA,MAAMD,MAAM,GAAG;MACX5D,WAAW;AACXK,MAAAA,cAAc,EAAE;AACZoC,QAAAA,QAAQ,EAAE,KAAK;AACfzC,QAAAA,WAAAA;AACH,OAAA;KACJ,CAAA;IAED,IAAIQ,MAAM,KAAK,IAAI,EAAE;AACjB,MAAA,OAAOoD,MAAM,CAAA;AACjB,KAAA;AAEA,IAAA,IAAIkC,KAAK,CAAA;IACT,MAAMC,UAAU,GAAGF,eAAI,CAACvC,MAAM,EAAE,CAAC3C,SAAS,EAAEH,MAAM,CAAC,CAAC,CAAA;IACpD,IAAI,CAACuF,UAAU,EAAE;MAAA,IAAAC,mBAAA,EAAAC,qBAAA,CAAA;AACb;AACA,MAAA,MAAMC,OAAO,GAAI,CAAAF,CAAAA,mBAAA,GAAI,IAAA,CAAC/F,aAAqB,KAAA,IAAA,GAAA,KAAA,CAAA,GAA1B+F,mBAAA,CAA4BvF,QAAQ,KAAI,KAAK,CAAA;MAC9D,MAAM0F,QAAQ,GAAGN,eAAI,CAACvC,MAAM,EAAE,CAAC3C,SAAS,EAAE,UAAU,CAAC,CAAC,KAAI8E,WAAW,IAAAQ,IAAAA,IAAAA,CAAAA,qBAAA,GAAXR,WAAW,CAAE7D,OAAO,KAAA,IAAA,GAAA,KAAA,CAAA,GAApBqE,qBAAA,CAAsBN,GAAG,CAAA,CAAA;AACnF,MAAA,IAAIrC,MAAM,IAAA,IAAA,IAANA,MAAM,CAAE9B,GAAG,EAAE;QACb,IAAI;AACAD,UAAAA,OAAO,CAACC,GAAG,CAAC,oCAAoC,EAAE;YAC9C0E,OAAO;YACPC,QAAQ;YACRC,WAAW,EAAE,CAAC,CAACP,eAAI,CAACvC,MAAM,EAAE,CAAC3C,SAAS,EAAE,UAAU,CAAC,CAAA;AACtD,WAAA,CAAC,CAAA;SACL,CAAC,MAAM,EAAC;AACb,OAAA;MACA,MAAMF,QAAQ,GAAG,MAAM,IAAI,CAACqD,WAAW,CAACF,MAAM,EAAE;AAC5C,QAAA,GAAGN,MAAM;QACTS,OAAO;AACPP,QAAAA,KAAK,EAAE;AAAC,UAAA,CAAC0C,OAAO,GAAGC,QAAAA;AAAS,SAAA;AAC/B,OAAA,CAAC,CAAA;MACFL,KAAK,GAAG,MAAM,IAAI,CAAC1C,SAAS,CAAC3C,QAAQ,EAAE6C,MAAM,CAAC,CAAA;KACjD,MAAMwC,KAAK,GAAGC,UAAU,CAAA;IACzB,OAAO;AACH,MAAA,GAAGnC,MAAM;AACT,MAAA,CAACpD,MAAM,GAAGsF,KAAAA;KACb,CAAA;AAEL,GAAA;EAEA,MAAMO,KAAKA,CAACC,GAAoB,EAAA;IAC5B,MAAM;MAAC1F,MAAM;AAAEC,MAAAA,OAAAA;KAAQ,GAAG,IAAI,CAACZ,aAAa,CAAA;AAC5C,IAAA,MAAMsG,WAAW,GAAGD,GAAG,CAACE,OAAO,IAAIF,GAAG,CAACE,OAAO,CAAC5F,MAAM,CAAC6F,WAAW,EAAE,CAAC,CAAA;AAEpE,IAAA,IAAI,CAACF,WAAW,IAAI,OAAOA,WAAW,KAAK,QAAQ,EAAE;AACjD,MAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA,IAAA,MAAM,GAAGG,MAAM,EAAEC,WAAW,CAAC,GAAGJ,WAAW,CAAChB,KAAK,CAAChG,YAAY,CAAC,IAAI,EAAE,CAAA;IACrE,MAAMqH,SAAS,GAAGF,MAAM,IAAI7F,OAAO,CAACgG,IAAI,CACnCC,OAAY,IAAK,IAAIC,MAAM,CAACD,OAAO,EAAE,GAAG,CAAC,CAACE,IAAI,CAACN,MAAM,CAAC,CAC1D,CAAA;AAED,IAAA,IAAIA,MAAM,IAAI,CAACE,SAAS,EAAE;AACtB,MAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA,IAAA,MAAMK,GAAG,GAAGL,SAAS,GAAGD,WAAW,GAAIJ,WAAsB,CAAA;AAC7D,IAAA,MAAMW,KAAK,GAAG,OAAOD,GAAG,KAAK,QAAQ,GAAGA,GAAG,CAAC5B,IAAI,EAAE,GAAG4B,GAAG,CAAA;AACxD;IACA,IAAI,CAACC,KAAK,IAAIA,KAAK,KAAK,MAAM,IAAIA,KAAK,KAAK,WAAW,EAAE;AACrD,MAAA,OAAO,IAAI,CAAA;AACf,KAAA;IACA,OAAO;MACHzE,QAAQ,EAAE,IAAI,CAACC,IAAI;AACnB1C,MAAAA,WAAW,EAAEkH,KAAAA;KAChB,CAAA;AACL,GAAA;AACH;;ACnSK,MAAO/H,YAAa,SAAQC,KAAK,CAAA;EACnCC,WAAAA,CAAYC,OAAgB,EAAA;IACxB,KAAK,CAACA,OAAO,CAAC,CAAA;AAClB,GAAA;AACH,CAAA;AAMK,MAAO6H,WAAY,SAAQC,oCAAqB,CAAA;EAElD/H,WAAAA,CAAY+C,GAAQ,EAAEiF,SAAS,GAAG,gBAAgB,EAAEC,OAAiC,EAAE,EAAA;IACnF,MAAM;MAAEC,gBAAgB;MAAE,GAAGC,IAAAA;AAAM,KAAA,GAAGF,IAAI,CAAA;AAC1C,IAAA,KAAK,CAAClF,GAAG,EAAEiF,SAAS,EAAEG,IAAI,CAAC,CAAA;AAAA,IAAA,IAAA,CAH/BC,OAAO,GAAA,KAAA,CAAA,CAAA;IAIH,IAAI,CAACrF,GAAG,GAAGA,GAAG,CAAA;IACd,IAAI,CAACqF,OAAO,GAAG;AAAEF,MAAAA,gBAAAA;KAAkB,CAAA;AACvC,GAAA;AAEA,EAAA,MAAMG,MAAMA,CAAC9C,IAA2B,EAAEtB,MAA6B,EAAA;IAAA,IAAAqE,aAAA,EAAAxE,OAAA,CAAA;AACnE,IAAA,MAAMyE,OAAO,GAAG,CAAAD,CAAAA,aAAA,GAAI,IAAA,CAACF,OAAO,KAAA,IAAA,GAAA,KAAA,CAAA,GAAZE,aAAA,CAAcJ,gBAAgB,KAAIpI,YAAY,CAAA;IAE9D,MAAM;MAACqB,MAAM;MAAEF,OAAO;AAAEuH,MAAAA,SAAS,GAAG,MAAA;KAAO,GAAG,IAAI,CAACzF,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAE5E,IAAA,MAAMuF,cAAc,GAAG,CAAA3E,CAAAA,OAAA,GAAAG,MAAM,KAAA,IAAA,GAAA,KAAA,CAAA,GAANH,OAAA,CAAQ2E,cAAc,KAAI,IAAI,CAAC7H,aAAa,CAAC6H,cAAc,CAAA;AAElF,IAAA,IAAI,CAACxE,MAAM,EAAEA,MAAM,GAAG,EAAE,CAAA;AAExB,IAAA,IAAI,CAACwE,cAAc,CAACtC,MAAM,EAAE;AACxB,MAAA,MAAM,IAAIoC,OAAO,CAAC,4EAA4E,CAAC,CAAA;AACnG,KAAA;AAEA,IAAA,MAAM3G,UAAU,GAAG,MAAM,IAAI,CAAC+D,YAAY,CAACJ,IAAI,EAAEtB,MAAM,EAAE,GAAGwE,cAAc,CAAC,CACtEzG,KAAK,CAAEC,GAAQ,IAAI;AAChB,MAAA,MAAM,IAAIlC,KAAK,CAACkC,GAAG,CAAChC,OAAO,CAAC,CAAA;AAChC,KAAC,CAAC,CAAA;IAEN,IAAI2B,UAAU,CAACjB,WAAW,EAAE;AACxB,MAAA,OAAOiB,UAAU,CAAA;AACrB,KAAA;AACA,IAAA,MAAM8G,GAAG,GAAGnD,IAAI,CAACmD,GAAG,IAAIlC,eAAI,CAAC5E,UAAU,EAAE,CAACT,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;AACzD,IAAA,IAAIyE,IAAI,GAAGL,IAAI,CAACK,IAAI,IAAIY,eAAI,CAAC5E,UAAU,EAAE,CAACT,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAE1D,IAAI,CAACuH,GAAG,EAAE,MAAM,IAAI3I,KAAK,CAAC,0BAA0B,CAAC,CAAA;IACrD,IAAI,CAAC6F,IAAI,EAAE,MAAM,IAAI7F,KAAK,CAAC,yCAAyC,CAAC,CAAA;AACrE;IAEA,MAAM4I,aAAa,GAAG,MAAM5G,uBAAY,CAAC6D,IAAI,CAAC,CACzC5D,KAAK,CAACC,GAAG,IAAG;MACTC,OAAO,CAACC,GAAG,CAAC,mDAAmD,EAAEF,GAAG,CAAChC,OAAO,CAAC,CAAA;AAC7E,MAAA,MAAMmC,MAAM,GAAG;AACXC,QAAAA,IAAI,EAAE,CAAC;AACPpC,QAAAA,OAAO,EAAE,+BAAA;OACZ,CAAA;MACD,IAAIgC,GAAG,CAAChC,OAAO,CAACqC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE;QACtCF,MAAM,CAACC,IAAI,GAAG,CAAC,CAAA;QACfD,MAAM,CAACnC,OAAO,GAAG,cAAc,CAAA;AACnC,OAAA;MACAiC,OAAO,CAAC0G,IAAI,CAAC,iDAAiD,EAAEhD,IAAI,EAAExD,MAAM,CAACnC,OAAO,CAAC,CAAA;AACrF,MAAA,OAAO,IAAI,CAAA;AACf,KAAC,CAAC,CAAA;IACN,IAAI,CAAC0I,aAAa,EAAE;AAChB,MAAA,MAAME,MAAM,GAAGC,oBAAS,CAAClD,IAAI,CAAC,CAAA;MAC9B,IAAI;AAACmD,QAAAA,MAAAA;OAAO,GAAG,IAAI,CAAChG,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;MAE7C,MAAM8F,MAAM,GAAGC,wBAAa,CAAC;AAACC,QAAAA,SAAS,EAAEH,MAAAA;AAAO,OAAA,CAAC,CAAA;MACjDnD,IAAI,GAAG,MAAMuD,oBAAS,CAAC;AACnBrC,QAAAA,QAAQ,EAAE+B,MAAM,CAACtG,OAAO,CAAC+D,GAAG;QAC5B0C,MAAM;AACNI,QAAAA,iBAAiB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACpCC,QAAAA,YAAY,EAAER,MAAM,CAACtG,OAAO,CAAC+G,GAAAA;AAChC,OAAA,CAAC,CAAA;MACFrF,MAAM,CAACmB,UAAU,GAAG,IAAI,CAAA;MACxB,MAAM,IAAI,CAACrC,GAAG,CAAC9B,OAAO,CAACA,OAAO,CAAC,CAACsI,KAAK,CAAC/C,eAAI,CAAC5E,UAAU,EAAE,CAACT,MAAM,EAAE,KAAK,CAAC,CAAe,EAAE;AAAC,QAAA,CAACqH,SAAS,GAAG3C,oBAAS,CAACD,IAAI,CAAA;OAAE,EAAE;QAAC,GAAG3B,MAAAA;AAAM,OAAC,CAAC,CAAA;AACvI,KAAA;AAGA,IAAA,MAAMtD,WAAW,GAAGkF,oBAAS,CAACD,IAAI,CAAC,CAAA;IAEnC,OAAO;MACHjF,WAAW;AACX,MAAA,GAAGiB,UAAU;AACbZ,MAAAA,cAAc,EAAE;QACZ,GAAGY,UAAU,CAACZ,cAAc;AAC5BuB,QAAAA,OAAO,EAAE5B,WAAAA;AACZ,OAAA;KACJ,CAAA;AACL,GAAA;AACH;;MC7EY6I,QAAQ,CAAA;AAKjBxJ,EAAAA,WAAAA,CAAYiB,OAAc,EAAEwI,OAAW,EAAEC,WAAqB,EAAA;AAAA,IAAA,IAAAC,eAAA,CAAA;AAAA,IAAA,IAAA,CAJ9DF,OAAO,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CACPxI,OAAO,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CACP2I,IAAI,GAAA,KAAA,CAAA,CAAA;AAAA,IAAA,IAAA,CACJzI,MAAM,GAAA,KAAA,CAAA,CAAA;IAEF,IAAI,CAACF,OAAO,GAAGA,OAAO,CAAA;IACtB,IAAI,CAACwI,OAAO,GAAGA,OAAO,CAAA;IACtB,MAAMtI,MAAM,GAAG,CAACsI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,IAAI;AAAE/B,MAAAA,MAAM,EAAE,OAAA;KAAS,EAAEA,MAAM,IAAI,OAAO,CAAA;IAC3F,IAAI,CAACA,MAAM,GAAGA,MAAM,CAAA;AACpB,IAAA,MAAMyI,IAAI,GAAG,CAAAD,CAAAA,eAAA,GAAAF,OAAO,CAACxF,MAAM,KAAA,IAAA,GAAA,KAAA,CAAA,GAAd0F,eAAA,CAAgBC,IAAI,KAAI,EAAE,CAAA;AACvC,IAAA,IAAG,CAACA,IAAI,CAACzI,MAAM,CAAC,EAAEyI,IAAI,CAACzI,MAAM,CAAC,GAAGsI,OAAO,CAACxF,MAAM,CAAC9C,MAAM,CAAC,CAAA;IACvD,IAAI,CAACyI,IAAI,GAAG;AAAE,MAAA,GAAGA,IAAI;MAAE,GAAGF,WAAAA;KAAa,CAAA;AAC3C,GAAA;EAEA,MAAMxG,GAAGA,CAACc,EAAa,EAAEC,SAAgB,EAAE,EAAA;AAAA,IAAA,IAAA4F,iBAAA,CAAA;IACvC,MAAM;AAACvI,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAA2G,CAAAA,iBAAA,GAAO,IAAI,CAACJ,OAAO,CAAC1G,GAAG,qBAAhB8G,iBAAA,CAAkB5I,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACiC,GAAG,CAACc,EAAE,EAAE;AAAC,MAAA,GAAGC,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;MAAE,GAAG;QAAE,CAACG,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AAC1I,GAAA;AACA,EAAA,MAAM1E,IAAIA,CAAEjB,MAAA,GAAgB,EAAE,EAAA;AAAA,IAAA,IAAA6F,kBAAA,CAAA;IAC1B,MAAM;AAACxI,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAC1D,IAAA,OAAA,CAAA4G,kBAAA,GAAO,IAAI,CAACL,OAAO,CAAC1G,GAAG,KAAhB+G,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAkB7I,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACiE,IAAI,CAAC;AAAC,MAAA,GAAGjB,MAAmB;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;AAAEiE,MAAAA,UAAU,EAAC,IAAI;MAAE,GAAG;QAAE,CAAC9D,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AACrK,GAAA;EACA,MAAMvB,MAAMA,CAAE9C,IAAW,EAAEtB,SAAgB,EAAE,EAAA;AAAA,IAAA,IAAA8F,kBAAA,CAAA;IACzC,MAAM;AAACzI,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAA6G,CAAAA,kBAAA,GAAO,IAAI,CAACN,OAAO,CAAC1G,GAAG,qBAAhBgH,kBAAA,CAAkB9I,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACoH,MAAM,CAAC9C,IAAI,EAAE;AAAC,MAAA,GAAGtB,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;MAAE,GAAG;QAAE,CAACG,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AAC/I,GAAA;EACA,MAAML,KAAKA,CAAEvF,EAAa,EAAEuB,IAAW,EAAEtB,SAAgB,EAAE,EAAA;AAAA,IAAA,IAAA+F,kBAAA,CAAA;IACvD,MAAM;AAAC1I,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAA8G,CAAAA,kBAAA,GAAO,IAAI,CAACP,OAAO,CAAC1G,GAAG,KAAhBiH,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAkB/I,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACsI,KAAK,CAACvF,EAAE,EAAEuB,IAAI,EAAE;AAAC,MAAA,GAAGtB,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;MAAE,GAAG;QAAE,CAACG,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AAClJ,GAAA;EACA,MAAMK,MAAMA,CAAEjG,EAAa,EAAEuB,IAAW,EAAEtB,SAAgB,EAAE,EAAA;AAAA,IAAA,IAAAiG,kBAAA,CAAA;IACxD,MAAM;AAAC5I,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAAgH,CAAAA,kBAAA,GAAO,IAAI,CAACT,OAAO,CAAC1G,GAAG,KAAhBmH,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAkBjJ,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACgJ,MAAM,CAACjG,EAAE,EAAEuB,IAAI,EAAE;AAAC,MAAA,GAAGtB,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;MAAE,GAAG;QAAE,CAACG,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AACnJ,GAAA;EACA,MAAMO,MAAMA,CAAEnG,EAAa,EAAEC,SAAgB,EAAE,EAAA;AAAA,IAAA,IAAAmG,kBAAA,CAAA;IAC3C,MAAM;AAAC9I,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAAkH,CAAAA,kBAAA,GAAO,IAAI,CAACX,OAAO,CAAC1G,GAAG,qBAAhBqH,kBAAA,CAAkBnJ,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACkJ,MAAM,CAACnG,EAAE,EAAE;AAAC,MAAA,GAAGC,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;MAAE,GAAG;QAAE,CAACG,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AAC7I,GAAA;EAEA,MAAMpD,IAAIA,CAACxC,EAAa,EAAEC,SAAgB,EAAE,EAAA;AAAA,IAAA,IAAAoG,kBAAA,CAAA;IACxC,MAAM;AAAC/I,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAAmH,CAAAA,kBAAA,GAAO,IAAI,CAACZ,OAAO,CAAC1G,GAAG,qBAAhBsH,kBAAA,CAAkBpJ,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACuF,IAAI,CAACxC,EAAE,EAAE;AAAC,MAAA,GAAGC,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;AAAEgE,MAAAA,UAAU,EAAE,IAAI;MAAE,GAAG;QAAE,CAAC7D,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AAC7J,GAAA;AACA,EAAA,MAAMU,KAAKA,CAAErG,MAAA,GAAgB,EAAE,EAAA;AAAA,IAAA,IAAAsG,kBAAA,CAAA;IAC3B,MAAM;AAACjJ,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAC1D,IAAA,OAAA,CAAAqH,kBAAA,GAAO,IAAI,CAACd,OAAO,CAAC1G,GAAG,KAAhBwH,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAkBtJ,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACqJ,KAAK,CAAC;AAAC,MAAA,GAAGrG,MAAmB;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;AAAEgE,MAAAA,UAAU,EAAE,IAAI;MAAE,GAAG;QAAE,CAAC7D,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AACvK,GAAA;EACA,MAAMY,OAAOA,CAAEjF,IAAW,EAAEtB,SAAe,EAAE,EAAA;AAAA,IAAA,IAAAwG,kBAAA,CAAA;IACzC,MAAM;AAACnJ,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAAuH,CAAAA,kBAAA,GAAO,IAAI,CAAChB,OAAO,CAAC1G,GAAG,qBAAhB0H,kBAAA,CAAkBxJ,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACuJ,OAAO,CAACjF,IAAI,EAAE;AAAC,MAAA,GAAGtB,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;AAAEgE,MAAAA,UAAU,EAAE,IAAI;MAAE,GAAG;QAAE,CAAC7D,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AAClK,GAAA;EACA,MAAMc,MAAMA,CAAE1G,EAAa,EAAEuB,IAAW,EAAEtB,SAAe,EAAE,EAAA;AAAA,IAAA,IAAA0G,mBAAA,CAAA;IACvD,MAAM;AAACrJ,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAAyH,CAAAA,mBAAA,GAAO,IAAI,CAAClB,OAAO,CAAC1G,GAAG,KAAhB4H,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAA,CAAkB1J,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAACyJ,MAAM,CAAC1G,EAAE,EAAEuB,IAAI,EAAE;AAAC,MAAA,GAAGtB,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;AAAEgE,MAAAA,UAAU,EAAE,IAAI;MAAE,GAAG;QAAE,CAAC7D,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AACrK,GAAA;EACA,MAAMgB,OAAOA,CAAE5G,EAAa,EAAEuB,IAAW,EAAEtB,SAAe,EAAE,EAAA;AAAA,IAAA,IAAA4G,mBAAA,CAAA;IACxD,MAAM;AAACvJ,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAA2H,CAAAA,mBAAA,GAAO,IAAI,CAACpB,OAAO,CAAC1G,GAAG,KAAhB8H,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,mBAAA,CAAkB5J,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAAC2J,OAAO,CAAC5G,EAAE,EAAEuB,IAAI,EAAE;AAAC,MAAA,GAAGtB,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;AAAEgE,MAAAA,UAAU,EAAE,IAAI;MAAE,GAAG;QAAE,CAAC7D,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AACtK,GAAA;EACA,MAAMkB,OAAOA,CAAE9G,EAAa,EAAEC,SAAe,EAAE,EAAA;AAAA,IAAA,IAAA8G,mBAAA,CAAA;IAC3C,MAAM;AAACzJ,MAAAA,SAAAA;KAAU,GAAG,IAAI,CAACmI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1D,OAAA6H,CAAAA,mBAAA,GAAO,IAAI,CAACtB,OAAO,CAAC1G,GAAG,qBAAhBgI,mBAAA,CAAkB9J,OAAO,CAAC,IAAI,CAACA,OAAO,CAAC,CAAC6J,OAAO,CAAC9G,EAAE,EAAE;AAAC,MAAA,GAAGC,MAAM;MAAE,CAAC,IAAI,CAAC9C,MAAM,GAAG8C,MAAM,CAAC,IAAI,CAAC9C,MAAM,CAAC;AAAEgE,MAAAA,UAAU,EAAE,IAAI;MAAE,GAAG;QAAE,CAAC7D,SAAS,GAAG,IAAI,CAACsI,IAAAA;AAAI,OAAA;AAAG,KAAA,CAAC,CAAA;AAChK,GAAA;AAEH;;AClFD;AACA;AAEA;AACO,MAAMoB,aAAa,GAAGA,CAACC,KAAa,EAAExB,OAAY,KAAU;EAAA,IAAAyB,YAAA,EAAAvB,eAAA,EAAAwB,gBAAA,EAAAC,qBAAA,EAAAC,iBAAA,CAAA;EACjE,MAAMtK,UAAU,GAAG,CAAAmK,CAAAA,YAAA,GAAAzB,OAAO,CAAC1G,GAAG,KAAXmI,IAAAA,IAAAA,YAAA,CAAahI,GAAG,IAAA,IAAA,GAAA,KAAA,CAAA,GAAhBgI,YAAA,CAAahI,GAAG,CAAG,gBAAgB,CAAC,KAAI,EAAE,CAAA;AAC7D,EAAA,MAAMoI,QAAQ,GAAGvK,UAAU,CAACO,SAAS,IAAI,MAAM,CAAA;AAC/C,EAAA,MAAMiK,SAAS,GAAGxK,UAAU,CAACI,MAAM,IAAI,OAAO,CAAA;AAC9C,EAAA,MAAMqK,cAAc,GAAGzK,UAAU,CAAC0K,WAAW,IAAI,kBAAkB,CAAA;AACnE,EAAA,MAAMC,OAAO,GAAG3K,UAAU,CAAC4K,QAAQ,IAAI,eAAe,CAAA;AAEtD,EAAA,MAAMnF,IAAI,GAAGA,CAACoF,GAAQ,EAAEC,IAAY,KAClC9F,MAAM,CAAC8F,IAAI,IAAI,EAAE,CAAC,CACfC,KAAK,CAAC,GAAG,CAAA;AACV;AAAA,GACCC,MAAM,CAAC,CAACC,CAAM,EAAEC,CAAS,KAAMD,CAAC,GAAGA,CAAC,CAACC,CAAC,CAAC,GAAG/K,SAAU,EAAE0K,GAAG,CAAC,CAAA;EAE/D,MAAMM,WAAW,GAAIC,CAAU,IAAI;AAAA,IAAA,IAAAC,cAAA,CAAA;IACjC,IAAI,OAAOD,CAAC,KAAK,QAAQ,EAAE,OAAOA,CAAC,CAACnH,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAImH,CAAC,CAAChG,MAAM,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,CAAA;IAC7E,IAAIgG,CAAC,IAAI,OAAOA,CAAC,KAAK,QAAQ,EAAE,OAAO,CAAY,QAAA,EAAA,CAAA,CAAAC,cAAA,GAAAD,CAAS,CAACnM,WAAW,KAAA,IAAA,GAAA,KAAA,CAAA,GAArBoM,cAAA,CAAuB/I,IAAI,KAAI,QAAQ,CAAG,CAAA,CAAA,CAAA;IAC7F,IAAI;MAAE,OAAO0C,MAAM,CAACoG,CAAC,CAAC,CAAA;AAAE,KAAC,CAAC,MAAM;AAAE,MAAA,OAAO,eAAe,CAAA;AAAE,KAAA;GAC3D,CAAA;EAED,MAAMtE,KAAK,GAAGrB,IAAI,CAACiD,OAAO,CAACxF,MAAM,EAAEuH,cAAc,CAAC,CAAA;EAClD,MAAM1E,QAAQ,GAAGN,IAAI,CAACiD,OAAO,CAACxF,MAAM,EAAEyH,OAAO,CAAC,CAAA;EAC9C,MAAMW,SAAS,GAAA1C,CAAAA,eAAA,GAAGF,OAAO,CAACxF,MAAM,KAAd0F,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAA,CAAiB4B,SAAS,CAAC,CAAA;EAC7C,MAAM3B,IAAI,GAAAuB,CAAAA,gBAAA,GAAG1B,OAAO,CAACxF,MAAM,KAAdkH,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAAiBG,QAAQ,CAAC,CAAA;EAEvC,MAAMgB,SAAS,GAAG,OAAOzE,KAAK,CAAA;EAC9B,MAAM5B,QAAQ,GAAG,OAAO4B,KAAK,KAAK,QAAQ,GAAG,CAACA,KAAK,CAAC3B,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAEC,MAAM,GAAG,CAAC,CAAC,CAAA;EACnF,IAAIoG,QAAQ,GAAwBrL,SAAS,CAAA;EAC7C,IAAI;AACF;AACA;IACA,MAAM;AAAE4H,MAAAA,SAAAA;AAAW,KAAA,GAAG0D,OAAO,CAAC,aAAa,CAAC,CAAA;AAC5C,IAAA,MAAM3D,MAAM,GAAG,OAAOhB,KAAK,KAAK,QAAQ,GAAGiB,SAAS,CAACjB,KAAK,CAAC,GAAG,IAAI,CAAA;IAClE0E,QAAQ,GAAG,CAAC,CAAC1D,MAAM,IAAI,CAAC,EAACA,MAAM,IAAA,IAAA,IAANA,MAAM,CAAEtG,OAAO,CAAA,CAAA;AAC1C,GAAC,CAAC,MAAM;AACNgK,IAAAA,QAAQ,GAAGrL,SAAS,CAAA;AACtB,GAAA;AAEA;AACAgB,EAAAA,OAAO,CAACC,GAAG,CAAC,aAAa,EAAE8I,KAAK,EAAE;IAChCO,cAAc;IACdE,OAAO;IACPY,SAAS;AACTG,IAAAA,YAAY,EAAEP,WAAW,CAACrE,KAAK,CAAC;IAChC5B,QAAQ;AAAE;IACVsG,QAAQ;AAAE;IACVG,YAAY,EAAE,OAAO5F,QAAQ;AAC7B6F,IAAAA,eAAe,EAAET,WAAW,CAACpF,QAAQ,CAAC;IACtCyE,SAAS;AACTqB,IAAAA,UAAU,EAAEP,SAAS,GAAG,EAAAjB,qBAAA,GAAAiB,SAAS,CAACrM,WAAW,KAArBoL,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,qBAAA,CAAuB/H,IAAI,KAAI,OAAOgJ,SAAS,GAAG,OAAOA,SAAS;AAC1FQ,IAAAA,WAAW,EAAE,CAAC,EAAER,SAAS,KAAKA,SAAS,CAAC3G,GAAG,IAAI2G,SAAS,CAACrI,EAAE,CAAC,CAAC;AAC7D8I,IAAAA,QAAQ,EAAElD,IAAI,GAAG,EAAAyB,iBAAA,GAAAzB,IAAI,CAAC5J,WAAW,KAAhBqL,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAA,CAAkBhI,IAAI,KAAI,OAAOuG,IAAI,GAAG,OAAOA,IAAI;IACpEmD,QAAQ,EAAEnD,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,GAAGlG,MAAM,CAACC,IAAI,CAACiG,IAAI,CAAC,CAAC5E,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG4E,IAAAA;AAC/E,GAAA,CAAC,CAAA;AACJ,CAAC;;ACnDM,MAAMoD,UAAU,GAAG,UAAS;AAEtBC,MAAAA,SAAS,GAAIxD,OAA4B,IAAQ;EAC1D,MAAMoC,IAAI,GAAGpC,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,YAAY,CAAC,IAAI8J,UAAU,CAAA;AACxD,EAAA,OAAOxG,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,QAAQ4H,IAAQ,CAAA,CAAA,EAAApC,OAAO,CAACoC,IAAI,IAAIpC,OAAO,CAACzF,GAAI,CAAA,CAAC,IAAI9C,SAAS,CAAA;AAC1F,EAAC;AAEM,MAAMgM,UAAU,GAAG,OAAOzD,OAAmB,EAAErB,OAAkE,KAAiB;AACrI,EAAA,IAAI+E,EAAE,GAAGF,SAAS,CAACxD,OAAO,CAAC,CAAA;AAC3B,EAAA,IAAG,CAAC0D,EAAE,IAAI1D,OAAO,CAACzF,EAAE,EAAE;IAClBmJ,EAAE,GAAG,MAAM,IAAI3D,QAAQ,CAACC,OAAO,CAACoC,IAAI,EAAEpC,OAAO,EAAE;AAAE3E,MAAAA,SAAS,EAAE,CAAAsD,OAAO,oBAAPA,OAAO,CAAEtD,SAAS,MAAK,KAAA;KAAO,CAAC,CAAC5B,GAAG,CAACuG,OAAO,CAACzF,EAAE,EAAE;AAAEoJ,MAAAA,YAAY,EAAE,IAAI;AAAEhI,MAAAA,UAAU,EAAE,IAAI;AAAED,MAAAA,UAAU,EAAE,CAAC,EAACiD,OAAO,IAAPA,IAAAA,IAAAA,OAAO,CAAEjD,UAAU,CAAA;MAAE,IAAG,CAAAiD,OAAO,IAAPA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEnE,MAAM,KAAI,EAAE,CAAA;AAAE,KAAA,CAAC,CAAA;AACtN,GAAA;AACA,EAAA,OAAOkJ,EAAE,CAAA;AACb,EAAC;MAEYE,SAAS,GAAGA,CAAC5D,OAAmB,EAAE6D,GAAO,KAAgB;EAClE,MAAMzB,IAAI,GAAGpC,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,YAAY,CAAC,IAAI8J,UAAU,CAAA;AACxDvD,EAAAA,OAAO,CAACxF,MAAM,GAAGsJ,eAAI,CAAC9D,OAAO,CAACxF,MAAM,EAAU,CAAA,KAAA,EAAA4H,IAAQ,CAAA,CAAA,EAAApC,OAAO,CAACoC,IAAQ,CAAA,CAAA,EAAA,CAAAyB,GAAG,IAAHA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,GAAG,CAAE5H,GAAG,KAAI+D,OAAO,CAACzF,EAAI,CAAA,CAAA,EAAEsJ,GAAG,CAAC,CAAA;AACpG,EAAA,OAAO7D,OAAO,CAAA;AAClB;;ACLA,MAAM+D,SAAS,GAAG,GAAG,CAAA;AAkBd,MAAMC,OAAO,GAAY,IAAc;AAEvC,MAAMC,OAAO,GAAY,IAAc;AAuCjCC,MAAAA,WAAW,GAAG,MAAUlE,OAAuB,IAA6B;EACrF,MAAMpI,MAAM,GAAGoI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAe,CAAA;AAC9D,EAAA,MAAM/B,MAAM,GAAGqF,eAAI,CAACiD,OAAO,EAAE,CAAC,MAAM,EAAEpI,MAAM,CAACF,MAAM,CAAC,CAAC,CAAA;AACrD,EAAA,IAAIA,MAAM,EAAE;AACRsI,IAAAA,OAAO,GAAG8D,eAAI,CAAC9D,OAAO,EAAE,CAACpI,MAAM,CAACC,SAAS,EAAED,MAAM,CAACF,MAAM,CAAC,EAAEA,MAAM,CAAC,CAAA;AACtE,GAAA;EACA,IAAI;AACA;AACAsI,IAAAA,OAAO,GAAG,MAAM9D,2BAAY,CAAC,KAAK,CAAC,CAAC8D,OAAc,CAAC,CAC9CzH,KAAK,CAAC,MAAK;AACR,MAAA,OAAOyH,OAAO,CAAA;AAClB,KAAC,CAAC,CAAA;GACT,CAAC,OAAOmE,CAAC,EAAE;AACR,IAAA,OAAOnE,OAAO,CAAA;AAClB,GAAA;AACA,EAAA,OAAOA,OAAO,CAAA;AAClB,EAAC;AAEYoE,MAAAA,QAAQ,GAAG,MAAUpE,OAAuB,IAA6B;EAClF,MAAMpI,MAAM,GAAGoI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAe,CAAA;AAC9D,EAAA,MAAM/B,MAAM,GAAGqF,eAAI,CAACiD,OAAO,EAAE,CAAC,MAAM,EAAEpI,MAAM,CAACF,MAAM,CAAC,CAAC,CAAA;AACrD,EAAA,IAAIA,MAAM,EAAEsI,OAAO,GAAG8D,eAAI,CAAC9D,OAAO,EAAE,CAACpI,MAAM,CAACC,SAAS,EAAED,MAAM,CAACF,MAAM,CAAC,EAAEA,MAAM,CAAC,CAAA;AAC9E;AACA,EAAA,OAAOwE,2BAAY,CAAC,KAAK,CAAC,CAAC8D,OAAc,CAAC,CAAA;AAC9C,EAAC;AAED,MAAMqE,SAAS,GAAG,OAAOlI,IAAY,EAAEwC,OAAsB,EAAEjG,GAAa,KAAI;EAC5E,IAAI;AAAA,IAAA,IAAA4L,EAAA,CAAA;AACA;IACA,IAAIC,cAAc,GAAuBpI,IAAW,CAAA;IACpD,IAAI,CAACoI,cAAc,EAAE;MACjB,IAAI;AACA;AACAA,QAAAA,cAAc,GAAGnI,oBAAS,CAACD,IAAW,CAAQ,CAAA;OACjD,CAAC,OAAOgI,CAAC,EAAE;AACRI,QAAAA,cAAc,GAAG9M,SAAS,CAAA;AAC9B,OAAA;AACJ,KAAA;AACA,IAAA,IAAI,CAAC8M,cAAc,IAAI,OAAOA,cAAc,KAAK,QAAQ,IAAIA,cAAc,CAAChI,IAAI,EAAE,KAAK,EAAE,EAAE;MACvF,OAAO;AAACiI,QAAAA,EAAE,EAAE,KAAK;QAAEhM,GAAG,EAAE,CAAC,+BAA+B,CAAA;OAAE,CAAA;AAC9D,KAAA;IAEA,IAAIkK,CAAC,GAAG,MAAM+B,qBAAU,CAACF,cAAc,EAAE5F,OAAO,CAAC,CAAA;AACjD,IAAA,IAAI,EAAA2F,CAAAA,EAAA,GAAC5B,CAAC,KAAD4B,IAAAA,IAAAA,EAAA,CAAGE,EAAE,CAAI7F,IAAAA,OAAO,CAAC+F,oBAAoB,EAAE;AACxC;MACA,MAAMC,eAAe,GAAGhG,OAAO,CAAC+F,oBAAoB,CAACE,GAAG,CAACC,EAAE,IAAG;AAAA,QAAA,IAAAC,kBAAA,CAAA;AAC1D,QAAA,MAAMC,MAAM,GAAG;AACX,UAAA,GAAGF,EAAE;AACLG,UAAAA,UAAU,EAAE;YACR,GAAGH,EAAE,CAACG,UAAU;YAChBC,GAAG,EAAEJ,EAAE,CAACG,UAAU,CAACC,GAAG,KAAKlB,SAAS,GAAGA,SAAS,GAAG;cAC/C,GAAGc,EAAE,CAACG,UAAU,CAACC,GAAAA;AACpB,aAAA;AACJ,WAAA;SACS,CAAA;AACd,QAAA,IAAK,EAAAH,kBAAA,GAAAC,MAAM,CAACC,UAAkB,cAAAF,kBAAA,GAAzBA,kBAAA,CAA2BG,GAAG,KAA9BH,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,kBAAA,CAAgCI,SAAS,MAAKnB,SAAS,EAAE;UACzDgB,MAAM,CAACC,UAAkB,CAACC,GAAG,CAACE,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAA;AACnD,SAAA;AACA,QAAA,OAAOJ,MAAM,CAAA;AACjB,OAAC,CAAC,CAAA;AACF,MAAA,IAAIrM,GAAG,EAAE;QACL,IAAI0G,MAAM,GAAQ3H,SAAS,CAAA;QAC3B,IAAI;AACA2H,UAAAA,MAAM,GAAGC,oBAAS,CAACkF,cAAc,CAAC,CAAA;SACrC,CAAC,MAAM,EACR;QACA9L,OAAO,CAACC,GAAG,CAAC,0BAA0B,EAAEiM,eAAe,EAAEvF,MAAM,CAAC,CAAA;AACpE,OAAA;AACAsD,MAAAA,CAAC,GAAG,MAAM+B,qBAAU,CAACF,cAAc,EAAE;AACjC,QAAA,GAAG5F,OAAO;AAAE+F,QAAAA,oBAAoB,EAAEC,eAAAA;AACrC,OAAA,CAAC,CAAA;MACF,IAAIjM,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,6BAA6B,EAAEgK,CAAC,CAAC,CAAA;AAC1D,KAAA;AACA,IAAA,OAAOA,CAAC,CAAA;GACX,CAAC,OAAOyB,CAAM,EAAE;IACb,OAAO;AAACK,MAAAA,EAAE,EAAE,KAAK;AAAEhM,MAAAA,GAAG,EAAE,CAAC2L,CAAC,CAAC3N,OAAO,CAAA;KAAE,CAAA;AACxC,GAAA;AACJ,CAAC,CAAA;AACM,MAAM4O,YAAY,GAAG,OAAOC,GAAqB,EAAE3M,GAAa,KAAwB;AAC3F,EAAA,IAAIgK,CAAC,GAAQ;AAAC8B,IAAAA,EAAE,EAAE,KAAK;AAAExH,IAAAA,KAAK,EAAE,EAAA;GAAG,CAAA;EAEnC,IAAI;AACA,IAAA,KAAK,MAAMsI,CAAC,IAAID,GAAG,EAAE;AAAA,MAAA,IAAAE,GAAA,CAAA;AACjB,MAAA,IAAI7M,GAAG,EAAE;QACL,IAAI0G,MAAM,GAAQ3H,SAAS,CAAA;QAC3B,IAAI;UACA,IAAI,OAAO4N,GAAG,CAACC,CAAC,CAAC,CAACnJ,IAAI,KAAK,QAAQ,EAAEiD,MAAM,GAAGC,oBAAS,CAACgG,GAAG,CAACC,CAAC,CAAC,CAACnJ,IAAI,CAAC,CAAA;SACvE,CAAC,MAAM,EACR;QACA1D,OAAO,CAACC,GAAG,CAAC,gBAAgB,EAAE2M,GAAG,CAACC,CAAC,CAAC,EAAElG,MAAM,CAAC,CAAA;AACjD,OAAA;MACA,IAAI,EAAA,CAAAmG,GAAA,GAAC7C,CAAC,aAAD6C,GAAA,CAAGf,EAAE,CAAE,EAAA;QACR,MAAM;UAACrI,IAAI;UAAE,GAAGwC,OAAAA;AAAQ,SAAA,GAAG0G,GAAG,CAACC,CAAC,CAAC,CAAA;QACjC5C,CAAC,GAAG,MAAM2B,SAAS,CAAClI,IAAI,EAAEwC,OAAO,EAAEjG,GAAG,CAAC,CAAA;QACvC,IAAIA,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,oBAAoB,EAAEgK,CAAC,CAAC,CAAA;AACjD,OAAC,MAAM,MAAA;AACX,KAAA;AACA,IAAA,OAAOA,CAAC,CAAA;GACX,CAAC,OAAOyB,CAAM,EAAE;IACb,OAAO;AAACK,MAAAA,EAAE,EAAE,KAAK;AAAEhM,MAAAA,GAAG,EAAE,CAAC2L,CAAC,CAAC3N,OAAO,CAAA;KAAE,CAAA;AACxC,GAAA;AACJ,EAAC;AASM,MAAMgP,iBAAiB,GAAGA,CAAIC,IAA+B,EAAE7N,MAAoB,EAAE+G,OAAyB,KAAI;EACrH,OAAO,MAAOqB,OAAuB,IAAwB;AAAA,IAAA,IAAA0F,GAAA,CAAA;AACzD,IAAA,MAAMhN,GAAG,GAAGiG,OAAO,IAAPA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEjG,GAAG,CAAA;IACxB,IAAIiN,OAAO,GAAG5I,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE5C,MAAM,CAACoK,WAAW,CAAW,CAAA;IAChE,IAAG,CAAC2D,OAAO,EAAC;MACR,MAAMC,OAAO,GAAG5F,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAW,CAAA;MAC3D,MAAMqI,SAAS,GAAG,CAAA8D,OAAO,oBAAPA,OAAO,CAAElO,MAAM,KAAI,OAAO,CAAA;AAC5CiO,MAAAA,OAAO,GAAG5I,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAACsH,SAAS,EAAE,MAAM,CAAC,CAAW,CAAA;AACjE,KAAA;IACA,IAAIpJ,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,kBAAkB,EAAEiN,OAAO,CAAC,CAAA;IACjD,IAAIxJ,IAAI,GAAGwJ,OAA4B,CAAA;IACvC,IAAI;AACA;AACA,MAAA,MAAME,KAAK,GAAGzJ,oBAAS,CAACuJ,OAAc,CAAC,CAAA;MACvC,IAAIE,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE1J,IAAI,GAAG0J,KAAK,CAAA;MACpD,IAAInN,GAAG,IAAIiN,OAAO,KAAKxJ,IAAI,EAAE1D,OAAO,CAACC,GAAG,CAAC,wCAAwC,CAAC,CAAA;KACrF,CAAC,OAAOyL,CAAM,EAAE;AACb,MAAA,IAAIzL,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,+CAA+C,EAAEyL,CAAC,IAAA,IAAA,GAAA,KAAA,CAAA,GAADA,CAAC,CAAE3N,OAAO,CAAC,CAAA;AACrF,KAAA;AAEA,IAAA,MAAM6G,QAAQ,GAAG,CAAAsB,OAAO,IAAPA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEtB,QAAQ,KAAIN,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE5C,MAAM,CAACsK,QAAQ,CAAW,CAAA;IACrF,IAAIxJ,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,qBAAqB,EAAE+M,IAAI,CAAC,CAAA;AACjD,IAAA,IAAIK,OAAqE,CAAA;IACzE,MAAMC,EAAE,GAAG,CAAApH,OAAO,oBAAPA,OAAO,CAAEoH,EAAE,KAAI,EAAE,CAAA;AAC5B,IAAA,IAAI5J,IAAI,KAAK4J,EAAE,KAAK,GAAG,IAAIA,EAAE,CAAC5L,QAAQ,CAAC6F,OAAO,CAACgG,MAAM,CAAC,CAAC,EAAEF,OAAO,GAAGA,CAACG,EAAW,EAAEC,UAAuB,KAAKd,YAAY,CAAC,CAACK,IAAI,IAAI,EAAE,EAAEb,GAAG,CAACuB,CAAC,IAAG;MAC3I,OAAO;QACHhK,IAAI,EAAE8J,EAAE,IAAI9J,IAAI;QAChBkB,QAAQ,EAAE,CAAA6I,UAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAVA,UAAU,CAAErJ,GAAG,KAAIQ,QAAQ;QACrCqH,oBAAoB,EAAE,CAACyB,CAAC,CAAA;OAC3B,CAAA;AACL,KAAC,CAAC,EAAEzN,GAAG,CAAC,CAAA,KACHoN,OAAO,GAAGA,CAACG,EAAW,EAAEC,UAAuB,KAAK7B,SAAS,CAAC4B,EAAE,IAAI9J,IAAI,EAAE;MAC3EkB,QAAQ,EAAE,CAAA6I,UAAU,IAAA,IAAA,GAAA,KAAA,CAAA,GAAVA,UAAU,CAAErJ,GAAG,KAAIQ,QAAQ;AACrCqH,MAAAA,oBAAoB,EAAEe,IAAAA;KACzB,EAAE/M,GAAG,CAAuB,CAAA;AAC7B,IAAA,IAAIgK,CAAC,GAAG,MAAMoD,OAAO,EAAE,CAAA;AACvB9F,IAAAA,OAAO,CAACxF,MAAM,CAAC4L,gBAAgB,GAAG1D,CAAC,CAAA;IACnC,IAAIhK,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,kBAAkB,EAAEgK,CAAC,CAAC,CAAA;IAC3C,IAAAgD,CAAAA,GAAA,GAAIhD,CAAC,KAAA,IAAA,IAADgD,GAAA,CAAGlB,EAAE,EAAE,OAAO9B,CAAC,CAAA;AACnB,IAAA,MAAM2D,EAAE,GAAG,CAAC,CAAA1H,OAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAPA,OAAO,CAAE2H,YAAY,KAAI,EAAE,EAAEC,MAAM,CAACJ,CAAC,IAAI,CAAC,CAACA,CAAC,CAAC,CAAA;IACzD,IAAIzN,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,oBAAoB,EAAE2N,EAAE,CAAC,CAAA;AAC9C,IAAA,IAAIA,EAAE,EAAE;AACJ,MAAA,MAAMlP,aAAa,GAAG,CAAAS,MAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAANA,MAAM,CAAE4O,WAAW,KAAIxG,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAW,CAAA;AACxF,MAAA,MAAMgN,YAAY,GAAGnK,MAAM,CAACS,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAK,CAAA,EAAArD,aAAa,CAACO,MAAM,MAAM,IAAI,EAAE,CAAC,CAAQ,CAAA;AAC7F,MAAA,MAAMgP,IAAI,GAAG,MAAM,IAAI3G,QAAQ,CAAC5I,aAAa,CAACwP,kBAAkB,IAAI,MAAM,EAAE3G,OAAO,CAAC,CAACvE,IAAI,CAAC;AACtFf,QAAAA,KAAK,EAAE;UACHU,MAAM,EAAEiL,EAAE,CAAC3J,MAAM;AACjBkK,UAAAA,OAAO,EAAE;AAACC,YAAAA,GAAG,EAAER,EAAAA;AAAG,WAAA;SACrB;AACD3K,QAAAA,UAAU,EAAE,IAAI;AAChBC,QAAAA,UAAU,EAAE,IAAI;AAChBmL,QAAAA,mBAAmB,EAAE,IAAI;QACzB,IAAG,CAAAnI,OAAO,IAAPA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEoI,cAAc,KAAI,EAAE,CAAA;OACnC,CAAC,CACGxO,KAAK,CAACC,GAAG,IAAIC,OAAO,CAACC,GAAG,CAAC,oCAAoCF,GAAG,CAAChC,OAAS,CAAA,CAAA,CAAC,CAAC,CAAA;MACjF,IAAIkC,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,MAAM,EAAEgO,IAAI,CAAC,CAAA;AAClC,MAAA,IAAIA,IAAI,IAAA,IAAA,IAAJA,IAAI,CAAE5K,IAAI,EAAE;AACZ,QAAA,KAAK,MAAMkL,GAAG,IAAIN,IAAI,CAAC5K,IAAI,EAAE;UACzB,KAAK,MAAM0G,CAAC,IAAIwE,GAAG,CAACN,IAAI,IAAI,EAAE,EAAE;YAC5B,IAAIhO,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,WAAW,EAAE8J,CAAC,EAAEwE,GAAG,CAACN,IAAI,CAAClE,CAAC,CAAC,CAACyE,MAAM,EAAER,YAAY,CAAC,CAAA;YACtE,IAAI,CAACO,GAAG,CAACN,IAAI,CAAClE,CAAC,CAAC,CAACyE,MAAM,IAAI,EAAE,EAAErC,GAAG,CAAEuB,CAAM,IAAK7J,MAAM,CAAC6J,CAAC,CAAC,CAAC,CAAChM,QAAQ,CAACsM,YAAY,CAAC,EAAE;AAAA,cAAA,IAAAS,GAAA,CAAA;cAC9E,IAAI;AACA,gBAAA,MAAMC,UAAU,GAAG/K,oBAAS,CAAC4K,GAAG,CAACN,IAAI,CAAClE,CAAC,CAAC,CAACrG,IAAI,CAAC,CAAA;gBAC9C,IAAIzD,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,iBAAiB,EAAEyO,UAAU,CAAC,CAAA;AACnD,gBAAA,IAAIA,UAAU,EAAE;AACZzE,kBAAAA,CAAC,GAAG,MAAMoD,OAAO,CAACqB,UAAU,EAAE;oBAACtK,GAAG,EAAEmK,GAAG,CAAC/H,GAAAA;AAAG,mBAAC,CAAC,CAAA;kBAC7C,IAAIvG,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,gBAAgB,EAAEgK,CAAC,CAAC,CAAA;AAC7C,iBAAA;eACH,CAAC,OAAOyB,CAAM,EAAE;AACb1L,gBAAAA,OAAO,CAACC,GAAG,CAAC,CAAA,+BAAA,EAAkCsO,GAAG,CAAC/K,GAAG,CAAA,MAAA,EAASkI,CAAC,CAAC3N,OAAO,CAAA,CAAE,CAAC,CAAA;AAC9E,eAAA;AACA,cAAA,IAAImI,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEjG,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,gBAAgB,EAAEgK,CAAC,CAAC,CAAA;cAClD,IAAAwE,CAAAA,GAAA,GAAIxE,CAAC,KAAA,IAAA,IAADwE,GAAA,CAAG1C,EAAE,EAAE,OAAO9B,CAAC,CAAA;AACvB,aAAA;AACJ,WAAA;AACJ,SAAA;AACJ,OAAA;AACJ,KAAA;AACA,IAAA,OAAOA,CAAC,CAAA;GACX,CAAA;AACL,EAAC;MASY0E,iBAAiB,GAAGA,CAAC3B,IAA4B,EAAE7N,MAA6B,KAA+B;EAExH,MAAMyP,UAAU,GAAG7H,wBAAa,CAAC;IAACC,SAAS,EAAE7H,MAAM,CAAC0H,MAAAA;AAAO,GAAA,CAAC,CAACL,GAAG,EAAE,CAAA;EAClE,IAAI,CAAClD,KAAK,CAACC,OAAO,CAACyJ,IAAI,CAAC,EAAE,OAAO,EAAE,CAAA;AACnC,EAAA,OAAOA,IAAI,CAACb,GAAG,CAACuB,CAAC,IAAG;IAChB,OAAO;MACHnB,UAAU,EAAEjJ,KAAK,CAACC,OAAO,CAACmK,CAAC,CAAC,GAAGmB,wBAAa,CAAC;AACzCC,QAAAA,IAAI,EAAE;UAAC3J,MAAM,EAAEhG,MAAM,CAAC4P,aAAa;UAAEC,QAAQ,EAAE7P,MAAM,CAAC8P,eAAAA;SAAgB;AACtEzC,QAAAA,GAAG,EAAE;AAACC,UAAAA,SAAS,EAAEiB,CAAC,CAAC,CAAC,CAAC;AAAEhB,UAAAA,QAAQ,EAAE,OAAOgB,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,CAACA,CAAC,CAAC,CAAC,CAAC,CAAC,GAAGA,CAAC,CAAC,CAAC,CAAA;AAAE,SAAA;OAC7E,EAAEvO,MAAM,CAAC,GAAG0P,wBAAa,CAACnB,CAAC,EAAEvO,MAAM,CAAC;AACrCyP,MAAAA,UAAAA;KACH,CAAA;AACL,GAAC,CAA8B,CAAA;AACnC,EAAC;MAKYM,SAAS,GAAGA,CAACjD,oBAA6B,EAAE/F,OAAsC,KAAI;EAC/F,OAAO,MAAOqB,OAAoB,IAA0B;AAAA,IAAA,IAAA4H,GAAA,CAAA;AACxD,IAAA,MAAMzQ,aAAa,GAAG,CAAAwH,OAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAPA,OAAO,CAAE6H,WAAW,KAAIxG,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAW,CAAA;AAEzF,IAAA,IAAIiJ,CAAC,GAAQ;AAAC8B,MAAAA,EAAE,EAAE,KAAK;AAAExH,MAAAA,KAAK,EAAE,EAAA;KAAG,CAAA;AAEnC,IAAA,MAAMyI,IAAI,GAA8B2B,iBAAiB,CAAC1C,oBAA8C,EAAEvN,aAAsC,CAAC,CAAA;IAEjJ,IAAIsO,IAAI,CAAC/I,MAAM,EAAE;AACbgG,MAAAA,CAAC,GAAG,MAAM8C,iBAAiB,CAACC,IAAI,EAAEtO,aAA6B,EAAEwH,OAAO,CAAC,CAACqB,OAAO,CAAC,CAAA;AAElF;KACH,MAAM,IAAI0E,oBAAoB,KAAK,GAAG,EAAEhC,CAAC,CAAC8B,EAAE,GAAG,IAAI,CAAA;AACpD,IAAA,IAAA,CAAAoD,GAAA,GAAIlF,CAAC,aAADkF,GAAA,CAAGpD,EAAE,EAAE;AACPxE,MAAAA,OAAO,CAACxF,MAAM,CAACqN,aAAa,GAAG,IAAI,CAAA;AACnC7H,MAAAA,OAAO,CAACxF,MAAM,CAACsN,IAAI,GAAG,IAAI,CAAA;AAC1B,MAAA,OAAO9H,OAAO,CAAA;AAClB,KAAC,MAAM;AAAA,MAAA,IAAA+H,GAAA,CAAA;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,MAAA,IAAIpJ,OAAO,IAAPA,IAAAA,IAAAA,OAAO,CAAEjG,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,yBAAyB,EAAEiG,OAAO,oBAAPA,OAAO,CAAEqJ,aAAa,CAAC,CAAA;AAChF,MAAA,IAAIrJ,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEqJ,aAAa,EAAE;AACxB,QAAA,IAAIrJ,OAAO,CAACqJ,aAAa,KAAKhE,OAAO,EAAE;AACnChE,UAAAA,OAAO,CAACxF,MAAM,CAACsN,IAAI,GAAG,IAAI,CAAA;AAC1B,UAAA,OAAO9H,OAAO,CAAA;SACjB,MAAM,IAAIjE,KAAK,CAACC,OAAO,CAAC2C,OAAO,CAACqJ,aAAa,CAAC,EAAE;AAC7C,UAAA,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC7N,QAAQ,CAAC6F,OAAO,CAACgG,MAAM,CAAC,EAAE;AACxD,YAAA,IAAIjK,KAAK,CAACC,OAAO,CAACgE,OAAO,CAAClE,IAAI,CAAC,EAAE,MAAM,IAAIxF,KAAK,CAAC,2CAA2C,CAAC,CAAA;YAC7F,KAAK,MAAMkM,CAAC,IAAIxC,OAAO,CAAClE,IAAI,IAAI,EAAE,EAAE;AAChC,cAAA,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC3B,QAAQ,CAACqI,CAAC,CAAC,EAAE;AAC/D,gBAAA,KAAK,MAAMyF,EAAE,IAAIjI,OAAO,CAAClE,IAAI,CAAC0G,CAAC,CAAC,IAAI,EAAE,EAAE;kBACpC,IAAI,CAAC7D,OAAO,CAACqJ,aAAa,CAAC7N,QAAQ,CAAC8N,EAAE,CAAC,EAAE;AACrC,oBAAA,MAAMC,GAAG,GAAGD,EAAE,CAAC5F,KAAK,CAAC,GAAG,CAAC,CAAA;AACzB,oBAAA,IAAI6F,GAAG,CAACxL,MAAM,KAAK,CAAC,EAAE,OAAOsD,OAAO,CAAClE,IAAI,CAAC0G,CAAC,CAAC,CAACyF,EAAE,CAAC,CAAC,KAC5C,IAAI,CAACtJ,OAAO,CAACqJ,aAAa,CAAC7N,QAAQ,CAAC+N,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAOlI,OAAO,CAAClE,IAAI,CAAC0G,CAAC,CAAC,CAACyF,EAAE,CAAC,CAAA;AAChF,mBAAA;AACJ,iBAAA;AACJ,eAAC,MAAM,IAAI,CAACtJ,OAAO,CAACqJ,aAAa,CAAC7N,QAAQ,CAACqI,CAAC,CAAC,EAAE,OAAOxC,OAAO,CAAClE,IAAI,CAAC0G,CAAC,CAAC,CAAA;AACzE,aAAA;AACAxC,YAAAA,OAAO,CAACxF,MAAM,CAACsN,IAAI,GAAG,IAAI,CAAA;AAC1B,YAAA,OAAO9H,OAAO,CAAA;AAClB,WAAA;AACJ,SAAA;AACJ,OAAA;AACA,MAAA,IAAA,CAAA+H,GAAA,GAAIrF,CAAC,aAADqF,GAAA,CAAGvD,EAAE,EAAE;AACPxE,QAAAA,OAAO,CAACxF,MAAM,CAACqN,aAAa,GAAG,IAAI,CAAA;AACnC7H,QAAAA,OAAO,CAACxF,MAAM,CAACsN,IAAI,GAAG,IAAI,CAAA;AAC1B,QAAA,OAAO9H,OAAO,CAAA;AAClB,OAAC,MAAM;AAAA,QAAA,IAAAmI,GAAA,CAAA;AAEH;QACA,MAAM;AAACC,UAAAA,SAAAA;SAAU,GAAGzJ,OAAO,IAAI;UAACyJ,SAAS,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAA;SAAE,CAAA;AAC5E,QAAA,IAAIA,SAAS,IAAA,IAAA,IAATA,SAAS,CAAE1L,MAAM,EAAE;AACnB;UACA,IAAI2L,YAAY,GAAW,EAAE,CAAA;AAC7B;UACA,IAAIC,SAAS,GAAG,IAAI,CAAA;AACpB,UAAA,MAAMC,cAAc,GAAG,MAAOC,KAAsB,IAAI;YACpD,IAAIC,WAAW,GAAG,EAAE,CAAA;AACpB,YAAA,MAAMC,UAAU,GAAGF,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAA;YACnC,IAAIG,SAAS,GAAG,CAAC,CAAC,CAAA;AAClB,YAAA,IAAID,UAAU,EAAEC,SAAS,GAAG,CAAC,CAAC,KACzB;AACD;AACAF,cAAAA,WAAW,GAAID,KAAK,CAAC,CAAC,CAAc,CAAC5D,GAAG,CAACuB,CAAC,IAAIA,CAAC,CAAC9D,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;cAC9DsG,SAAS,GAAGF,WAAW,CAAC5P,OAAO,CAACmH,OAAO,CAACgG,MAAM,CAAC,CAAA;AACnD,aAAA;AACA;AACA,YAAA,IAAI2C,SAAS,GAAG,CAAC,CAAC,EAAE;AAChB;AACA,cAAA,MAAMC,QAAQ,GAAG,MAAMnF,UAAU,CAACzD,OAAO,EAAE;AAACxF,gBAAAA,MAAM,EAAEmE,OAAO,IAAPA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEkK,cAAAA;AAAc,eAAC,CAAC,CAAA;cAC7E,IAAIC,OAAO,GAAG,KAAK,CAAA;AAEnB;cACA,MAAMC,UAAU,GAAGA,CAACC,iBAAyB,EAAEC,WAAsB,GAAA,KAAK,KAAI;AAC1E,gBAAA,MAAMxC,YAAY,GAAG1J,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAK,CAAA,EAAArD,aAAa,CAACO,MAAM,CAAIuR,CAAAA,EAAAA,WAAW,EAAE,CAAQ,CAAA;AAC1F,gBAAA,IAAGtK,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEjG,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,gBAAgB,EAAE+N,YAAY,EAAEuC,iBAAiB,CAAC,CAAA;AAC/E;gBACA,IAAIvC,YAAY,IAAIuC,iBAAiB,EAAE;AACnC;kBACA,MAAME,QAAQ,GAAGnN,KAAK,CAACC,OAAO,CAACyK,YAAY,CAAC,GAAGA,YAAY,CAAC7B,GAAG,CAACuB,CAAC,IAAI7J,MAAM,CAAC6J,CAAC,CAAC,CAAC,GAAG,CAAC7J,MAAM,CAACmK,YAAY,CAAC,CAAC,CAAA;AACxG,kBAAA,IAAI1K,KAAK,CAACC,OAAO,CAACgN,iBAAiB,CAAC,EAAE;AAClC;AACA,oBAAA,KAAK,IAAI1D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG4D,QAAQ,CAACxM,MAAM,EAAE4I,CAAC,EAAE,EAAE;sBACtC,MAAM6D,OAAO,GAAG7M,MAAM,CAAC4M,QAAQ,CAAC5D,CAAC,CAAC,CAAC,CAAA;sBACnC,KAAK,IAAI8D,EAAE,GAAG,CAAC,EAAEA,EAAE,GAAGJ,iBAAiB,CAACtM,MAAM,GAAG;wBAC7C,MAAM2M,IAAI,GAAG/M,MAAM,CAAC0M,iBAAiB,CAACI,EAAE,CAAC,CAAC,CAAA;wBAC1C,IAAIC,IAAI,KAAKF,OAAO,EAAEL,OAAO,GAAG,IAAI,CAAC,KAChCM,EAAE,EAAE,CAAA;AACb,uBAAA;AACA,sBAAA,IAAIN,OAAO,EAAE,OAAA;AACjB,qBAAA;mBACH,MAAM,IAAII,QAAQ,CAAC/O,QAAQ,CAACmC,MAAM,CAAC0M,iBAAiB,CAAC,CAAC,EAAE;oBACrD,OAAOF,OAAO,GAAG,IAAI,CAAA;AACzB,mBAAA;AACJ,iBAAC,MAAM,OAAA;eACV,CAAA;AAED,cAAA,IAAIF,QAAQ,EAAE;AACV5I,gBAAAA,OAAO,GAAG4D,SAAS,CAAC5D,OAAO,EAAE4I,QAAQ,CAAC,CAAA;AACtC;gBACA,MAAMU,KAAK,GAAGvN,KAAK,CAACC,OAAO,CAACwM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,GAAGA,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AACjE,gBAAA,KAAK,MAAMe,QAAQ,IAAID,KAAK,IAAI,EAAE,EAAE;kBAChC,MAAMpB,GAAG,GAAG5L,MAAM,CAACiN,QAAQ,CAAC,CAAClH,KAAK,CAAC,GAAG,CAAC,CAAA;kBACvC,IAAI6F,GAAG,CAAC,CAAC,CAAC,CAAC/N,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACtB,MAAMqP,IAAI,GAAGtB,GAAG,CAAC,CAAC,CAAC,CAAC7F,KAAK,CAAC,GAAG,CAAC,CAAA;oBAC9B,MAAMF,GAAG,GAAGpF,eAAI,CAAC6L,QAAQ,EAAEY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AACnC,oBAAA,IAAIrH,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE;AAChC,sBAAA,IAAIpG,KAAK,CAACC,OAAO,CAACmG,GAAG,CAAC,EAAE;AACpB;AACA,wBAAA,KAAK,MAAMI,CAAC,IAAIJ,GAAG,EAAE;AACjB4G,0BAAAA,UAAU,CAAChM,eAAI,CAACwF,CAAC,EAAEiH,IAAI,CAAC,CAAC,CAAC,CAAW,EAAEtB,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAA;AACvD,0BAAA,IAAIY,OAAO,EAAE,MAAA;AACjB,yBAAA;AACJ,uBAAC,MAAM;AACH;AACA,wBAAA,KAAK,MAAMtG,CAAC,IAAIL,GAAG,EAAE;0BACjB4G,UAAU,CAAChM,eAAI,CAACoF,GAAG,EAAK,CAAAK,EAAAA,CAAK,IAAAgH,IAAI,CAAC,CAAC,CAAG,CAAA,CAAA,CAAW,EAAEtB,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAA;AACnE,0BAAA,IAAIY,OAAO,EAAE,MAAA;AACjB,yBAAA;AACJ,uBAAA;AACJ,qBAAA;AAEJ,mBAAC,MAAMC,UAAU,CAAChM,eAAI,CAAC6L,QAAQ,EAAEV,GAAG,CAAC,CAAC,CAAC,CAAW,EAAEA,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAA;AAExE,iBAAA;AACJ,eAAA;AAEA,cAAA,IAAIY,OAAO,EAAE;gBACTpG,CAAC,CAAC8B,EAAE,GAAG,IAAI,CAAA;AACX;AACA;AACA,gBAAA,IAAIgE,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,CAACzK,IAAI,CAACoI,CAAC,IAAIqC,KAAK,CAAC,CAAC,CAAC,CAACrO,QAAQ,CAACgM,CAAC,CAAC,CAAC,EAAE;AAChF,kBAAA,MAAMsD,aAAa,GAAGf,UAAU,GAAG,GAAG,GAAGF,KAAK,CAAC,CAAC,CAAC,CAACG,SAAS,CAAC,CAAA;kBAC5D,MAAMe,WAAW,GAAGD,aAAa,CAACpH,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/C;kBACA,IAAIqH,WAAW,KAAKD,aAAa,EAAE;AAC/B;oBACA,MAAME,MAAM,GAAGF,aAAa,CAACpH,KAAK,CAAC,GAAG,CAAC,CAAC9G,KAAK,CAAC,CAAC,CAAC,CAACqO,IAAI,CAAC,EAAE,CAAC,CAACvH,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;AAE1E,oBAAA,KAAK,MAAMwH,KAAK,IAAIF,MAAM,EAAE;sBACxB,MAAMG,QAAQ,GAAG/M,eAAI,CAACiD,OAAO,CAAClE,IAAI,EAAE+N,KAAK,CAAC,CAAA;AAC1C,sBAAA,IAAIC,QAAQ,EAAEzB,YAAY,GAAGvE,eAAI,CAACuE,YAAY,EAAEwB,KAAK,EAAEC,QAAQ,CAAC,CAAC,KAC5D;wBACD,KAAK,MAAMC,QAAQ,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;AAC3C,0BAAA,MAAMC,aAAa,GAAGjN,eAAI,CAACiD,OAAO,CAAClE,IAAI,EAAE,CAAGiO,EAAAA,QAAQ,CAAIF,CAAAA,EAAAA,KAAK,EAAE,CAAC,CAAA;AAChE,0BAAA,IAAIG,aAAa,EAAE3B,YAAY,GAAGvE,eAAI,CAACuE,YAAY,EAAE,CAAA,EAAG0B,QAAQ,CAAIF,CAAAA,EAAAA,KAAK,CAAE,CAAA,EAAEG,aAAa,CAAC,CAAA;AAC/F,yBAAA;AACJ,uBAAA;AACJ,qBAAA;mBACH,MAAM1B,SAAS,GAAG,KAAK,CAAA;iBAC3B,MAAMA,SAAS,GAAG,KAAK,CAAA;AAC5B,eAAA;AACJ,aAAA;WACH,CAAA;AAED,UAAA,WAAW,MAAME,KAAK,IAAIJ,SAAS,EAAE;YACjC,IAAIE,SAAS,EAAE,MAAMC,cAAc,CAACC,KAAK,CAAC,CAAC,KACtC,MAAA;AACT,WAAA;UACA,IAAIF,SAAS,EAAEtI,OAAO,GAAG8D,eAAI,CAAC9D,OAAO,EAAE,MAAM,EAAEqI,YAAY,CAAC,CAAA;AAChE,SAAA;AAEA,QAAA,IAAA,CAAAF,GAAA,GAAIzF,CAAC,aAADyF,GAAA,CAAG3D,EAAE,EAAE;AACPxE,UAAAA,OAAO,CAACxF,MAAM,CAACqN,aAAa,GAAG,IAAI,CAAA;AACnC7H,UAAAA,OAAO,CAACxF,MAAM,CAACsN,IAAI,GAAG,IAAI,CAAA;AAC1B,UAAA,OAAO9H,OAAO,CAAA;AAClB,SAAC,MAAM;UAEH,IAAIrB,OAAO,YAAPA,OAAO,CAAEjG,GAAG,EAAED,OAAO,CAACwR,KAAK,CAAC,0CAA0C,EAAEvH,CAAC,EAAE1C,OAAO,CAACkK,IAAI,EAAElK,OAAO,CAACoC,IAAI,CAAC,CAAA;AAC1G,UAAA,IAAI,EAACzD,OAAO,IAAPA,IAAAA,IAAAA,OAAO,CAAEsF,OAAO,CAAE,EAAA,MAAM,IAAI3N,KAAK,CAAC,+CAA+C,GAAG0J,OAAO,CAACkK,IAAI,GAAG,IAAI,GAAGlK,OAAO,CAACoC,IAAI,GAAG,KAAK,GAAGpC,OAAO,CAACgG,MAAM,CAAC,CAAC,KACjJ;AACD;AACA;AACAhG,YAAAA,OAAO,CAACxF,MAAM,CAAC2P,eAAe,GAAG;cAC7BD,IAAI,EAAElK,OAAO,CAACkK,IAAI;cAClBlE,MAAM,EAAEhG,OAAO,CAACgG,MAAM;cACtB5D,IAAI,EAAEpC,OAAO,CAACoC,IAAI;cAClBgI,MAAM,EAAE1H,CAAC;aACZ,CAAA;;AACD,YAAA,OAAO1C,OAAO,CAAA;AAClB,WAAA;AACJ,SAAA;AACJ,OAAA;AACJ,KAAA;GACH,CAAA;AACL,EAAC;MAEYqK,QAAQ,GAAGA,CAAI3F,oBAA8B,EAAE/F,OAAyB,KAAI;EACrF,OAAO,MAAOqB,OAAuB,IAA6B;IAC9D,MAAM7I,aAAa,GAAG6I,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAW,CAAA;AACjE,IAAA,MAAM5B,SAAS,GAAGV,aAAa,CAACU,SAAS,IAAI,MAAM,CAAA;AACnD,IAAA,MAAMH,MAAM,GAAGP,aAAa,CAACO,MAAM,IAAI,OAAO,CAAA;AAE9C;AACA,IAAA,IAAIiH,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEjG,GAAG,EAAE;MACd,IAAI;AAAA,QAAA,IAAA4R,iBAAA,EAAAC,iBAAA,EAAAC,iBAAA,EAAAtK,eAAA,CAAA;AACA,QAAA,MAAMuK,IAAI,GAAQ1N,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAAC3C,SAAS,EAAEH,MAAM,CAAC,CAAC,CAAA;QAC3D,MAAMgT,IAAI,GAAQ3N,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,OAAO,CAAC,CAAA;AAC/C,QAAA,MAAMmQ,IAAI,GAAQ5N,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAAC,YAAY,EAAE9C,MAAM,CAAC,CAAC,CAAA;AAC9D,QAAA,MAAMkT,eAAe,GAAG7N,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAA;AAC1E/B,QAAAA,OAAO,CAACC,GAAG,CAAC,qCAAqC,EAAE;AAC/CoJ,UAAAA,SAAS,EAAEpK,MAAM;AACjBmK,UAAAA,QAAQ,EAAEhK,SAAS;AACnB;AACAgT,UAAAA,QAAQ,EAAEJ,IAAI,GAAI,EAAAH,iBAAA,GAAAG,IAAI,CAAClU,WAAW,KAAhB+T,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAA,CAAkB1Q,IAAI,KAAI,OAAO6Q,IAAI,GAAI,OAAOA,IAAI;AACtEK,UAAAA,SAAS,EAAE,CAAC,EAAEL,IAAI,KAAKA,IAAI,CAACxO,GAAG,IAAIwO,IAAI,CAAClQ,EAAE,CAAC,CAAC;AAC5CwQ,UAAAA,QAAQ,EAAEL,IAAI,GAAI,EAAAH,iBAAA,GAAAG,IAAI,CAACnU,WAAW,KAAhBgU,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAA,CAAkB3Q,IAAI,KAAI,OAAO8Q,IAAI,GAAI,OAAOA,IAAI;AACtEM,UAAAA,SAAS,EAAE,CAAC,EAAEN,IAAI,KAAKA,IAAI,CAACzO,GAAG,IAAIyO,IAAI,CAACnQ,EAAE,CAAC,CAAC;AAC5C0Q,UAAAA,QAAQ,EAAEN,IAAI,GAAI,EAAAH,iBAAA,GAAAG,IAAI,CAACpU,WAAW,KAAhBiU,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,iBAAA,CAAkB5Q,IAAI,KAAI,OAAO+Q,IAAI,GAAI,OAAOA,IAAI;AACtEO,UAAAA,SAAS,EAAE,CAAC,EAAEP,IAAI,KAAKA,IAAI,CAAC1O,GAAG,IAAI0O,IAAI,CAACpQ,EAAE,CAAC,CAAC;AAC5Ce,UAAAA,UAAU,EAAErB,MAAM,CAACC,IAAI,CAAC8F,OAAO,CAACxF,MAAM,IAAI,EAAE,CAAC,CAACe,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;UAC1DR,QAAQ,EAAA,CAAAmF,eAAA,GAAGF,OAAe,CAACxF,MAAM,KAAA,IAAA,GAAA,KAAA,CAAA,GAAtB0F,eAAA,CAAwBnF,QAAQ;UAC3CqH,IAAI,EAAGpC,OAAe,CAACoC,IAAI;UAC3B4D,MAAM,EAAGhG,OAAe,CAACgG,MAAM;UAC/BmF,aAAa,EAAE,OAAOP,eAAe,KAAK,QAAQ,IAAIA,eAAe,CAAClO,MAAM,GAAG,CAAA;AAClF,SAAA,CAAC,CAAA;OACL,CAAC,MAAM,EACR;AACJ,KAAA;AAEA,IAAA,MAAM0O,aAAa,GAAQrO,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAAC3C,SAAS,EAAEH,MAAM,CAAC,CAAC,IAAIqF,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,OAAO,CAAC,IAAIuC,eAAI,CAACiD,OAAO,CAACxF,MAAM,CAACtC,UAAU,EAAER,MAAM,CAAC,CAAA;AAChJ;AACA,IAAA,IAAI0T,aAAa,EAAE;MACfpL,OAAO,CAACxF,MAAM,CAAC9C,MAAM,CAAC,GAAG,OAAO0T,aAAa,KAAK,QAAQ,GACpD;AAACnP,QAAAA,GAAG,EAAEmP,aAAAA;AAAc,OAAA,GACpBA,aAAa,CAAA;AACvB,KAAA;AACA,IAAA,MAAMnQ,OAAO,GAAG,OAAOmQ,aAAa,KAAK,QAAQ,GAAGA,aAAa,GAAGA,aAAa,IAAbA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,aAAa,CAAEnP,GAAG,CAAA;AACtF,IAAA,MAAMoP,QAAQ,GAAG,CAAC,EAAED,aAAa,KAAK,OAAOA,aAAa,KAAK,QAAQ,IAAI,CAAC,CAACnQ,OAAO,CAAC,CAAC,CAAA;AACtF;IACA,MAAMqQ,YAAY,GAAGvO,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAErD,aAAa,CAAC6K,WAAW,IAAI,aAAa,CAAC,IAAIjF,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAAC9C,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IAE/H,IAAIiH,OAAO,IAAPA,IAAAA,IAAAA,OAAO,CAAEjG,GAAG,EAAED,OAAO,CAACC,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE2S,QAAQ,EAAE,SAAS,EAAEpQ,OAAO,EAAE,cAAc,EAAE,CAAC,CAACqQ,YAAY,EAAE,WAAW,EAAEzT,SAAS,EAAE,QAAQ,EAAEH,MAAM,EAAE,MAAM,EAAEsI,OAAO,CAACxF,MAAM,CAAC3C,SAAS,CAAC,EAAE,cAAc,EAAEmI,OAAO,CAACxF,MAAM,CAAC+Q,KAAK,EAAE,uBAAuB,EAAE7G,oBAAoB,CAAC,CAAA;IACtR,IAAI/F,OAAO,YAAPA,OAAO,CAAEjG,GAAG,IAAI,CAAC2S,QAAQ,EAAE;MAC3B,IAAI;AACA9J,QAAAA,aAAa,CAAC,mBAAmB,EAAEvB,OAAO,CAAC,CAAA;OAC9C,CAAC,MAAM,EACR;AACJ,KAAA;AACA;IACA,IAAI0E,oBAAoB,KAAKT,OAAO,IAAKS,oBAAoB,IAAIA,oBAAoB,CAAC1E,OAAO,CAACgG,MAAM,CAAC,KAAK/B,OAAQ,EAAE,OAAOoH,QAAQ,GAAGrL,OAAO,GAAG,MAAMkE,WAAW,CAAClE,OAAO,CAAC,CAAA;AAC1K,IAAA,MAAMwL,SAAS,GAAG,CAAC,CAAA7M,OAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAPA,OAAO,CAAE6M,SAAS,KAAI,EAAE,EAAErR,QAAQ,CAAC6F,OAAO,CAACgG,MAAM,CAAC,KAAKjJ,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,YAAY,CAAC,IAAIuC,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAACrD,aAAa,CAACU,SAAS,EAAE,YAAY,CAAC,CAAC,CAAQ,CAAA;AACrL;AACA;AACA,IAAA,IAAI,CAACwT,QAAQ,IAAI,CAACC,YAAY,EAAE;AAC5B,MAAA,IAAI3M,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEjG,GAAG,EAAE;QACd,IAAI;UACCsH,OAAe,CAACxF,MAAM,GAAG;YAAC,GAAIwF,OAAe,CAACxF,MAAM;AAAE9B,YAAAA,GAAG,EAAE,IAAA;WAAK,CAAA;SACpE,CAAC,MAAM,EACR;AACJ,OAAA;AACAsH,MAAAA,OAAO,GAAIwL,SAAS,IAAI7M,OAAO,IAAPA,IAAAA,IAAAA,OAAO,CAAEqJ,aAAa,GAAI,MAAM9D,WAAW,CAAClE,OAAO,CAAC,GAAG,MAAMoE,QAAQ,CAACpE,OAAO,CAAC,CAAA;AAC1G,KAAA;IACA,IAAIrB,OAAO,YAAPA,OAAO,CAAEjG,GAAG,IAAI,CAAC2S,QAAQ,EAAE;AAC3B;AACA,MAAA,MAAMI,SAAS,GAAQ1O,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAAC3C,SAAS,EAAEH,MAAM,CAAC,CAAC,IAAIqF,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,OAAO,CAAC,IAAIuC,eAAI,CAACiD,OAAO,CAACxF,MAAM,CAACtC,UAAU,EAAER,MAAM,CAAC,CAAA;AAC5I,MAAA,MAAMgU,MAAM,GAAG,OAAOD,SAAS,KAAK,QAAQ,GAAGA,SAAS,GAAGA,SAAS,IAATA,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAS,CAAExP,GAAG,CAAA;AACzExD,MAAAA,OAAO,CAACC,GAAG,CAAC,gCAAgC,EAAE;QAAC2S,QAAQ,EAAE,CAAC,CAACI,SAAS;QAAEC,MAAM;AAAE5J,QAAAA,SAAS,EAAEpK,MAAAA;AAAM,OAAC,CAAC,CAAA;AACrG,KAAA;IACA,IAAIgN,oBAAoB,KAAKV,OAAO,IAAI,EAACrF,OAAO,IAAPA,IAAAA,IAAAA,OAAO,CAAEqJ,aAAa,CAAE,EAAA;AAC7DhI,MAAAA,OAAO,CAACxF,MAAM,CAACqN,aAAa,GAAG,CAAC,CAAC7H,OAAO,CAACxF,MAAM,CAAC9C,MAAM,CAAC,CAAA;AACvD,MAAA,OAAOsI,OAAO,CAAA;AAClB,KAAA;IACA,IAAIwL,SAAS,EAAE,OAAOxL,OAAO,CAAA;AAC7B,IAAA,IAAI,CAAC0E,oBAAoB,EAAE,OAAO1E,OAAO,CAAA;IACzC,OAAO,MAAM2H,SAAS,CAACjD,oBAAoB,EAAE/F,OAAO,CAAC,CAACqB,OAAO,CAAC,CAAA;GACjE,CAAA;AACL,EAAC;MAEY2L,WAAW,GAAGA,CAAIC,OAAoB,EAAEjN,OAAyB,KAAI;EAC9E,OAAO,MAAOqB,OAAuB,IAA6B;IAC9D,MAAMpI,MAAM,GAAGoI,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAe,CAAA;AAC9D;AACA,IAAA,MAAMoI,QAAQ,GAAIjK,MAAc,CAACC,SAAS,IAAI,MAAM,CAAA;AACpD,IAAA,MAAMiK,SAAS,GAAIlK,MAAc,CAACF,MAAM,IAAI,OAAO,CAAA;AACnD,IAAA,MAAM0T,aAAa,GAAGrO,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAACqH,QAAQ,EAAEC,SAAS,CAAC,CAAC,CAAA;IACjE,IAAI,CAACsJ,aAAa,EAAE;MAChB,MAAM1T,MAAM,GAAGqF,eAAI,CAACiD,OAAO,EAAE,CAAC,MAAM,EAAE8B,SAAS,CAAC,CAAC,CAAA;AACjD,MAAA,IAAIpK,MAAM,EAAEsI,OAAO,GAAG8D,eAAI,CAAC9D,OAAO,EAAE,CAAC6B,QAAQ,EAAEC,SAAS,CAAC,EAAEpK,MAAM,CAAC,CAAA;AACtE,KAAA;AACA,IAAA,IAAIsI,OAAO,CAACkK,IAAI,KAAK,QAAQ,EAAE;MAC3B,MAAM;AAAClE,QAAAA,MAAAA;AAAO,OAAA,GAAGhG,OAAyD,CAAA;MAC1E,IAAI4L,OAAO,CAAC5F,MAA2B,CAAC,IAAI4F,OAAO,CAAC,KAAK,CAAC,EAAE;AACxD,QAAA,OAAO,MAAMvB,QAAQ,CAACuB,OAAO,CAAC5F,MAAM,CAAC,IAAI4F,OAAO,CAAC,KAAK,CAAC,EAAEjN,OAAO,CAAC,CAACqB,OAAO,CAAQ,CAAA;OACpF,MAAM,OAAOA,OAAO,CAAA;KACxB,MAAM,OAAOA,OAAO,CAAA;GACxB,CAAA;AACL,EAAC;AAEY6L,MAAAA,eAAe,GAAIrT,GAAQ,IAAI;AACxC,EAAA,OAAQwH,OAAoB,IAAI;AAAA,IAAA,IAAA0B,gBAAA,CAAA;AAC5B,IAAA,MAAMoK,UAAU,GAAApK,CAAAA,gBAAA,GAAG1B,OAAO,CAACxF,MAAM,KAAA,IAAA,IAAA,CAAAkH,gBAAA,GAAdA,gBAAA,CAAgB0E,gBAAgB,KAAhC1E,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAAkClJ,GAAG,CAAA;AACxD,IAAA,MAAMhC,OAAO,GACTuF,KAAK,CAACC,OAAO,CAAC8P,UAAU,CAAC,IAAIA,UAAU,CAAC,CAAC,CAAC,GACpCA,UAAU,CAAC,CAAC,CAAC,GACb,CAAAtT,GAAG,oBAAHA,GAAG,CAAEhC,OAAO,KAAI8F,MAAM,CAAC9D,GAAG,CAAC,IAAI,uBAAuB,CAAA;IAEhE,MAAMuT,CAAC,GAAG,CAAAvV,OAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAPA,OAAO,CAAEmH,WAAW,EAAE,KAAI,EAAE,CAAA;AACtC,IAAA,MAAMqO,QAAQ,GAAG;AACb7P,MAAAA,IAAI,EAAE;QACF8P,MAAM,EAAEF,CAAC,CAAC5R,QAAQ,CAAC,SAAS,CAAC,GAAG,SAAS,GAAG3D,OAAAA;AAC/C,OAAA;KACJ,CAAA;IAEDiC,OAAO,CAAC0G,IAAI,CAA4B,CAAAa,wBAAAA,EAAAA,OAAO,CAACoC,IAAS,CAAA,EAAA,EAAA5L,OAAS,CAAA,CAAA,CAAC,CAAA;AAEnE,IAAA,MAAM,IAAIiI,uBAAgB,CAACjI,OAAO,EAAEwV,QAAQ,CAAC,CAAA;GAChD,CAAA;AACL;;AC7lBaE,MAAAA,UAAU,GAAGA,MAAK;EAC3B,OAAO,MAAOlM,OAAW,IAAI;IAEzB,MAAM;AAAEmM,MAAAA,GAAG,GAAG,EAAE;AAAEzL,MAAAA,MAAM,GAAG,EAAA;KAAI,GAAGV,OAAO,CAAClE,IAAI,CAAA;AAC9C;AACA,IAAA,IAAG,EAACqQ,GAAG,IAAA,IAAA,IAAHA,GAAG,CAAEzP,MAAM,KAAI,EAACgE,MAAM,YAANA,MAAM,CAAEhE,MAAM,CAAE,EAAA,MAAM,IAAIpG,KAAK,CAAC,4BAA4B,CAAC,CAAA;AAEjF;IACA,MAAM;MAACgJ,MAAM;MAAE4C,QAAQ;MAAExK,MAAM;AAAEyE,MAAAA,IAAAA;KAAK,GAAG6D,OAAO,CAAC1G,GAAG,CAACG,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC1E,MAAM4N,UAAU,GAAG7H,wBAAa,CAAC;AAACC,MAAAA,SAAS,EAAEH,MAAAA;AAAO,KAAA,CAAC,CAACL,GAAG,EAAE,CAAA;IAE3D,MAAMmN,cAAc,GAAGC,yBAAc,CAAC,CAAC,GAAGF,GAAG,EAAE,GAAGzL,MAAM,CAAC,CAAC,CAAA;AAE1D,IAAA,MAAM4L,OAAO,GAAG,MAAM7H,qBAAU,CAAC1H,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE,CAAC9C,MAAM,EAAEyE,IAAI,CAAC,CAAW,EAAE;MAC7EkB,QAAQ,EAAEN,eAAI,CAACiD,OAAO,CAACxF,MAAM,EAAE0H,QAAQ,CAAW;AAClDwC,MAAAA,oBAAoB,EAAE0H,cAAc,CAACxH,GAAG,CAACuB,CAAC,IAAG;QACzC,OAAO;AACH;AACAnB,UAAAA,UAAU,EAAEmB,CAAC;AACbkB,UAAAA,UAAAA;SACH,CAAA;OACJ,CAAA;AACJ,KAAA,CAAC,CAAA;AAEF,IAAA,IAAG,EAACiF,OAAO,IAAPA,IAAAA,IAAAA,OAAO,CAAE9H,EAAE,CAAE,EAAA,MAAM,IAAIlO,KAAK,CAAC,qEAAqE,CAAC,CAAA;AAEvG;AACA,IAAA,MAAMiW,SAAS,GAAGvM,OAAO,CAACzF,EAAE,CAAA;IAC5B,MAAM/C,OAAO,GAAGwI,OAAO,CAAClE,IAAI,CAACtE,OAAO,IAAI,QAAQ,CAAA;IAChD,MAAM4K,IAAI,GAAGpC,OAAO,CAAClE,IAAI,CAACsG,IAAI,IAAI,MAAM,CAAA;IACxC,MAAMwE,OAAO,GAAG,MAAM,IAAI7G,QAAQ,CAACvI,OAAO,EAAEwI,OAAO,EAAE;AAAE3E,MAAAA,SAAS,EAAE,IAAA;AAAI,KAAE,CAAC,CAAC5B,GAAG,CAAC8S,SAAS,EAAE;AAAE5Q,MAAAA,UAAU,EAAE,IAAI;AAAED,MAAAA,UAAU,EAAE,IAAA;AAAI,KAAE,CAAC,CAAA;IAEhI,MAAM8Q,OAAO,GAAGnN,oBAAS,CAACtC,eAAI,CAAC6J,OAAO,EAAExE,IAAI,CAAW,CAAC,CAAA;IACxD,MAAM;MAACvF,GAAG;MAAEgD,GAAG;MAAE4M,GAAG;MAAEC,GAAG;AAAEC,MAAAA,GAAAA;KAAI,GAAGH,OAAO,CAAC1T,OAAO,CAAA;AAEjD,IAAA,IAAI8G,YAAY,GAAG,CAAC,GAAGC,GAAG,CAAC,CAAA;AAC3B,IAAA,IAAGa,MAAM,IAAA,IAAA,IAANA,MAAM,CAAEhE,MAAM,EAAEkD,YAAY,GAAGgN,0BAAe,CAAClM,MAAM,EAAEb,GAAG,CAAC,CAAA;AAC9D,IAAA,IAAGsM,GAAG,IAAHA,IAAAA,IAAAA,GAAG,CAAEzP,MAAM,EAAEkD,YAAY,GAAGyM,yBAAc,CAAC,CAAC,GAAGxM,GAAG,EAAE,GAAGsM,GAAG,CAAC,CAAC,CAAA;AAG/D,IAAA,MAAMhO,GAAG,GAAG,MAAMuB,oBAAS,CAAC;MACxBH,MAAM,EAAEC,wBAAa,CAAC;AAACC,QAAAA,SAAS,EAAEH,MAAAA;OAAO,CAAC;AAC1CjC,MAAAA,QAAQ,EAAER,GAAG;AACb8C,MAAAA,iBAAiB,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;AACpCkN,MAAAA,MAAM,EAAEF,GAAG;MACX,GAAG3M,OAAO,CAAClE,IAAI;AACf8D,MAAAA,YAAAA;AACH,KAAA,CAAC,CAAA;AAEF,IAAA,MAAMkN,OAAO,GAAG1Q,oBAAS,CAAC+B,GAAG,CAAC,CAAA;AAC9B,IAAA,MAAM4O,OAAO,GAAG,MAAMzU,uBAAY,CAACwU,OAAO,CAAC,CAAA;IAC3C,IAAI,CAACC,OAAO,EAAE,MAAM,IAAIzW,KAAK,CAAC,sCAAsC,CAAC,CAAA;AACrE,IAAA,MAAM0W,OAAO,GAAG,MAAM,IAAIjN,QAAQ,CAACvI,OAAO,EAAEwI,OAAO,CAAC,CAACF,KAAK,CAACyM,SAAS,EAAE;AAAE,MAAA,CAACnK,IAAI,GAAG0K,OAAAA;AAAS,KAAA,CAAC,CAAA;IAC1F9M,OAAO,CAAClF,MAAM,GAAG;MAACqD,GAAG,EAAE6B,OAAO,CAAClE,IAAI;MAAEgR,OAAO;AAAElG,MAAAA,OAAO,EAAEoG,OAAAA;KAAQ,CAAA;AAC/D,IAAA,OAAOhN,OAAO,CAAA;GACjB,CAAA;AACL;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/lib/index.modern.js
CHANGED
|
@@ -975,6 +975,7 @@ const checkUcan = (requiredCapabilities, options) => {
|
|
|
975
975
|
/** function for comparing record login id with context login*/
|
|
976
976
|
const checkLogin = (recordLoginPassId, loginIdPath = '_id') => {
|
|
977
977
|
const loginCheckId = _get(context.params, `${configuration.entity}.${loginIdPath}`);
|
|
978
|
+
if (options != null && options.log) console.log('checkLoginPass', loginCheckId, recordLoginPassId);
|
|
978
979
|
/**Make sure both are present to avoid pass on undefined*/
|
|
979
980
|
if (loginCheckId && recordLoginPassId) {
|
|
980
981
|
/** change login path result to array no matter what */
|