{"version":3,"file":"index.cjs","sources":["../src/error.ts","../src/utils/has-property.ts","../src/utils/object.ts","../src/utils/object-path.ts","../src/utils/validator.ts","../src/getter/module.ts","../src/module.ts"],"sourcesContent":["/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport class OptionMissError extends Error {\n    constructor(key: string) {\n        super(`The key ${key} is not set.`);\n    }\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function hasOwnProperty<X extends Record<string, any>, Y extends PropertyKey>(obj: X, prop: Y): obj is X & Record<Y, unknown> {\n    return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport function isObject(item: unknown) : item is Record<string, any> {\n    return (\n        !!item &&\n        typeof item === 'object' &&\n        !Array.isArray(item)\n    );\n}\n","/*\n * Copyright (c) 2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ObjectLiteral } from '../type';\nimport { hasOwnProperty } from './has-property';\nimport { isObject } from './object';\n\nexport function setObjectPathProperty(\n    record: ObjectLiteral,\n    key: string,\n    value: unknown,\n) {\n    const index = key.indexOf('.');\n    const currentKey = index === -1 ?\n        key :\n        key.substring(0, index);\n\n    if (index === -1) {\n        record[currentKey] = value;\n        return;\n    }\n\n    if (!Object.prototype.hasOwnProperty.call(record, currentKey)) {\n        record[currentKey] = {};\n    }\n\n    const nextKey = key.substring(currentKey.length + 1);\n    setObjectPathProperty(record[currentKey], nextKey, value);\n}\n\nexport function hasObjectPathProperty(data: ObjectLiteral, key: string) : boolean {\n    const index = key.indexOf('.');\n    const currentKey = index === -1 ?\n        key :\n        key.substring(0, index);\n\n    if (index === -1) {\n        return !!hasOwnProperty(data, currentKey);\n    }\n\n    if (!isObject(data[currentKey])) {\n        return false;\n    }\n\n    const nextKey = key.substring(currentKey.length + 1);\n    return hasObjectPathProperty(data[currentKey], nextKey);\n}\n\nexport function removeObjectPathProperty(\n    data: Record<string, any>,\n    key: string,\n) {\n    const index = key.indexOf('.');\n    const currentKey = index === -1 ?\n        key :\n        key.substring(0, index);\n\n    if (index === -1) {\n        if (hasOwnProperty(data, currentKey)) {\n            delete data[currentKey];\n        }\n\n        return;\n    }\n\n    if (!isObject(data[currentKey])) {\n        return;\n    }\n\n    const nextKey = key.substring(currentKey.length + 1);\n    getObjectPathProperty(data[currentKey], nextKey);\n}\n\nexport function getObjectPathProperty(data: Record<string, any>, key: string) : any {\n    const index = key.indexOf('.');\n    const currentKey = index === -1 ?\n        key :\n        key.substring(0, index);\n\n    if (index === -1) {\n        return data[currentKey];\n    }\n\n    if (!isObject(data[currentKey])) {\n        return undefined;\n    }\n\n    const nextKey = key.substring(currentKey.length + 1);\n    return getObjectPathProperty(data[currentKey], nextKey);\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { hasOwnProperty } from './has-property';\nimport { isObject } from './object';\nimport type { ValidatorResult } from '../type';\n\nexport function isValidatorResult<V>(value: unknown) : value is ValidatorResult<V> {\n    return isObject(value) &&\n        hasOwnProperty(value, 'success') &&\n        typeof value.success === 'boolean' &&\n        (\n            hasOwnProperty(value, 'data') ||\n            hasOwnProperty(value, 'error')\n        );\n}\n","/*\n * Copyright (c) 2023-2023.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { ContinuBaseInterface } from '../type';\nimport { getObjectPathProperty, isObject } from '../utils';\n\ntype Output = { success: true, data: any } | { success: false};\nexport function evaluatePathForDynamicGetters(\n    data: Record<string, any>,\n    key: string,\n    context: ContinuBaseInterface,\n) : Output {\n    const dotIndex = key.indexOf('.');\n    const currentKey = dotIndex === -1 ?\n        key :\n        key.substring(0, dotIndex);\n\n    if (typeof data[currentKey] === 'function') {\n        const value = data[currentKey](context);\n\n        if (dotIndex === -1) {\n            return {\n                success: true,\n                data: value,\n            };\n        }\n\n        return {\n            success: true,\n            data: getObjectPathProperty(value, key.substring(currentKey.length + 1)),\n        };\n    }\n\n    if (isObject(data[currentKey])) {\n        const nextKey = key.substring(currentKey.length + 1);\n        if (nextKey.length > 0) {\n            return evaluatePathForDynamicGetters(data[currentKey], nextKey, context);\n        }\n    }\n\n    return { success: false };\n}\n","/*\n * Copyright (c) 2022-2022.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { OptionMissError } from './error';\nimport { evaluatePathForDynamicGetters } from './getter';\nimport type {\n    Context,\n    ContinuBaseInterface,\n    FlattenObject, Getters,\n    ObjectLiteral,\n    Transformer,\n    Transformers,\n    Validators,\n} from './type';\nimport {\n    getObjectPathProperty,\n    hasObjectPathProperty,\n    hasOwnProperty,\n    isValidatorResult,\n    removeObjectPathProperty,\n    setObjectPathProperty,\n} from './utils';\n\nexport class Continu<\n    O extends ObjectLiteral,\n    I extends { [K in keyof O]?: any } = { [K in keyof O]?: any },\n> implements ContinuBaseInterface<O> {\n    protected options : Partial<O>;\n\n    protected defaults: Partial<O>;\n\n    protected getters : Getters<O>;\n\n    protected transformers: Transformers<O>;\n\n    protected validators : Validators<O>;\n\n    protected errorOnMiss: boolean;\n\n    // -------------------------------------------------\n\n    constructor(context?: Context<O>) {\n        context = context || {};\n\n        this.options = context.options || {};\n        this.defaults = context.defaults || {};\n        this.getters = context.getters || {};\n        this.transformers = context.transformers || {};\n        this.validators = context.validators || {};\n\n        this.errorOnMiss = context.errorOnMiss ?? false;\n    }\n\n    // -------------------------------------------------\n\n    set(value: Partial<FlattenObject<O>>) : this;\n\n    set<K extends keyof FlattenObject<O>>(key: K, value: FlattenObject<O>[K]) : this;\n\n    set<K extends keyof FlattenObject<O>>(key: K | Partial<FlattenObject<O>>, value?: FlattenObject<O>[K]) : this {\n        if (typeof key === 'object') {\n            const keys = Object.keys(key) as (keyof FlattenObject<O>)[];\n            for (let i = 0; i < keys.length; i++) {\n                // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n                // @ts-ignore\n                this.set(keys[i], key[keys[i]]);\n            }\n\n            return this;\n        }\n\n        const validator = this.validators[key];\n        if (validator) {\n            try {\n                const output = validator(value);\n\n                if (isValidatorResult<O[K]>(output)) {\n                    if (output.success) {\n                        setObjectPathProperty(this.options, key as any, output.data);\n                    }\n                }\n\n                if (typeof output === 'boolean' && output) {\n                    setObjectPathProperty(this.options, key as any, value);\n                }\n            } catch (e) {\n                // do nothing\n            }\n\n            return this;\n        }\n\n        setObjectPathProperty(this.options, key as any, value);\n\n        return this;\n    }\n\n    setRaw(value: Partial<FlattenObject<I>>) : this;\n\n    setRaw<K extends keyof FlattenObject<I>>(key: K, value: FlattenObject<I>[K]) : this;\n\n    setRaw<K extends keyof FlattenObject<I>>(key: K | FlattenObject<I>, value?: FlattenObject<I>[K]) : this {\n        if (typeof key === 'object') {\n            const keys = Object.keys(key) as (keyof FlattenObject<I>)[];\n            for (let i = 0; i < keys.length; i++) {\n                this.setRaw(keys[i], key[keys[i]]);\n            }\n\n            return this;\n        }\n\n        if (hasOwnProperty(this.transformers, key)) {\n            this.set(key as any, (this.transformers[key] as Transformer<O[K]>)(value));\n\n            return this;\n        }\n\n        if (hasOwnProperty(this.validators, key)) {\n            this.set(key as any, value as unknown as O[K]);\n        }\n\n        return this;\n    }\n\n    has(key: keyof FlattenObject<O>) : boolean {\n        return hasObjectPathProperty(this.options, key as any);\n    }\n\n    // ----------------------------------------------\n\n    reset() : this;\n\n    reset(key: keyof FlattenObject<O>) : this;\n\n    reset(keys: (keyof FlattenObject<O>)[]) : this;\n\n    reset(key?: (keyof FlattenObject<O>) | (keyof FlattenObject<O>)[]) : this {\n        if (typeof key === 'undefined') {\n            this.options = {};\n            return this;\n        }\n\n        if (Array.isArray(key)) {\n            for (let i = 0; i < key.length; i++) {\n                this.reset(key[i]);\n            }\n\n            return this;\n        }\n\n        removeObjectPathProperty(this.options, key as any);\n\n        return this;\n    }\n\n    // ----------------------------------------------\n\n    get() : O;\n\n    get<K extends keyof FlattenObject<O>>(key: K) : FlattenObject<O>[K];\n\n    get<K extends keyof FlattenObject<O>>(key?: K) : any {\n        if (typeof key === 'undefined') {\n            const keys = [\n                ...new Set([\n                    ...Object.keys(this.defaults),\n                    ...Object.keys(this.options),\n                ]),\n            ] as (keyof FlattenObject<O>)[];\n\n            const options : Record<string, any> = {};\n\n            for (let i = 0; i < keys.length; i++) {\n                options[keys[i]] = this.get(keys[i]);\n            }\n\n            return options as O;\n        }\n\n        if (hasObjectPathProperty(this.options, key)) {\n            return getObjectPathProperty(this.options, key) as O[K];\n        }\n\n        const dynamicGetter = evaluatePathForDynamicGetters(this.getters, key, this);\n        if (dynamicGetter.success) {\n            return dynamicGetter.data;\n        }\n\n        if (hasObjectPathProperty(this.defaults, key)) {\n            return getObjectPathProperty(this.defaults, key) as O[K];\n        }\n\n        if (this.errorOnMiss) {\n            throw new OptionMissError(key as string);\n        }\n\n        return undefined;\n    }\n\n    // ----------------------------------------------\n\n    setDefault(value: Partial<FlattenObject<O>>) : this;\n\n    setDefault<K extends keyof FlattenObject<O>>(key: K, value: FlattenObject<O>[K]) : this;\n\n    setDefault<K extends keyof FlattenObject<O>>(key: (keyof O) | Partial<FlattenObject<O>>, value?: FlattenObject<O>[K]) : this {\n        if (typeof key === 'object') {\n            const keys = Object.keys(key) as (keyof FlattenObject<O>)[];\n            for (let i = 0; i < keys.length; i++) {\n                // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n                // @ts-ignore\n                this.setDefault(keys[i], key[keys[i]]);\n            }\n\n            return this;\n        }\n\n        setObjectPathProperty(this.defaults, key as any, value);\n\n        return this;\n    }\n\n    hasDefault(key: keyof FlattenObject<O>) : boolean {\n        return hasObjectPathProperty(this.defaults, key as any);\n    }\n\n    resetDefault() : this;\n\n    resetDefault(key: keyof FlattenObject<O>) : this;\n\n    resetDefault(keys: (keyof FlattenObject<O>)[]) : this;\n\n    resetDefault(key?: (keyof FlattenObject<O>) | (keyof FlattenObject<O>)[]) : this {\n        if (typeof key === 'undefined') {\n            this.defaults = {};\n            return this;\n        }\n\n        if (Array.isArray(key)) {\n            for (let i = 0; i < key.length; i++) {\n                this.resetDefault(key[i]);\n            }\n\n            return this;\n        }\n\n        removeObjectPathProperty(this.defaults, key as any);\n\n        return this;\n    }\n\n    getDefault() : O;\n\n    getDefault<K extends keyof FlattenObject<O>>(key?: K) : FlattenObject<O>[K];\n\n    getDefault<K extends keyof FlattenObject<O>>(key?: K) : any {\n        if (typeof key === 'undefined') {\n            return this.defaults;\n        }\n\n        return getObjectPathProperty(this.defaults, key as any);\n    }\n}\n"],"names":["OptionMissError","Error","constructor","key","hasOwnProperty","obj","prop","Object","prototype","call","isObject","item","Array","isArray","setObjectPathProperty","record","value","index","indexOf","currentKey","substring","nextKey","length","hasObjectPathProperty","data","removeObjectPathProperty","getObjectPathProperty","undefined","isValidatorResult","success","evaluatePathForDynamicGetters","context","dotIndex","Continu","set","keys","i","validator","validators","output","options","e","setRaw","transformers","has","reset","get","Set","defaults","dynamicGetter","getters","errorOnMiss","setDefault","hasDefault","resetDefault","getDefault"],"mappings":";;AAAA;;;;;IAOO,MAAMA,eAAwBC,SAAAA,KAAAA,CAAAA;AACjCC,IAAAA,WAAAA,CAAYC,GAAW,CAAE;AACrB,QAAA,KAAK,CAAC,CAAC,QAAQ,EAAEA,GAAAA,CAAI,YAAY,CAAC,CAAA,CAAA;AACtC,KAAA;AACJ;;ACXA;;;;;AAKC,IAEM,SAASC,cAAqEC,CAAAA,GAAM,EAAEC,IAAO,EAAA;AAChG,IAAA,OAAOC,OAAOC,SAAS,CAACJ,cAAc,CAACK,IAAI,CAACJ,GAAKC,EAAAA,IAAAA,CAAAA,CAAAA;AACrD;;ACTA;;;;;IAOO,SAASI,QAAAA,CAASC,IAAa,EAAA;IAClC,OACI,CAAC,CAACA,IACF,IAAA,OAAOA,SAAS,QAChB,IAAA,CAACC,KAAMC,CAAAA,OAAO,CAACF,IAAAA,CAAAA,CAAAA;AAEvB;;ACFO,SAASG,qBACZC,CAAAA,MAAqB,EACrBZ,GAAW,EACXa,KAAc,EAAA;IAEd,MAAMC,KAAAA,GAAQd,GAAIe,CAAAA,OAAO,CAAC,GAAA,CAAA,CAAA;IAC1B,MAAMC,UAAAA,GAAaF,UAAU,CAAC,CAAA,GAC1Bd,MACAA,GAAIiB,CAAAA,SAAS,CAAC,CAAGH,EAAAA,KAAAA,CAAAA,CAAAA;IAErB,IAAIA,KAAAA,KAAU,CAAC,CAAG,EAAA;QACdF,MAAM,CAACI,WAAW,GAAGH,KAAAA,CAAAA;AACrB,QAAA,OAAA;AACJ,KAAA;IAEA,IAAI,CAACT,OAAOC,SAAS,CAACJ,cAAc,CAACK,IAAI,CAACM,MAAAA,EAAQI,UAAa,CAAA,EAAA;QAC3DJ,MAAM,CAACI,UAAW,CAAA,GAAG,EAAC,CAAA;AAC1B,KAAA;AAEA,IAAA,MAAME,UAAUlB,GAAIiB,CAAAA,SAAS,CAACD,UAAAA,CAAWG,MAAM,GAAG,CAAA,CAAA,CAAA;AAClDR,IAAAA,qBAAAA,CAAsBC,MAAM,CAACI,UAAW,CAAA,EAAEE,OAASL,EAAAA,KAAAA,CAAAA,CAAAA;AACvD,CAAA;AAEO,SAASO,qBAAAA,CAAsBC,IAAmB,EAAErB,GAAW,EAAA;IAClE,MAAMc,KAAAA,GAAQd,GAAIe,CAAAA,OAAO,CAAC,GAAA,CAAA,CAAA;IAC1B,MAAMC,UAAAA,GAAaF,UAAU,CAAC,CAAA,GAC1Bd,MACAA,GAAIiB,CAAAA,SAAS,CAAC,CAAGH,EAAAA,KAAAA,CAAAA,CAAAA;IAErB,IAAIA,KAAAA,KAAU,CAAC,CAAG,EAAA;QACd,OAAO,CAAC,CAACb,cAAAA,CAAeoB,IAAML,EAAAA,UAAAA,CAAAA,CAAAA;AAClC,KAAA;AAEA,IAAA,IAAI,CAACT,QAAAA,CAASc,IAAI,CAACL,WAAW,CAAG,EAAA;QAC7B,OAAO,KAAA,CAAA;AACX,KAAA;AAEA,IAAA,MAAME,UAAUlB,GAAIiB,CAAAA,SAAS,CAACD,UAAAA,CAAWG,MAAM,GAAG,CAAA,CAAA,CAAA;AAClD,IAAA,OAAOC,qBAAsBC,CAAAA,IAAI,CAACL,UAAAA,CAAW,EAAEE,OAAAA,CAAAA,CAAAA;AACnD,CAAA;AAEO,SAASI,wBAAAA,CACZD,IAAyB,EACzBrB,GAAW,EAAA;IAEX,MAAMc,KAAAA,GAAQd,GAAIe,CAAAA,OAAO,CAAC,GAAA,CAAA,CAAA;IAC1B,MAAMC,UAAAA,GAAaF,UAAU,CAAC,CAAA,GAC1Bd,MACAA,GAAIiB,CAAAA,SAAS,CAAC,CAAGH,EAAAA,KAAAA,CAAAA,CAAAA;IAErB,IAAIA,KAAAA,KAAU,CAAC,CAAG,EAAA;QACd,IAAIb,cAAAA,CAAeoB,MAAML,UAAa,CAAA,EAAA;YAClC,OAAOK,IAAI,CAACL,UAAW,CAAA,CAAA;AAC3B,SAAA;AAEA,QAAA,OAAA;AACJ,KAAA;AAEA,IAAA,IAAI,CAACT,QAAAA,CAASc,IAAI,CAACL,WAAW,CAAG,EAAA;AAC7B,QAAA,OAAA;AACJ,KAAA;AAEA,IAAA,MAAME,UAAUlB,GAAIiB,CAAAA,SAAS,CAACD,UAAAA,CAAWG,MAAM,GAAG,CAAA,CAAA,CAAA;IAClDI,qBAAsBF,CAAAA,IAAI,CAACL,UAAAA,CAAW,EAAEE,OAAAA,CAAAA,CAAAA;AAC5C,CAAA;AAEO,SAASK,qBAAAA,CAAsBF,IAAyB,EAAErB,GAAW,EAAA;IACxE,MAAMc,KAAAA,GAAQd,GAAIe,CAAAA,OAAO,CAAC,GAAA,CAAA,CAAA;IAC1B,MAAMC,UAAAA,GAAaF,UAAU,CAAC,CAAA,GAC1Bd,MACAA,GAAIiB,CAAAA,SAAS,CAAC,CAAGH,EAAAA,KAAAA,CAAAA,CAAAA;IAErB,IAAIA,KAAAA,KAAU,CAAC,CAAG,EAAA;QACd,OAAOO,IAAI,CAACL,UAAW,CAAA,CAAA;AAC3B,KAAA;AAEA,IAAA,IAAI,CAACT,QAAAA,CAASc,IAAI,CAACL,WAAW,CAAG,EAAA;QAC7B,OAAOQ,SAAAA,CAAAA;AACX,KAAA;AAEA,IAAA,MAAMN,UAAUlB,GAAIiB,CAAAA,SAAS,CAACD,UAAAA,CAAWG,MAAM,GAAG,CAAA,CAAA,CAAA;AAClD,IAAA,OAAOI,qBAAsBF,CAAAA,IAAI,CAACL,UAAAA,CAAW,EAAEE,OAAAA,CAAAA,CAAAA;AACnD;;AClFO,SAASO,kBAAqBZ,KAAc,EAAA;AAC/C,IAAA,OAAON,SAASM,KACZZ,CAAAA,IAAAA,cAAAA,CAAeY,KAAO,EAAA,SAAA,CAAA,IACtB,OAAOA,KAAMa,CAAAA,OAAO,KAAK,SAAA,KAErBzB,cAAeY,CAAAA,KAAAA,EAAO,MACtBZ,CAAAA,IAAAA,cAAAA,CAAeY,OAAO,OAAO,CAAA,CAAA,CAAA;AAEzC;;ACRO,SAASc,6BACZN,CAAAA,IAAyB,EACzBrB,GAAW,EACX4B,OAA6B,EAAA;IAE7B,MAAMC,QAAAA,GAAW7B,GAAIe,CAAAA,OAAO,CAAC,GAAA,CAAA,CAAA;IAC7B,MAAMC,UAAAA,GAAaa,aAAa,CAAC,CAAA,GAC7B7B,MACAA,GAAIiB,CAAAA,SAAS,CAAC,CAAGY,EAAAA,QAAAA,CAAAA,CAAAA;AAErB,IAAA,IAAI,OAAOR,IAAI,CAACL,UAAAA,CAAW,KAAK,UAAY,EAAA;AACxC,QAAA,MAAMH,KAAQQ,GAAAA,IAAI,CAACL,UAAAA,CAAW,CAACY,OAAAA,CAAAA,CAAAA;QAE/B,IAAIC,QAAAA,KAAa,CAAC,CAAG,EAAA;YACjB,OAAO;gBACHH,OAAS,EAAA,IAAA;gBACTL,IAAMR,EAAAA,KAAAA;AACV,aAAA,CAAA;AACJ,SAAA;QAEA,OAAO;YACHa,OAAS,EAAA,IAAA;AACTL,YAAAA,IAAAA,EAAME,sBAAsBV,KAAOb,EAAAA,GAAAA,CAAIiB,SAAS,CAACD,UAAAA,CAAWG,MAAM,GAAG,CAAA,CAAA,CAAA;AACzE,SAAA,CAAA;AACJ,KAAA;AAEA,IAAA,IAAIZ,QAASc,CAAAA,IAAI,CAACL,UAAAA,CAAW,CAAG,EAAA;AAC5B,QAAA,MAAME,UAAUlB,GAAIiB,CAAAA,SAAS,CAACD,UAAAA,CAAWG,MAAM,GAAG,CAAA,CAAA,CAAA;QAClD,IAAID,OAAAA,CAAQC,MAAM,GAAG,CAAG,EAAA;AACpB,YAAA,OAAOQ,6BAA8BN,CAAAA,IAAI,CAACL,UAAAA,CAAW,EAAEE,OAASU,EAAAA,OAAAA,CAAAA,CAAAA;AACpE,SAAA;AACJ,KAAA;IAEA,OAAO;QAAEF,OAAS,EAAA,KAAA;AAAM,KAAA,CAAA;AAC5B;;AClBO,MAAMI,OAAAA,CAAAA;IAoCTC,GAAsC/B,CAAAA,GAAkC,EAAEa,KAA2B,EAAS;QAC1G,IAAI,OAAOb,QAAQ,QAAU,EAAA;YACzB,MAAMgC,IAAAA,GAAO5B,MAAO4B,CAAAA,IAAI,CAAChC,GAAAA,CAAAA,CAAAA;AACzB,YAAA,IAAK,IAAIiC,CAAI,GAAA,CAAA,EAAGA,IAAID,IAAKb,CAAAA,MAAM,EAAEc,CAAK,EAAA,CAAA;;;AAGlC,gBAAA,IAAI,CAACF,GAAG,CAACC,IAAI,CAACC,CAAAA,CAAE,EAAEjC,GAAG,CAACgC,IAAI,CAACC,CAAAA,CAAE,CAAC,CAAA,CAAA;AAClC,aAAA;AAEA,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;AAEA,QAAA,MAAMC,SAAY,GAAA,IAAI,CAACC,UAAU,CAACnC,GAAI,CAAA,CAAA;AACtC,QAAA,IAAIkC,SAAW,EAAA;YACX,IAAI;AACA,gBAAA,MAAME,SAASF,SAAUrB,CAAAA,KAAAA,CAAAA,CAAAA;AAEzB,gBAAA,IAAIY,kBAAwBW,MAAS,CAAA,EAAA;oBACjC,IAAIA,MAAAA,CAAOV,OAAO,EAAE;AAChBf,wBAAAA,qBAAAA,CAAsB,IAAI,CAAC0B,OAAO,EAAErC,GAAAA,EAAYoC,OAAOf,IAAI,CAAA,CAAA;AAC/D,qBAAA;AACJ,iBAAA;gBAEA,IAAI,OAAOe,MAAW,KAAA,SAAA,IAAaA,MAAQ,EAAA;AACvCzB,oBAAAA,qBAAAA,CAAsB,IAAI,CAAC0B,OAAO,EAAErC,GAAYa,EAAAA,KAAAA,CAAAA,CAAAA;AACpD,iBAAA;AACJ,aAAA,CAAE,OAAOyB,CAAG,EAAA;;AAEZ,aAAA;AAEA,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;AAEA3B,QAAAA,qBAAAA,CAAsB,IAAI,CAAC0B,OAAO,EAAErC,GAAYa,EAAAA,KAAAA,CAAAA,CAAAA;AAEhD,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;IAMA0B,MAAyCvC,CAAAA,GAAyB,EAAEa,KAA2B,EAAS;QACpG,IAAI,OAAOb,QAAQ,QAAU,EAAA;YACzB,MAAMgC,IAAAA,GAAO5B,MAAO4B,CAAAA,IAAI,CAAChC,GAAAA,CAAAA,CAAAA;AACzB,YAAA,IAAK,IAAIiC,CAAI,GAAA,CAAA,EAAGA,IAAID,IAAKb,CAAAA,MAAM,EAAEc,CAAK,EAAA,CAAA;AAClC,gBAAA,IAAI,CAACM,MAAM,CAACP,IAAI,CAACC,CAAAA,CAAE,EAAEjC,GAAG,CAACgC,IAAI,CAACC,CAAAA,CAAE,CAAC,CAAA,CAAA;AACrC,aAAA;AAEA,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;AAEA,QAAA,IAAIhC,cAAe,CAAA,IAAI,CAACuC,YAAY,EAAExC,GAAM,CAAA,EAAA;YACxC,IAAI,CAAC+B,GAAG,CAAC/B,GAAY,EAAC,IAAI,CAACwC,YAAY,CAACxC,GAAAA,CAAI,CAAuBa,KAAAA,CAAAA,CAAAA,CAAAA;AAEnE,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;AAEA,QAAA,IAAIZ,cAAe,CAAA,IAAI,CAACkC,UAAU,EAAEnC,GAAM,CAAA,EAAA;YACtC,IAAI,CAAC+B,GAAG,CAAC/B,GAAYa,EAAAA,KAAAA,CAAAA,CAAAA;AACzB,SAAA;AAEA,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEA4B,IAAAA,GAAAA,CAAIzC,GAA2B,EAAY;AACvC,QAAA,OAAOoB,qBAAsB,CAAA,IAAI,CAACiB,OAAO,EAAErC,GAAAA,CAAAA,CAAAA;AAC/C,KAAA;AAUA0C,IAAAA,KAAAA,CAAM1C,GAA2D,EAAS;QACtE,IAAI,OAAOA,QAAQ,WAAa,EAAA;YAC5B,IAAI,CAACqC,OAAO,GAAG,EAAC,CAAA;AAChB,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;QAEA,IAAI5B,KAAAA,CAAMC,OAAO,CAACV,GAAM,CAAA,EAAA;AACpB,YAAA,IAAK,IAAIiC,CAAI,GAAA,CAAA,EAAGA,IAAIjC,GAAImB,CAAAA,MAAM,EAAEc,CAAK,EAAA,CAAA;AACjC,gBAAA,IAAI,CAACS,KAAK,CAAC1C,GAAG,CAACiC,CAAE,CAAA,CAAA,CAAA;AACrB,aAAA;AAEA,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;QAEAX,wBAAyB,CAAA,IAAI,CAACe,OAAO,EAAErC,GAAAA,CAAAA,CAAAA;AAEvC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAQA2C,IAAAA,GAAAA,CAAsC3C,GAAO,EAAQ;QACjD,IAAI,OAAOA,QAAQ,WAAa,EAAA;AAC5B,YAAA,MAAMgC,IAAO,GAAA;AACN,gBAAA,GAAA,IAAIY,GAAI,CAAA;AACJxC,oBAAAA,GAAAA,MAAAA,CAAO4B,IAAI,CAAC,IAAI,CAACa,QAAQ,CAAA;AACzBzC,oBAAAA,GAAAA,MAAAA,CAAO4B,IAAI,CAAC,IAAI,CAACK,OAAO,CAAA;AAC9B,iBAAA,CAAA;AACJ,aAAA,CAAA;AAED,YAAA,MAAMA,UAAgC,EAAC,CAAA;AAEvC,YAAA,IAAK,IAAIJ,CAAI,GAAA,CAAA,EAAGA,IAAID,IAAKb,CAAAA,MAAM,EAAEc,CAAK,EAAA,CAAA;AAClCI,gBAAAA,OAAO,CAACL,IAAI,CAACC,CAAAA,CAAE,CAAC,GAAG,IAAI,CAACU,GAAG,CAACX,IAAI,CAACC,CAAE,CAAA,CAAA,CAAA;AACvC,aAAA;YAEA,OAAOI,OAAAA,CAAAA;AACX,SAAA;AAEA,QAAA,IAAIjB,qBAAsB,CAAA,IAAI,CAACiB,OAAO,EAAErC,GAAM,CAAA,EAAA;AAC1C,YAAA,OAAOuB,qBAAsB,CAAA,IAAI,CAACc,OAAO,EAAErC,GAAAA,CAAAA,CAAAA;AAC/C,SAAA;AAEA,QAAA,MAAM8C,gBAAgBnB,6BAA8B,CAAA,IAAI,CAACoB,OAAO,EAAE/C,KAAK,IAAI,CAAA,CAAA;QAC3E,IAAI8C,aAAAA,CAAcpB,OAAO,EAAE;AACvB,YAAA,OAAOoB,cAAczB,IAAI,CAAA;AAC7B,SAAA;AAEA,QAAA,IAAID,qBAAsB,CAAA,IAAI,CAACyB,QAAQ,EAAE7C,GAAM,CAAA,EAAA;AAC3C,YAAA,OAAOuB,qBAAsB,CAAA,IAAI,CAACsB,QAAQ,EAAE7C,GAAAA,CAAAA,CAAAA;AAChD,SAAA;QAEA,IAAI,IAAI,CAACgD,WAAW,EAAE;AAClB,YAAA,MAAM,IAAInD,eAAgBG,CAAAA,GAAAA,CAAAA,CAAAA;AAC9B,SAAA;QAEA,OAAOwB,SAAAA,CAAAA;AACX,KAAA;IAQAyB,UAA6CjD,CAAAA,GAA0C,EAAEa,KAA2B,EAAS;QACzH,IAAI,OAAOb,QAAQ,QAAU,EAAA;YACzB,MAAMgC,IAAAA,GAAO5B,MAAO4B,CAAAA,IAAI,CAAChC,GAAAA,CAAAA,CAAAA;AACzB,YAAA,IAAK,IAAIiC,CAAI,GAAA,CAAA,EAAGA,IAAID,IAAKb,CAAAA,MAAM,EAAEc,CAAK,EAAA,CAAA;;;AAGlC,gBAAA,IAAI,CAACgB,UAAU,CAACjB,IAAI,CAACC,CAAAA,CAAE,EAAEjC,GAAG,CAACgC,IAAI,CAACC,CAAAA,CAAE,CAAC,CAAA,CAAA;AACzC,aAAA;AAEA,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;AAEAtB,QAAAA,qBAAAA,CAAsB,IAAI,CAACkC,QAAQ,EAAE7C,GAAYa,EAAAA,KAAAA,CAAAA,CAAAA;AAEjD,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAEAqC,IAAAA,UAAAA,CAAWlD,GAA2B,EAAY;AAC9C,QAAA,OAAOoB,qBAAsB,CAAA,IAAI,CAACyB,QAAQ,EAAE7C,GAAAA,CAAAA,CAAAA;AAChD,KAAA;AAQAmD,IAAAA,YAAAA,CAAanD,GAA2D,EAAS;QAC7E,IAAI,OAAOA,QAAQ,WAAa,EAAA;YAC5B,IAAI,CAAC6C,QAAQ,GAAG,EAAC,CAAA;AACjB,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;QAEA,IAAIpC,KAAAA,CAAMC,OAAO,CAACV,GAAM,CAAA,EAAA;AACpB,YAAA,IAAK,IAAIiC,CAAI,GAAA,CAAA,EAAGA,IAAIjC,GAAImB,CAAAA,MAAM,EAAEc,CAAK,EAAA,CAAA;AACjC,gBAAA,IAAI,CAACkB,YAAY,CAACnD,GAAG,CAACiC,CAAE,CAAA,CAAA,CAAA;AAC5B,aAAA;AAEA,YAAA,OAAO,IAAI,CAAA;AACf,SAAA;QAEAX,wBAAyB,CAAA,IAAI,CAACuB,QAAQ,EAAE7C,GAAAA,CAAAA,CAAAA;AAExC,QAAA,OAAO,IAAI,CAAA;AACf,KAAA;AAMAoD,IAAAA,UAAAA,CAA6CpD,GAAO,EAAQ;QACxD,IAAI,OAAOA,QAAQ,WAAa,EAAA;YAC5B,OAAO,IAAI,CAAC6C,QAAQ,CAAA;AACxB,SAAA;AAEA,QAAA,OAAOtB,qBAAsB,CAAA,IAAI,CAACsB,QAAQ,EAAE7C,GAAAA,CAAAA,CAAAA;AAChD,KAAA;;AA5NAD,IAAAA,WAAAA,CAAY6B,OAAoB,CAAE;AAC9BA,QAAAA,OAAAA,GAAUA,WAAW,EAAC,CAAA;AAEtB,QAAA,IAAI,CAACS,OAAO,GAAGT,OAAQS,CAAAA,OAAO,IAAI,EAAC,CAAA;AACnC,QAAA,IAAI,CAACQ,QAAQ,GAAGjB,OAAQiB,CAAAA,QAAQ,IAAI,EAAC,CAAA;AACrC,QAAA,IAAI,CAACE,OAAO,GAAGnB,OAAQmB,CAAAA,OAAO,IAAI,EAAC,CAAA;AACnC,QAAA,IAAI,CAACP,YAAY,GAAGZ,OAAQY,CAAAA,YAAY,IAAI,EAAC,CAAA;AAC7C,QAAA,IAAI,CAACL,UAAU,GAAGP,OAAQO,CAAAA,UAAU,IAAI,EAAC,CAAA;AAEzC,QAAA,IAAI,CAACa,WAAW,GAAGpB,OAAAA,CAAQoB,WAAW,IAAI,KAAA,CAAA;AAC9C,KAAA;AAmNJ;;;;;;;;;;;;"}