{"version":3,"file":"base-ex.cjs","sources":["../src/io-handlers.js","../src/utils.js","../src/core.js","../src/converters/base-1.js","../src/converters/base-16.js","../src/converters/base-32.js","../src/converters/base-58.js","../src/converters/base-64.js","../src/converters/uuencode.js","../src/converters/base-85.js","../src/converters/base-91.js","../src/converters/leb-128.js","../src/converters/ecoji.js","../src/converters/base-2048.js","../src/converters/simple-base.js","../lib/big.js/big.min.js","../src/converters/base-phi.js","../src/converters/byte-converter.js","../src/base-ex.js"],"sourcesContent":["/**\n * Simple Input Handler.\n * --------------------\n * Accepts only bytes eg. TypedArray, ArrayBuffer,\n * DataView, also a regular array (filled with integers)\n * is possible.\n */\nclass BytesInput {\n    static toBytes(input) {\n        if (ArrayBuffer.isView(input) && !(typeof Buffer !== \"undefined\" && input instanceof Buffer)) {\n            input = input.buffer;\n        }\n        \n        return [new Uint8Array(input), false, \"bytes\"];\n    }\n}\n\n/**\n * Simple Output Handler.\n * ---------------------\n * Returns bytes in the form of:\n *  - ArrayBuffer\n *  - Uint8Array\n *  - DataView \n */\nclass BytesOutput {\n\n    static get typeList() {\n        return [\n            \"buffer\",\n            \"bytes\",\n            \"uint8\",\n            \"view\"\n        ];\n    }\n\n    static getType(type) {\n        if (!BytesOutput.typeList.includes(type)) {\n            throw new TypeError(`Unknown output type: '${type}'`);\n        }\n        return type;\n    }\n\n    static compile(Uint8ArrayOut, type) {\n        type = BytesOutput.getType(type);\n        let compiled;\n\n        if (type === \"buffer\") {\n            compiled = Uint8ArrayOut.buffer;\n        } \n\n        else if (type === \"view\") {\n            compiled = new DataView(Uint8ArrayOut.buffer);\n        }\n\n        else {\n            compiled = Uint8ArrayOut;\n        }\n    \n        return compiled;\n    }\n}\n\n\n/**\n * Advanced Input Handler.\n * ----------------------\n * Accepts almost every Input and converts it\n * into an Uint8Array (bytes).\n */\nclass SmartInput {\n\n    static makeDataView(byteLen) {\n        const buffer = new ArrayBuffer(byteLen);\n        return new DataView(buffer);\n    }\n\n    static floatingPoints(input, littleEndian=false) {\n        const view = this.makeDataView(8);\n        view.setFloat64(0, input, littleEndian);\n        return view;\n    }\n\n    static numbers(input, littleEndian=false) {\n\n        let view;\n        let type;\n\n        // Integer\n        if (Number.isInteger(input)) {\n\n            type = \"int\";\n\n            if (!Number.isSafeInteger(input)) {\n                \n                let safeInt;\n                let smallerOrBigger;\n                let minMax;\n\n                if (input < 0) {\n                    safeInt = Number.MIN_SAFE_INTEGER;\n                    smallerOrBigger = \"smaller\";\n                    minMax = \"MIN\";\n                } else {\n                    safeInt = Number.MAX_SAFE_INTEGER;\n                    smallerOrBigger = \"bigger\";\n                    minMax = \"MAX\";\n                }\n\n                throw new RangeError(`The provided integer is ${smallerOrBigger} than ${minMax}_SAFE_INTEGER: '${safeInt}'\\nData integrity is not guaranteed. Use a BigInt to avoid this issue.\\n(If you see this error although a float was provided, the input has to many digits before the decimal point to store the decimal places in a float with 64 bits.)`);\n            }\n\n            // Signed Integer\n            if (input < 0) {\n                \n                // 64 bit\n                if (input < -2147483648) {\n                    view = this.makeDataView(8);\n                    view.setBigInt64(0, BigInt(input), littleEndian);\n                }\n                \n                // 32 littleEndian\n                else if (input < -32768) {\n                    view = this.makeDataView(4);\n                    view.setInt32(0, input, littleEndian);\n                }\n\n                // 16 littleEndian\n                else {\n                    view = this.makeDataView(2);\n                    view.setInt16(0, input, littleEndian);\n                }\n            }\n\n            // Unsigned Integer\n            else if (input > 0) {\n\n                // 64 bit\n                if (input > 4294967295) {\n                    view = this.makeDataView(8);\n                    view.setBigUint64(0, BigInt(input), littleEndian);\n                }\n                \n                // 32 bit\n                else if (input > 65535) {\n                    view = this.makeDataView(4);\n                    view.setUint32(0, input, littleEndian);\n                }\n                \n                // 16 bit\n                else {\n                    view = this.makeDataView(2);\n                    view.setInt16(0, input, littleEndian);\n                }\n            }\n\n            // Zero\n            else {\n                view = new Uint16Array([0]);\n            }\n        }\n        \n        // Floating Point Number:\n        else {\n            type = \"float\";\n            view = this.floatingPoints(input, littleEndian);\n        }\n\n        return [new Uint8Array(view.buffer), type];\n\n    }\n\n\n    static bigInts(input, littleEndian=false) {\n        // Since BigInts are not limited to 64 bits, they might\n        // overflow the BigInt64Array values. A little more \n        // handwork is therefore needed.\n\n        // as the integer size is not known yet, the bytes get a\n        // makeshift home \"byteArray\", which is a regular array\n\n        const byteArray = new Array();\n        const append = (littleEndian) ? \"push\" : \"unshift\";\n        const maxN = 18446744073709551616n;\n\n        // split the input into 64 bit integers\n        if (input < 0) {\n            while (input < -9223372036854775808n) {\n                byteArray[append](input % maxN);\n                input >>= 64n;\n            }\n        } else { \n            while (input >= maxN) {\n                byteArray[append](input % maxN);\n                input >>= 64n;\n            }\n        }\n\n        // append the remaining byte\n        byteArray[append](input);\n\n        // determine the required size for the typed array\n        // by taking the amount of 64 bit integers * 8\n        // (8 bytes for each 64 bit integer)\n        const byteLen = byteArray.length * 8;\n        \n        // create a fresh data view\n        const view = this.makeDataView(byteLen);\n\n        // set all 64 bit integers \n        byteArray.forEach((bigInt, i) => {\n            const offset = i * 8;\n            view.setBigUint64(offset, bigInt, littleEndian);\n        });\n\n        return new Uint8Array(view.buffer);\n    }\n\n\n    static toBytes(input, settings) {\n\n        let inputUint8;\n        let negative = false;\n        let type = \"bytes\";\n        \n        // ArrayBuffer:\n        if (input instanceof ArrayBuffer) {\n            inputUint8 = new Uint8Array(input.slice());\n        }\n\n        // TypedArray/DataView or node Buffer:\n        else if (ArrayBuffer.isView(input)) {\n            if (typeof Buffer !== \"undefined\" && input instanceof Buffer) {\n                inputUint8 = new Uint8Array(input);\n            } else {\n                inputUint8 = new Uint8Array(input.buffer.slice());\n            }\n        }\n        \n        // String:\n        else if (typeof input === \"string\" || input instanceof String) {\n            inputUint8 = new TextEncoder().encode(input);\n        }\n        \n        // Number:\n        else if (typeof input === \"number\") {\n            if (isNaN(input)) {\n                throw new TypeError(\"Cannot proceed. Input is NaN.\");\n            } else if (input == Infinity) {\n                throw new TypeError(\"Cannot proceed. Input is Infinity.\");\n            }\n\n            if (settings.signed && input < 0) {\n                negative = true;\n                input = -input;\n            }\n\n            if (settings.numberMode) {\n                const view = this.floatingPoints(input, settings.littleEndian);\n                inputUint8 = new Uint8Array(view.buffer);\n                type = \"float\";\n            } else {\n                [inputUint8, type] = this.numbers(input, settings.littleEndian);\n            }\n        }\n\n        // BigInt:\n        else if (typeof input === \"bigint\") {\n            if (settings.signed && input < 0) {\n                negative = true;\n                input *= -1n;\n            }\n            inputUint8 = this.bigInts(input, settings.littleEndian);\n            type = \"int\";\n        }\n\n        // Array\n        else if (Array.isArray(input)) {\n            const collection = new Array();\n            for (const elem of input) {\n                collection.push(...this.toBytes(elem, settings)[0]);\n            }\n            inputUint8 = Uint8Array.from(collection);\n        }\n\n        else {\n            throw new TypeError(\"The provided input type can not be processed.\");\n        }\n\n        return [inputUint8, negative, type];\n    }\n}\n\n/** \n * Advanced Output Handler.\n * ----------------------- \n * This Output handler makes it possible to\n * convert an Uint8Array (bytes) into a desired\n * format of a big variety.\n * \n * The default output is an ArrayBuffer.\n */\nclass SmartOutput {\n\n    static get typeList() {\n        return [\n            \"bigint64\",\n            \"bigint_n\",\n            \"biguint64\",\n            \"buffer\",\n            \"bytes\",\n            \"float32\",\n            \"float64\",\n            \"float_n\",\n            \"int8\",\n            \"int16\",\n            \"int32\",\n            \"int_n\",\n            \"str\",\n            \"uint8\",\n            \"uint16\",\n            \"uint32\",\n            \"uint_n\",\n            \"view\"\n        ];\n    }\n\n    static getType(type) {\n        if (!this.typeList.includes(type)) {\n            throw new TypeError(`Unknown output type: '${type}'`);\n        }\n        return type;\n    }\n\n    static makeTypedArrayBuffer(Uint8ArrayOut, bytesPerElem, littleEndian, negative) {\n        \n        const len = Uint8ArrayOut.byteLength;\n        const delta = (bytesPerElem - (Uint8ArrayOut.byteLength % bytesPerElem)) % bytesPerElem;\n        const newLen = len + delta;\n        \n        // if the array is negative and the len is gt 1\n        // fill the whole array with 255\n        const fillVal = (negative && len > 1) ? 255 : 0;\n\n        let newArray = Uint8ArrayOut;\n\n        if (delta) {\n            newArray = new Uint8Array(newLen);\n            newArray.fill(fillVal);\n            \n            const offset = (littleEndian) ? 0 : delta;\n            newArray.set(Uint8ArrayOut, offset)\n        }\n\n\n        return newArray.buffer;\n    }\n\n    static makeTypedArray(inArray, type, littleEndian, negative) {\n        let outArray;\n\n        if (type === \"int16\" || type === \"uint16\") {\n\n            const buffer = this.makeTypedArrayBuffer(inArray, 2, littleEndian, negative);\n            outArray = (type === \"int16\") ? new Int16Array(buffer) : new Uint16Array(buffer);\n\n        } else if (type === \"int32\" || type === \"uint32\" || type === \"float32\") {\n\n            const buffer = this.makeTypedArrayBuffer(inArray, 4, littleEndian, negative);\n            \n            if (type === \"int32\") {\n                outArray = new Int32Array(buffer);\n            } else if (type === \"uint32\") {\n                outArray = new Uint32Array(buffer);\n            } else {\n                outArray = new Float32Array(buffer);\n            }\n\n        } else if (type === \"bigint64\" || type === \"biguint64\" || type === \"float64\") {\n            \n            const buffer = this.makeTypedArrayBuffer(inArray, 8, littleEndian, negative);\n            \n            if (type === \"bigint64\") {\n                outArray = new BigInt64Array(buffer);\n            } else if (type === \"biguint64\") {\n                outArray = new BigUint64Array(buffer);\n            } else {\n                outArray = new Float64Array(buffer);\n            }\n        }\n\n        return outArray;\n    }\n\n    static compile(Uint8ArrayOut, type, littleEndian=false, negative=false) {\n        type = this.getType(type);\n        let compiled;\n\n        // If the array is negative (which is only\n        // true for signed encoding) get the positive\n        // decimal number first and feed it with a \n        // negative sign to SmartInput to construct\n        // the unsigned output which is not shortened.\n\n        if (negative) {\n            let n;\n            if (type.match(/^float/)) {\n                n = -(this.compile(Uint8ArrayOut, \"float_n\", littleEndian));\n            } else {\n                n = -(this.compile(Uint8ArrayOut, \"uint_n\", littleEndian));\n            }\n            if (type === \"float_n\") {\n                return n;\n            }\n            Uint8ArrayOut = SmartInput.toBytes(n, {littleEndian, numberMode: false, signed: false})[0];\n        }\n\n        if (type === \"buffer\") {\n            compiled = Uint8ArrayOut.buffer;\n        } \n        \n        else if (type === \"bytes\" || type === \"uint8\") {\n            compiled = Uint8ArrayOut;\n        }\n        \n        else if (type === \"int8\") {\n            compiled = new Int8Array(Uint8ArrayOut.buffer);\n        } \n        \n        else if (type === \"view\") {\n            compiled = new DataView(Uint8ArrayOut.buffer);\n        }\n        \n        else if (type === \"str\") {\n           compiled = new TextDecoder().decode(Uint8ArrayOut);\n        }\n        \n        else if (type === \"uint_n\" || type === \"int_n\" || type === \"bigint_n\") {\n\n            // If the input consists of only one byte, expand it\n            if (Uint8ArrayOut.length === 1) {\n                const uint16Buffer = this.makeTypedArrayBuffer(Uint8ArrayOut, 2, littleEndian, negative);\n                Uint8ArrayOut = new Uint8Array(uint16Buffer);\n            }\n            \n            if (littleEndian) {\n                Uint8ArrayOut.reverse();\n            }\n\n            // calculate a unsigned big integer\n            let n = 0n;\n            Uint8ArrayOut.forEach((b) => n = (n << 8n) + BigInt(b));\n\n            // convert to signed int if requested \n            if (type !== \"uint_n\") {\n                n = BigInt.asIntN(Uint8ArrayOut.length*8, n);\n            }\n            \n            // convert to regular number if possible (and no bigint was requested)\n            if (type !== \"bigint_n\" && n >= Number.MIN_SAFE_INTEGER && n <= Number.MAX_SAFE_INTEGER) {                \n                compiled = Number(n);\n            } else {\n                compiled = n;\n            }\n        } \n        \n        else if (type === \"float_n\") {\n\n            if (Uint8ArrayOut.length <= 4) {\n                \n                let array;\n                if (Uint8ArrayOut.length === 4) {\n                    array = Uint8ArrayOut;\n                } else {\n                    array = this.makeTypedArray(Uint8ArrayOut, \"float32\", false, negative);\n                }\n\n                const view = new DataView(array.buffer);\n                compiled = view.getFloat32(0, littleEndian);\n            \n            }\n            \n            else if (Uint8ArrayOut.length <= 8) {\n                \n                let array;\n                if (Uint8ArrayOut.length === 8) {\n                    array = Uint8ArrayOut;\n                } else {\n                    array = this.makeTypedArray(Uint8ArrayOut, \"float64\", false, negative);\n                }\n\n                const view = new DataView(array.buffer);\n                compiled = view.getFloat64(0, littleEndian);\n            \n            }\n\n            else {\n                throw new RangeError(\"The provided input is to complex to be converted into a floating point.\")\n            }\n        }\n\n        else if (type === \"number\") {\n            if (Uint8ArrayOut.length !== 8) {\n                throw new TypeError(\"Type mismatch. Cannot convert into number.\");\n            }\n\n            const float64 = new Float64Array(Uint8ArrayOut.buffer);\n            compiled = Number(float64);\n        }\n\n        else {\n            compiled = this.makeTypedArray(Uint8ArrayOut, type, littleEndian, negative);\n        } \n\n        return compiled;\n    }\n}\n\nexport { BytesInput, BytesOutput, SmartInput, SmartOutput };\n","import { BytesInput, BytesOutput, SmartInput, SmartOutput } from \"./io-handlers.js\";\n\nconst DEFAULT_INPUT_HANDLER = SmartInput;\nconst DEFAULT_OUTPUT_HANDLER = SmartOutput;\n\nclass SignError extends TypeError {\n    constructor() {\n        super(\"The input is signed but the converter is not set to treat input as signed.\\nYou can pass the string 'signed' to the decode function or when constructing the converter.\");\n        this.name = \"SignError\";\n    }\n}\n\nclass DecodingError extends TypeError {\n    constructor(char, msg=null) {\n        if (msg === null) {\n            msg = `Character '${char}' is not part of the charset.`;\n        }\n        super(msg);\n        this.name = \"DecodingError\";\n    }\n}\n\n\n/**\n * Utilities for every BaseEx class.\n * --------------------------------\n * Requires IO Handlers\n */\nclass Utils {\n\n    constructor(main) {\n\n        // Store the calling class in this.root\n        // for accessability.\n        this.root = main;\n        \n        // set specific args object for converters\n        this.converterArgs = {};\n\n        // If charsets are uses by the parent class,\n        // add extra functions for the user.\n\n        this.#charsetUserToolsConstructor();\n    }\n\n    setIOHandlers(inputHandler=DEFAULT_INPUT_HANDLER, outputHandler=DEFAULT_OUTPUT_HANDLER) {\n        this.inputHandler = inputHandler;\n        this.outputHandler = outputHandler;\n    }\n\n\n    /**\n     * Constructor for the ability to add a charset and \n     * change the default version.\n     */\n    #charsetUserToolsConstructor() {\n\n        /**\n         * Save method to add a charset.\n         * @param {string} name - \"Charset name.\"\n         * @param {[string|set|array]} - \"Charset\"\n         */\n        this.root.addCharset = (name, _charset, _padChars=[], info=true) => {\n\n            const normalize = (typeName, set, setLen) => {\n\n                if (setLen === 0 && set.length) {\n                    console.warn(`This converter has no ${typeName}. The following argument was ignored:\\n'${set}'`);\n                    return [];\n                }\n\n                let inputLen = setLen;\n\n                if (typeof set === \"string\") {\n                    set = [...set];\n                }\n                \n                if (Array.isArray(set)) {\n                    \n                    // Store the input length of the input\n                    inputLen = set.length;\n                    \n                    // Convert to \"Set\" -> eliminate duplicates\n                    // If duplicates are found the length of the\n                    // Set and the length of the initial input\n                    // differ.\n\n                    set = new Set(set);\n\n                } else if (!(set instanceof Set)) {\n                    throw new TypeError(`The ${typeName} must be one of the types:\\n'str', 'set', 'array'.\"`);\n                }\n                \n                if (set.size === setLen) {\n                    return [...set];\n                }\n                \n                if (inputLen !== setLen) {\n                    throw new Error(`Your ${typeName} has a length of ${inputLen}. The converter requires a length of ${setLen}.`);\n                } else {\n                    const charAmounts = {};\n                    _charset = [..._charset];\n                    _charset.forEach(c => {\n                        if (c in charAmounts) {\n                            charAmounts[c]++;\n                        } else {\n                            charAmounts[c] = 1;\n                        }\n                    })\n                    \n                    let infoStr = \"\";\n                    if (setLen < 100) {\n                        infoStr = `${_charset.join(\"\")}\\n`;\n                        _charset.forEach(c => {\n                            if (charAmounts[c] > 1) {\n                                infoStr += \"^\";\n                            } else {\n                                infoStr += \" \";\n                            }\n                        });\n                    }\n                    const rChars = Object.keys(charAmounts).filter(c => charAmounts[c] > 1);\n                    throw new Error(`You have repetitive char(s) [ ${rChars.join(\" | \")} ] in your ${typeName}. Make sure each character is unique.\\n${infoStr}`);\n                }\n            }\n\n            if (this.root.frozenCharsets) {\n                throw new Error(\"The charsets of this converter cannot be changed.\");\n            }\n\n            if (typeof name !== \"string\") {\n                throw new TypeError(\"The charset name must be a string.\");\n            }\n\n            if (info && name in this.root.charsets) {\n                console.warn(`An existing charset with name ${name} will get replaced.`);\n            }\n\n            const charset = normalize(\"charset\", _charset, this.root.converter.radix);\n            const padChars = normalize(\"padding set\", _padChars, this.root.padCharAmount);\n\n            this.root.charsets[name] = charset;\n            if (padChars.length) {\n                this.root.padChars[name] = padChars\n            }\n\n            if (info) {\n                console.info(`New charset '${name}' was added and is ready to use`);\n            }\n        }\n\n        // Save method (argument gets validated) to \n        // change the default version.\n        this.root.setDefaultCharset = (version) => {\n            if (!(version in this.root.charsets)) {\n                const sets = Object.keys(this.root.charsets).join(\"\\n   * \");\n                const msg = `Charset ${version} was not found. Available charsets are:\\n   * ${sets}`;\n                throw new TypeError(msg);\n            }\n            this.root.version = version;\n        }\n    }\n\n    /**\n     * Argument lists for error messages.\n     * @param {string[]} args \n     * @returns string - Arguments joined as a string. \n     */\n    #makeArgList(args) {\n        return args.map(s => `'${s}'`).join(\", \");\n    }\n\n    /**\n     * Removes all padded zeros a the start of the string,\n     * adds a \"-\" if value is negative.\n     * @param {string} output - Former output.\n     * @param {boolean} negative - Indicates a negative value if true.\n     * @returns {string} - Output without zero padding and a sign if negative.\n     */\n    toSignedStr(output, negative) {\n\n        output = output.replace(/^0+(?!$)/, \"\");\n\n        if (negative) {\n            output = \"-\".concat(output);\n        }\n\n        return output;\n    }\n\n    /**\n     * Analyzes the input for a negative sign.\n     * If a sign is found, it gets removed but\n     * negative bool gets true;\n     * @param {string} input - Input number as a string. \n     * @returns {array} - Number without sign and negativity indication bool.\n     */\n    extractSign(input) {\n        let negative = false;\n        if (input[0] === \"-\") {\n            negative = true;\n            input = input.slice(1);\n        }\n\n        return [input, negative];\n    }\n\n    /**\n     * All possible error messages for invalid arguments,\n     * gets adjusted according to the converter settings.\n     * @param {string} arg - Argument. \n     * @param {string[]} versions - Charset array. \n     * @param {string[]} outputTypes - Array of output types. \n     * @param {boolean} initial - Indicates if the arguments where passed during construction. \n     */\n    #invalidArgument(arg, versions, outputTypes, initial) {\n        const loopConverterArgs = () => Object.keys(this.converterArgs).map(\n            key => this.converterArgs[key].map(\n                keyword => `'${keyword}'`\n            )\n            .join(\" and \")\n        )\n        .join(\"\\n   - \");\n        \n        throw new TypeError([\n            `'${arg}'\\n\\nParameters:`,\n            initial ? \"\\n * valid declarations for IO handlers are 'bytesOnly', 'bytesIn', 'bytesOut'\" : \"\",\n            this.root.isMutable.signed ? \"\\n * pass 'signed' to disable, 'unsigned' to enable the use of the twos's complement for negative integers\" : \"\",\n            this.root.isMutable.littleEndian ? \"\\n * 'be' for big , 'le' for little endian byte order for case conversion\" : \"\",\n            this.root.isMutable.padding ? \"\\n * pass 'pad' to fill up, 'nopad' to not fill up the output with the particular padding\" : \"\",\n            this.root.isMutable.upper ? \"\\n * valid args for changing the encoded output case are 'upper' and 'lower'\" : \"\",\n            `\\n * valid args for the output type are ${this.#makeArgList(outputTypes)}`,\n            versions ? `\\n * the option(s) for version/charset are: ${this.#makeArgList(versions)}` : \"\",\n            \"\\n * valid args for integrity check are: 'integrity' and 'nointegrity'\",\n            this.root.hasDecimalMode ? \"\\n * 'decimal' for decimal-mode (directly converts Numbers including decimal values, without byte-conversion)\" : \"\",\n            \"\\n * 'number' for number-mode (converts every number into a Float64Array to keep the natural js number type)\",\n            Object.keys(this.converterArgs).length ? `\\n * converter specific args:\\n   - ${loopConverterArgs()}` : \"\",\n            \"\\n\\nTraceback:\"\n        ].join(\"\"));\n    }\n\n\n    /**\n     * Test if provided arguments are in the argument list.\n     * Everything gets converted to lowercase and returned.\n     * @param {string[]} args - Passed arguments. \n     * @param {boolean} initial - Indicates if the arguments where passed during construction.  \n     * @returns {Object} - Converter settings object.\n     */\n    validateArgs(args, initial=false) {\n        \n        // default settings\n        const parameters = {\n            decimalMode: this.root.decimalMode,\n            integrity: this.root.integrity,\n            littleEndian: this.root.littleEndian,\n            numberMode: this.root.numberMode,\n            options: this.root.options,\n            outputType: this.root.outputType,\n            padding: this.root.padding,\n            signed: this.root.signed,\n            upper: this.root.upper,\n            version: this.root.version\n        }\n\n        // add any existing converter specific args\n        for (const param in this.converterArgs) {\n            parameters[param] = this.root[param];\n        }\n\n        // if no args are provided return the default settings immediately\n        if (!args.length) {\n\n            // if initial call set default IO handlers\n            if (initial) {\n                this.setIOHandlers();\n            }\n            \n            return parameters;\n        }\n\n        // Helper function to test the presence of a \n        // particular arg. If found, true is returned\n        // and it gets removed from the array.\n        const extractArg = (arg) => {\n            if (args.includes(arg)) {\n                args.splice(args.indexOf(arg), 1);\n                return true;\n            }\n            return false;\n        }\n\n        // set available versions and extra arguments\n        const versions = Object.keys(this.root.charsets);\n        const extraArgList = {\n            integrity: [\"nointegrity\", \"integrity\"],\n            littleEndian: [\"be\", \"le\"],\n            padding: [\"nopad\", \"pad\"],\n            signed: [\"unsigned\", \"signed\"],\n            upper: [\"lower\", \"upper\"],\n            ...this.converterArgs\n        }\n\n        // if initial, look for IO specifications\n        if (initial) {\n            if (extractArg(\"bytes_only\")) {\n                this.setIOHandlers(BytesInput, BytesOutput);\n            } else {\n                const inHandler = (extractArg(\"bytes_in\")) ? BytesInput : DEFAULT_INPUT_HANDLER;\n                const outHandler = (extractArg(\"bytes_out\")) ? BytesOutput : DEFAULT_OUTPUT_HANDLER;\n                this.setIOHandlers(inHandler, outHandler);\n            }\n        }\n\n        // set valid output types\n        const outputTypes = this.outputHandler.typeList;\n\n        // test for special \"number\" keyword\n        if (extractArg(\"number\")) {\n            parameters.numberMode = true;\n            parameters.outputType = \"float_n\";\n        } \n        \n        // test for the special \"decimal\" keyword\n        if (extractArg(\"decimal\")) {\n            if (!this.root.hasDecimalMode) {\n                throw TypeError(`Argument 'decimal' is only allowed for converters with a non-integer base.`);\n            }\n            parameters.decimalMode = true;\n            parameters.outputType = \"decimal\";\n\n            if (parameters.numberMode) {\n                parameters.numberMode = false;\n                console.warn(\"-> number-mode was disabled due to the decimal-mode\");\n            }\n        }\n\n        // walk through the remaining arguments\n        args.forEach((arg) => {\n            \n            // additional/optional non boolean options\n            if (typeof arg === \"object\") {\n                parameters.options = {...parameters.options, ...arg};\n                return;\n            }\n\n            arg = String(arg).toLowerCase();\n\n            if (versions.includes(arg)) {\n                parameters.version = arg;\n            } else if (outputTypes.includes(arg)) {\n                parameters.outputType = arg;\n            } else {\n                // set invalid args to true for starters\n                // if a valid arg is found later it will\n                // get changed\n\n                let invalidArg = true;\n\n                // walk through the mutable parameter list\n\n                for (const param in extraArgList) {\n                    \n                    if (extraArgList[param].includes(arg)) {\n                        \n                        invalidArg = false;\n\n                        // extra params always have two options\n                        // they are converted into booleans \n                        // index 0 > false\n                        // index 1 > true\n\n                        if (this.root.isMutable[param]) {\n                            parameters[param] = Boolean(extraArgList[param].indexOf(arg));\n                        } else {\n                            throw TypeError(`Argument '${arg}' is not allowed for this type of converter.`);\n                        }\n                    }\n                }\n\n                if (invalidArg) {\n                    this.#invalidArgument(arg, versions, outputTypes, initial);\n                }\n            }\n        });\n\n        // If padding and signed are true, padding\n        // is set to false and a warning is getting\n        // displayed.\n        if (parameters.padding && parameters.signed) {\n            parameters.padding = false;\n            console.warn(\"-> padding was set to false due to the signed conversion\");\n        }\n        \n        // overwrite the default parameters for the initial call\n        if (initial) {\n            for (const param in parameters) {\n                this.root[param] = parameters[param];\n            }\n        }\n\n        return parameters;\n    }\n\n    /**\n     * A TypeError specifically for sign errors.\n     */\n    signError() {\n        throw new SignError();\n    }\n\n    /**\n     * Wrap output to \"cols\" characters per line.\n     * @param {string} output - Output string. \n     * @param {number} cols - Number of cols per line. \n     * @returns {string} - Wrapped output.\n     */\n    wrapOutput(output, cols=0) {\n        if (!cols) {\n            return output;\n        }\n        const m = new RegExp(`.{1,${cols}}`, \"gu\");\n        return output.match(m).join(\"\\n\");\n    }\n\n    /**\n     * Ensures a string input.\n     * @param {*} input - Input.\n     * @param {boolean} [keepWS=false] - If set to false, whitespace is getting removed from the input if present.\n     * @returns {string} - Normalized input.\n     */\n    normalizeInput(input, keepWS=false) {\n        if (keepWS) {\n            return String(input);\n        }\n        return String(input).replace(/\\s/g, \"\");\n    }\n\n}\n\nexport {\n    DEFAULT_INPUT_HANDLER,\n    DEFAULT_OUTPUT_HANDLER,\n    DecodingError,\n    Utils\n};\n","import { DecodingError, Utils } from \"./utils.js\";\n\n\n/**\n * BaseEx Base Converter.\n * ---------------------\n * Core class for base-conversion and substitution\n * based on a given charset.\n */\nclass BaseConverter {\n\n    /**\n     * BaseEx BaseConverter Constructor.\n     * @param {number} radix - Radix for the converter.\n     * @param {number} [bsEnc] - Block Size (input bytes grouped by bs) for encoding (if zero the integer has no limitation).\n     * @param {number} [bsDec] - Block Size (input bytes grouped by bs) for decoding (if zero the integer has no limitation).\n     * @param {number} [decPadVal=0] - Value used for padding during decoding.\n     */\n    constructor(radix, bsEnc=null, bsDec=null, decPadVal=0) {\n        \n        this.radix = radix;\n\n        if (bsEnc !== null && bsDec !== null) {\n            this.bsEnc = bsEnc;\n            this.bsDec = bsDec;\n        } else {\n            [this.bsEnc, this.bsDec] = this.constructor.guessBS(radix);\n        }\n\n        this.decPadVal = decPadVal;\n        this.powers = {};\n    }\n\n    /**\n     * Experimental feature!\n     * Calc how many bits are needed to represent\n     * 256 conditions (1 byte). If the radix is \n     * less than 8 bits, skip that part and use\n     * the radix value directly.\n     */\n    static guessBS(radix) {\n\n        let bsDecPre = (radix < 8) ? radix : Math.ceil(256 / radix);\n        \n        // If the result is a multiple of 8 it\n        // is appropriate to reduce the result\n\n        while (bsDecPre > 8 && !(bsDecPre % 8)) {\n            bsDecPre /= 8;\n        }\n\n        // Search for the amount of bytes, which are necessary\n        // to represent the assumed amount of bytes. If the result\n        // is equal or bigger than the assumption for decoding, the\n        // amount of bytes for encoding is found. \n\n        let bsEnc = 0;\n        while (((bsEnc * 8) * Math.log(2) / Math.log(radix)) < bsDecPre) {\n            bsEnc++;\n        }\n\n        // The result for decoding can now get calculated accurately.\n        const bsDec = Math.ceil((bsEnc * 8) * Math.log(2) / Math.log(radix));\n\n        return [bsEnc, bsDec];\n    }\n\n\n    /**\n     * BaseEx Universal Base Encoding.\n     * @param {{ buffer: ArrayBufferLike; byteLength: any; byteOffset: any; length: any; BYTES_PER_ELEMENT: 1; }} inputBytes - Input as Uint8Array.\n     * @param {string} charset - The charset used for conversion.\n     * @param {boolean} littleEndian - Byte order, little endian bool.\n     * @param {function} replacer - Replacer function can replace groups of characters during encoding.\n     * @returns {number[]} - Output string and padding amount. \n     */\n    encode(inputBytes, charset, littleEndian=false, replacer=null) {\n\n        // Initialize output string and set yet unknown\n        // zero padding to zero.\n        let bs = this.bsEnc;\n        if (bs === 0) {\n            bs = inputBytes.byteLength;\n        }\n\n        let output = \"\";\n\n        const zeroPadding = (bs) ? (bs - inputBytes.length % bs) % bs : 0;\n        const zeroArray = new Array(zeroPadding).fill(0);\n        let byteArray;\n        \n        if (littleEndian) {\n            \n            // as the following loop walks through the array\n            // from left to right, the input bytes get reversed\n            // to favor the least significant first\n\n            inputBytes.reverse();\n            byteArray = [...zeroArray, ...inputBytes];\n        } else {\n            byteArray = [...inputBytes, ...zeroArray];\n        }\n        \n        // Iterate over the input array in groups with the length\n        // of the given blocksize.\n\n        // If the radix is 10, make a shortcut here by converting\n        // all bytes into the decimal number \"n\" and return the\n        // result as a string.\n        if (this.radix === 10) {\n            let n = 0n;\n            \n            for (let i=0; i<bs; i++) {\n                n = (n << 8n) + BigInt(byteArray[i]);\n            }\n            return [n.toString(), 0];\n        }\n        \n        // For any other radix, convert the subarray into a \n        // bs*8-bit binary number \"n\".\n        // The blocksize defines the size of the corresponding\n        // integer. Dependent on the blocksize this may lead  \n        // to values, that are higher than the \"MAX_SAFE_INTEGER\",\n        // therefore BigInts are used.\n        for (let i=0, l=byteArray.length; i<l; i+=bs) {\n  \n            let n = 0n;\n            \n            for (let j=i; j<i+bs; j++) {\n                n = (n << 8n) + BigInt(byteArray[j]);\n            }\n\n            // Initialize a new ordinary array, to\n            // store the digits with the given radix  \n            const bXarray = new Array();\n\n            // Initialize quotient and remainder for base conversion\n            let q = n, r;\n\n            // Divide n until the quotient becomes less than the radix.\n            while (q >= this.radix) {\n                [q, r] = this.divmod(q, this.radix);\n                bXarray.unshift(parseInt(r, 10));\n            }\n\n            // Append the remaining quotient to the array\n            bXarray.unshift(parseInt(q, 10));\n\n            // If the length of the array is less than the\n            // given output bs, it gets filled up with zeros.\n            // (This happens in groups of null bytes)\n            \n            while (bXarray.length < this.bsDec) {\n                bXarray.unshift(0);\n            }\n\n            // Each digit is used as an index to pick a \n            // corresponding char from the charset. The \n            // chars get concatenated and stored in \"frame\".\n\n            let frame = \"\";\n            bXarray.forEach(\n                charIndex => frame = frame.concat(charset[charIndex])\n            );\n\n            // Ascii85 is replacing four consecutive \"!\" into \"z\"\n            // Also other replacements can be implemented and used\n            // at this point.\n            if (replacer) {\n                frame = replacer(frame, zeroPadding);\n            }\n\n            output = output.concat(frame);\n        }\n\n        // The output string is returned. Also the amount \n        // of padded zeros. The specific class decides how \n        // to handle the padding.\n\n        return [output, zeroPadding];\n    }\n\n\n    /**\n     * BaseEx Universal Base Decoding.\n     * Decodes to a string of the given radix to a byte array.\n     * @param {string} inputBaseStr - Base as string (will also get converted to string but can only be used if valid after that).\n     * @param {string[]} charset - The charset used for conversion.\n     * @param {string[]} padSet - Padding characters for integrity check.\n     * @param {boolean} integrity - If set to false invalid character will be ignored.\n     * @param {boolean} littleEndian - Byte order, little endian bool.\n     * @returns {{ buffer: ArrayBufferLike; byteLength: any; byteOffset: any; length: any; BYTES_PER_ELEMENT: 1; }} - The decoded output as Uint8Array.\n     */\n    decode(inputBaseStr, charset, padSet=[], integrity=true, littleEndian=false) {\n\n        // Convert each char of the input to the radix-integer\n        // (this becomes the corresponding index of the char\n        // from the charset). Every char, that is not found in\n        // in the set is getting ignored.\n\n        if (!inputBaseStr) {\n            return new Uint8Array(0);\n        }\n\n        let bs = this.bsDec;\n        const byteArray = [];\n         \n        [...inputBaseStr].forEach(c => {\n            const index = charset.indexOf(c);\n            if (index > -1) { \n                byteArray.push(index);\n            } else if (integrity && padSet.indexOf(c) === -1) {\n                throw new DecodingError(c);\n            }\n        });\n\n        \n        let padChars;\n\n        if (bs === 0) {\n            bs = byteArray.length;\n        } else {\n            padChars = (bs - byteArray.length % bs) % bs;\n            const fillArray = new Array(padChars).fill(this.decPadVal);\n            if (littleEndian) {\n                byteArray.unshift(...fillArray);\n            } else {\n                byteArray.push(...fillArray);\n            }\n        }\n\n        // Initialize a new default array to store\n        // the converted radix-256 integers.\n\n        let b256Array = new Array();\n\n        // Iterate over the input bytes in groups of \n        // the blocksize.\n\n        for (let i=0, l=byteArray.length; i<l; i+=bs) {\n\n            // Build a subarray of bs bytes.\n            let n = 0n;\n\n            for (let j=0; j<bs; j++) {\n                const exp = bs-1-j;\n                const pow = this.powers[exp] || (() => {\n                    this.powers[exp] = BigInt(this.pow(exp));\n                    return this.powers[exp];\n                })();\n\n                n += BigInt(byteArray[i+j]) * pow;\n            }\n            \n            // To store the output chunks, initialize a\n            // new default array.\n            const subArray256 = [];\n\n            // The subarray gets converted into a bs*8-bit \n            // binary number \"n\", most significant byte \n            // first (big endian).\n\n            // Initialize quotient and remainder for base conversion\n            let q = n, r;\n\n            // Divide n until the quotient is less than 256.\n            while (q >= 256) {\n                [q, r] = this.divmod(q, 256);\n                subArray256.unshift(parseInt(r, 10));\n            }\n\n            // Append the remaining quotient to the array\n            subArray256.unshift(parseInt(q, 10));\n            \n            // If the length of the array is less than the required\n            // bs after decoding it gets filled up with zeros.\n            // (Again, this happens with null bytes.)\n\n            while (subArray256.length < this.bsEnc) {\n                subArray256.unshift(0);\n            }\n            \n            // The subarray gets concatenated with the\n            // main array.\n            b256Array.push(...subArray256);\n        }\n\n        // Remove padded zeros (or in case of LE all leading zeros)\n\n        if (littleEndian) {\n            if (b256Array.length > 1) {\n            \n                // remove all zeros from the start of the array\n                while (!b256Array[0]) {\n                    b256Array.shift();  \n                }\n                \n                if (!b256Array.length) {\n                    b256Array.push(0);\n                }\n\n                b256Array.reverse();\n            }\n        } else if (this.bsDec) {\n            const padding = this.padChars(padChars);\n\n            // remove all bytes according to the padding\n            b256Array.splice(b256Array.length-padding);\n        }\n\n        return Uint8Array.from(b256Array);\n    }\n\n\n    /**\n     * Calculates the amount of bytes, which are padding bytes. \n     * @param {number} charCount - Pass the amount of characters, which were added during encoding. \n     * @returns {number} - Amount of padding characters.\n     */\n    padBytes(charCount) {\n        return Math.floor((charCount * this.bsDec) / this.bsEnc);\n    }\n\n    /**\n     * Calculates the amount of bytes which can get removed\n     * from the decoded output bytes. \n     * @param {number} byteCount - Added bytes for padding \n     * @returns {number} - Amount of output bytes to be removed.\n     */\n    padChars(byteCount) {\n        return Math.ceil((byteCount * this.bsEnc) / this.bsDec);\n    }\n\n\n    /**\n     * Calculates the power for the current base\n     * according to the given position as BigInt.\n     * \n     * @param {number} n - Position \n     * @returns {BigInt} - BigInt power value\n     */\n    pow(n) {\n        return BigInt(this.radix)**BigInt(n);\n    }\n\n\n    /**\n     * Divmod function, which returns the results as\n     * an array of two BigInts.\n     * @param {*} x - Dividend\n     * @param {*} y - Divisor\n     * @returns {number[]} - [Quotient, Remainder]\n     */\n    divmod(x, y) {\n        [x, y] = [BigInt(x), BigInt(y)];\n        return [(x / y), (x % y)];\n    }\n}\n\n\n/**\n * Base of every BaseConverter. Provides basic\n * en- and decoding, makes sure, that every \n * property is set (to false by default).\n * Also allows global feature additions.\n * \n * Requires BaseEx Utils\n */\nclass BaseTemplate {\n\n    /**\n     * BaseEx BaseTemplate Constructor.\n     * @param {boolean} appendUtils - If set to false, the utils are not getting used. \n     */\n    constructor(appendUtils=true) {\n\n        // predefined settings\n        this.charsets = {};\n        this.decimalMode = false;\n        this.frozenCharsets = false;\n        this.hasDecimalMode = false;\n        this.hasSignedMode = false;\n        this.integrity = true;\n        this.littleEndian = false;\n        this.numberMode = false;\n        this.outputType = \"buffer\";\n        this.padding = false;\n        this.padCharAmount = 0;\n        this.padChars = {} \n        this.nonASCII = false;\n        this.signed = false;\n        this.upper = null;\n        if (appendUtils) this.utils = new Utils(this);\n        this.version = \"default\";\n        this.options = {\n            lineWrap: 0\n        }\n        \n        // list of allowed/disallowed args to change\n        this.isMutable = {\n            integrity: true,\n            littleEndian: false,\n            padding: false,\n            signed: false,\n            upper: false,\n        };\n    }\n\n    /**\n     * BaseEx Generic Encoder.\n     * @param {*} input - Any input the used byte converter allows.\n     * @param {function} [replacerFN] - Replacer function, which is passed to the encoder. \n     * @param {function} [postEncodeFN] - Function, which is executed after encoding.\n     * @param  {...any} args - Converter settings.\n     * @returns {string} - Base encoded string.\n     */\n    encode(input, replacerFN, postEncodeFN, ...args) {\n\n        // apply settings\n        const settings = this.utils.validateArgs(args);\n        \n        // handle input\n        let [inputBytes, negative, type] = this.utils.inputHandler.toBytes(input, settings);\n\n        // generate replacer function if given\n        let replacer = null;\n        if (replacerFN) {\n            replacer = replacerFN(settings);\n        }\n        \n        // Convert to base string\n        let [output, zeroPadding] = this.converter.encode(inputBytes, this.charsets[settings.version], settings.littleEndian, replacer);\n\n        // set sign if requested\n        if (settings.signed) {\n            output = this.utils.toSignedStr(output, negative);\n        }\n\n        // set upper case if requested\n        if (settings.upper) {\n            output = output.toUpperCase();\n        }\n\n        // modify the output based on a given function (optionally)\n        if (postEncodeFN) {\n            output = postEncodeFN({ inputBytes, output, settings, zeroPadding, type });\n        }\n\n        return this.utils.wrapOutput(output, settings.options.lineWrap);\n    }\n\n\n    /**\n     * BaseEx Generic Decoder.\n     * @param {string} input - Base String.\n     * @param {function} [preDecodeFN] - Function, which gets executed before decoding. \n     * @param {function} [postDecodeFN] - Function, which gets executed after decoding\n     * @param  {...any} args - Converter settings.\n     * @returns {*} - Output according to converter settings.\n     */\n    decode(input, preDecodeFN, postDecodeFN, keepNL, ...args) {\n    \n        // apply settings\n        const settings = this.utils.validateArgs(args);\n\n        // ensure a string input\n        input = this.utils.normalizeInput(input, keepNL);\n\n        // set negative to false for starters\n        let negative = false;\n        \n        // Test for a negative sign if converter supports it\n        if (this.hasSignedMode) {\n            [ input, negative ] = this.utils.extractSign(input);   \n            \n            // But don't allow a sign if the decoder is not configured to use it\n            if (negative && !settings.signed) {\n                this.utils.signError();\n            }\n        }\n\n        // Make the input lower case if alphabet has only one case\n        // (single case alphabets are stored as lower case strings)\n        if (this.isMutable.upper) {\n            input = input.toLowerCase();\n        }\n\n        // Run pre decode function if provided\n        if (preDecodeFN) {\n            input = preDecodeFN({ input, settings });\n        }\n\n        // Run the decoder\n        let output = this.converter.decode(\n            input,\n            this.charsets[settings.version],\n            this.padChars[settings.version],\n            settings.integrity,\n            settings.littleEndian\n        );\n\n        // Run post decode function if provided\n        if (postDecodeFN) {\n            output = postDecodeFN({ input, output, settings });\n        }\n\n        return this.utils.outputHandler.compile(output, settings.outputType, settings.littleEndian, negative);\n    }\n}\n\n\nexport { BaseConverter, BaseTemplate };\n","/**\n * [BaseEx|Base1 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-1.js}\n *\n * @version 0.8.1\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT\n */\n\nimport { BaseConverter, BaseTemplate } from \"../core.js\";\n\n/**\n * BaseEx Base 1 Converter.\n * -----------------------\n * This is a unary/base1 converter. It is converting input \n * to a decimal number, which is converted into an unary\n * string. Due to the limitations on string (or array) length\n * it is only suitable for the  conversions of numbers up to\n * roughly 2^28.\n */\nexport default class Base1 extends BaseTemplate {\n    \n    /**\n     * BaseEx Base1 Constructor.\n     * @param {...string} [args] - Converter settings.\n     */\n    constructor(...args) {\n        super();\n\n        // All chars in the string are used and picked randomly (prob. suitable for obfuscation)\n        this.charsets.all = [...\" !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\"];\n        \n        // The sequence is used from left to right again and again\n        this.charsets.sequence = [...\"Hello World!\"];\n        \n        // Standard unary string with one character\n        this.charsets.default = [\"1\"];\n\n        // Telly Mark string, using hash for 5 and vertical bar for 1 \n        this.charsets.tmark = [\"|\", \"#\"];\n\n        // Base 10 converter\n        this.converter = new BaseConverter(10, 0, 0);\n        \n        // converter settings\n        this.hasSignedMode = true;\n        this.littleEndian = true;\n        this.signed = true;\n        \n        // mutable extra args\n        this.isMutable.charsets = false;\n        this.isMutable.signed = true;\n        this.isMutable.upper = true;\n        \n        // apply user settings\n        this.utils.validateArgs(args, true);\n    }\n    \n\n    /**\n     * BaseEx Base1 Encoder.\n     * @param {*} input - Input according to the used byte converter.\n     * @param  {...str} [args] - Converter settings.\n     * @returns {string} - Base1 encoded string.\n     */\n    encode(input, ...args) {\n\n        // argument validation and input settings\n        const settings = this.utils.validateArgs(args);\n        \n        let inputBytes, negative;\n        [inputBytes, negative,] = this.utils.inputHandler.toBytes(input, settings);\n\n        // Convert to BaseRadix string\n        let base10 = this.converter.encode(inputBytes, null, settings.littleEndian)[0];\n        \n        let n = BigInt(base10);\n\n        // Limit the input before it even starts.\n        // The executing engine will most likely\n        // give up much earlier.\n        // (2**29-24 during tests)\n\n        if (n > Number.MAX_SAFE_INTEGER) {\n            throw new RangeError(\"Invalid string length.\");\n        } else if (n > 16777216) {\n            console.warn(\"The string length is really long. The JavaScript engine may have memory issues generating the output string.\");\n        }\n        \n        n = Number(n);\n        \n        const charset = this.charsets[settings.version];\n        const charAmount = charset.length;\n        let output = \"\";\n\n        // Convert to unary in respect to the version differences\n        if (charAmount === 1) {\n            output = charset.at(0).repeat(n)\n        } else if (settings.version === \"all\") {\n            for (let i=0; i<n; i++) {\n                const charIndex = Math.floor(Math.random() * charAmount); \n                output += charset[charIndex];\n            }\n        } else if (settings.version === \"tmark\") {\n            const singulars = n % 5;\n            if (n > 4) {\n                output = charset.at(1).repeat((n - singulars) / 5);\n            }\n            output += charset.at(0).repeat(singulars);\n        } else {\n            for (let i=0; i<n; i++) {\n                output += charset[i%charAmount];\n            }\n        }\n        \n        output = this.utils.toSignedStr(output, negative);\n\n        if (settings.upper) {\n            output = output.toUpperCase();\n        }\n        \n        return this.utils.wrapOutput(output, settings.options.lineWrap);\n    }\n    \n\n    /**\n     * BaseEx Base1 Decoder.\n     * @param {string} input - Base1/Unary String.\n     * @param  {...any} [args] - Converter settings. \n     * @returns {*} - Output according to converter settings.\n     */\n    decode(input, ...args) {\n\n        // Argument validation and output settings\n        const settings = this.utils.validateArgs(args);\n\n        // Make it a string, whatever goes in\n        input = this.utils.normalizeInput(input);\n        \n        // Test for a negative sign\n        let negative;\n        [input, negative] = this.utils.extractSign(input);\n        \n        // remove all but the relevant character\n        if (settings.version !== \"all\") {\n            const cleanedSet = [...new Set(this.charsets[settings.version])].join(\"\");\n            const regex = new RegExp(`[^${cleanedSet}]`,\"g\");\n            input = input.replace(regex, \"\");\n        }\n        input = String(input.length);\n\n        // Run the decoder\n        const output = this.converter.decode(input, [...\"0123456789\"], [], \"\", settings.integrity, settings.littleEndian);\n        \n        // Return the output\n        return this.utils.outputHandler.compile(output, settings.outputType, settings.littleEndian, negative);\n    }\n}\n","/**\n * [BaseEx|Base16 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-16.js}\n *\n * @version 0.8.1\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT\n */\n\nimport { BaseConverter, BaseTemplate } from \"../core.js\";\n\n/**\n * BaseEx Base 16 Converter.\n * ------------------------\n * This is a base16/converter. Various input can be \n * converted to a hex string or a hex string can be\n * decoded into various formats. It is possible to \n * convert in both signed and unsigned mode.\n */\nexport default class Base16 extends BaseTemplate {\n\n    /**\n     * BaseEx Base16 Constructor.\n     * @param {...string} [args] - Converter settings.\n     */\n    constructor(...args) {\n        super();\n\n        // converter\n        this.converter = new BaseConverter(16, 1, 2);\n\n        // default settings\n        this.charsets.default = [...\"0123456789abcdef\"];\n        this.padChars.default = [];\n\n        this.hasSignedMode = true;\n        \n        // mutable extra args\n        this.isMutable.signed = true;\n        this.isMutable.upper = true;\n\n        // apply user settings\n        this.utils.validateArgs(args, true);\n    }\n\n\n    /**\n     * BaseEx Base16 Encoder.\n     * @param {*} input - Input according to the used byte converter.\n     * @param  {...str} [args] - Converter settings.\n     * @returns {string} - Base16 encoded string.\n     */\n    encode(input, ...args) {\n        return super.encode(input, null, null, ...args);\n    }\n\n    \n    /**\n     * BaseEx Base16 Decoder.\n     * @param {string} input - Base16/Hex String.\n     * @param  {...any} [args] - Converter settings.\n     * @returns {*} - Output according to converter settings.\n     */\n    decode(input, ...args) {\n        \n        // pre decoding function\n        const normalizeInput = ({ input: normInput, settings }) => {\n            \n            // Remove \"0x\" if present\n            normInput = normInput.replace(/^0x/, \"\");\n\n            // remove non-charset characters if integrity\n            // check is disabled\n            if (!settings.integrity) {\n                normInput = normInput\n                    .toLowerCase()\n                    .replace(/[^0-9a-f]/g, \"\");\n            }\n\n            // Ensure even number of characters\n            if (normInput.length % 2) {\n                normInput = \"0\".concat(normInput);\n            }\n\n            return normInput;\n        }\n        \n        return super.decode(input, normalizeInput, null, false, ...args);\n    }\n}\n","/**\n * [BaseEx|Base32 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-32.js}\n *\n * @version 0.8.1\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT\n */\n\nimport {  BaseConverter, BaseTemplate } from \"../core.js\";\n\n/**\n * BaseEx Base 32 Converter.\n * ------------------------\n * \n * This is a base32 converter. Various input can be \n * converted to a base32 string or a base32 string\n * can be decoded into various formats. It is possible\n * to convert in both signed and unsigned mode in little\n * and big endian byte order.\n * \n * Available charsets are:\n *  - RFC 3548\n *  - RFC 4648\n *  - crockford\n *  - zbase32\n */\nexport default class Base32 extends BaseTemplate {\n    \n    /**\n     * BaseEx Base32 Constructor.\n     * @param {...string} [args] - Converter settings.\n     */\n    constructor(...args) {\n        super();\n        this.converter = new BaseConverter(32, 5, 8);\n\n        // charsets\n        this.charsets.crockford = [ ...\"0123456789abcdefghjkmnpqrstvwxyz\" ];\n        this.padChars.crockford = [\"=\"],\n\n        this.charsets.rfc3548 =   [...\"abcdefghijklmnopqrstuvwxyz234567\"];\n        this.padChars.rfc3548 =   [\"=\"];\n\n        this.charsets.rfc4648 =   [...\"0123456789abcdefghijklmnopqrstuv\"];\n        this.padChars.rfc4648 =   [\"=\"];\n\n        this.charsets.zbase32 =   [...\"ybndrfg8ejkmcpqxot1uwisza345h769\"];\n        this.padChars.zbase32 =   [\"=\"];\n        \n        // predefined settings\n        this.padCharAmount = 1;\n        this.hasSignedMode = true;\n        this.version = \"rfc4648\";\n        \n        // mutable extra args\n        this.isMutable.littleEndian = true;\n        this.isMutable.padding = true;\n        this.isMutable.signed = true;\n        this.isMutable.upper = true;\n\n        // apply user settings\n        this.utils.validateArgs(args, true);\n        this.padding = (/rfc3548|rfc4648/).test(this.version);\n        this.upper = this.version === \"crockford\";\n    }\n    \n\n    /**\n     * BaseEx Base32 Encoder.\n     * @param {*} input - Input according to the used byte converter.\n     * @param  {...str} [args] - Converter settings.\n     * @returns {string} - Base32 encoded string.\n     */\n    encode(input, ...args) {\n\n        const applyPadding = ({ output, settings, zeroPadding }) => {\n\n            if (!settings.littleEndian) {\n                // Cut of redundant chars and append padding if set\n                if (zeroPadding) {\n                    const padValue = this.converter.padBytes(zeroPadding);\n                    const padChar = this.padChars[settings.version].at(0);\n                    output = output.slice(0, -padValue);\n                    if (settings.padding) { \n                        output = output.concat(padChar.repeat(padValue));\n                    }\n                }\n            }\n\n            return output;\n        }\n        \n        return super.encode(input, null, applyPadding, ...args);\n    }\n\n\n    /**\n     * BaseEx Base32 Decoder.\n     * @param {string} input - Base32 String.\n     * @param  {...any} [args] - Converter settings.\n     * @returns {*} - Output according to converter settings.\n     */\n    decode(input, ...args) {\n        return super.decode(input, null, null, false, ...args);\n    }\n}\n","/**\n * [BaseEx|Base58 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-58.js}\n *\n * @version 0.8.1\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT\n */\n\nimport { BaseConverter, BaseTemplate } from \"../core.js\";\n\n/**\n * BaseEx Base 58 Converter.\n * ------------------------\n * \n * This is a base58 converter. Various input can be \n * converted to a base58 string or a base58 string\n * can be decoded into various formats.\n * \n * Available charsets are:\n *  - default\n *  - bitcoin\n *  - flickr\n */\nexport default class Base58 extends BaseTemplate{\n\n    /**\n     * BaseEx Base58 Constructor.\n     * @param {...string} [args] - Converter settings.\n     */\n    constructor(...args) {\n        super();\n        this.converter = new BaseConverter(58, 0, 0);\n\n        // charsets\n        this.charsets.default = [...\"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ\"];\n        Object.defineProperty(this.padChars, \"default\", {\n            get: () => [ this.charsets.default.at(0) ]\n        });\n\n        this.charsets.bitcoin = [...\"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz\"];\n        Object.defineProperty(this.padChars, \"bitcoin\", {\n            get: () => [ this.charsets.bitcoin.at(0) ]\n        });\n        \n        this.charsets.flickr =  [...\"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ\"];\n        Object.defineProperty(this.padChars, \"flickr\", {\n            get: () => [ this.charsets.flickr.at(0) ]\n        });\n        \n\n        // predefined settings\n        this.padding = true;\n        this.version = \"bitcoin\";\n        \n        // mutable extra args\n        this.isMutable.padding = true;\n        this.isMutable.signed = true;\n\n        // apply user settings\n        this.utils.validateArgs(args, true);\n    }\n\n    \n    /**\n     * BaseEx Base58 Encoder.\n     * @param {*} input - Input according to the used byte converter.\n     * @param  {...str} [args] - Converter settings.\n     * @returns {string} - Base58 encoded string.\n     */\n    encode(input, ...args) {\n\n        const applyPadding = ({ inputBytes, output, settings, type }) => {\n\n            if (settings.padding && type !== \"int\") { \n                \n                // Count all null bytes at the start of the array\n                // stop if a byte with a value is reached. If it goes\n                // all the way through it, reset index and stop.\n                let i = 0;\n                const end = inputBytes.length;\n\n                // pad char is always! the first char in the set\n                const padChar = this.charsets[settings.version].at(0);\n\n                // only proceed if input has a length at all\n                if (end) {\n                    while (!inputBytes[i]) {\n                        i++;\n                        if (i === end) {\n                            i = 0;\n                            break;\n                        }\n                    }\n\n                    // The value for zero padding is the index of the\n                    // first byte with a value plus one.\n                    const zeroPadding = i;\n\n                    // Set a one for every leading null byte\n                    if (zeroPadding) {\n                        output = (padChar.repeat(zeroPadding)).concat(output);\n                    }\n                }\n            }\n\n            return output;\n        }\n    \n        return super.encode(input, null, applyPadding, ...args);\n    }\n\n\n    /**\n     * BaseEx Base58 Decoder.\n     * @param {string} input - Base58 String.\n     * @param  {...any} [args] - Converter settings.\n     * @returns {*} - Output according to converter settings.\n     */\n    decode(input, ...args) {\n        \n        // post decoding function\n        const applyPadding = ({ input, output, settings }) => {\n\n            // pad char is always! the first char in the set\n            const padChar = this.charsets[settings.version].at(0);\n\n            if (settings.padding && input.length > 1) {\n                \n                // Count leading padding (char should be 1)\n                let i = 0;\n                while (input[i] === padChar) {\n                    i++;\n                }\n    \n                // The counter becomes the zero padding value\n                const zeroPadding = i;\n    \n                // Create a new Uint8Array with leading null bytes \n                // with the amount of zeroPadding\n                if (zeroPadding) {\n                    output = Uint8Array.from([...new Array(zeroPadding).fill(0), ...output]);\n                }\n    \n            }\n\n            return output;\n        }\n\n        return super.decode(input, null, applyPadding, false, ...args);\n    }\n}\n","/**\n * [BaseEx|Base64 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-64.js}\n *\n * @version 0.8.1\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT\n */\n\nimport { BaseConverter, BaseTemplate } from \"../core.js\";\n\n/**\n * BaseEx Base 64 Converter.\n * ------------------------\n * \n * This is a base64 converter. Various input can be \n * converted to a base64 string or a base64 string\n * can be decoded into various formats.\n * \n * Available charsets are:\n *  - default\n *  - urlsafe\n */\nexport default class Base64 extends BaseTemplate {\n\n    /**this.padChars.\n     * BaseEx Base64 Constructor.\n     * @param {...string} [args] - Converter settings.\n     */\n    constructor(...args) {\n        super();\n        this.converter = new BaseConverter(64, 3, 4);\n\n        // charsets\n        this.charsets.default = [...\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\"];\n        this.padChars.default = [\"=\"];\n        \n        this.charsets.urlsafe = this.charsets.default.slice(0, -2).concat([\"-\", \"_\"]);\n        this.padChars.urlsafe = [\"=\"];\n\n\n        // predefined settings\n        this.padCharAmount = 1;\n        this.padding = true;\n        \n        // mutable extra args\n        this.isMutable.padding = true;\n\n        // apply user settings\n        this.utils.validateArgs(args, true);\n    }\n\n\n    /**\n     * BaseEx Base64 Encoder.\n     * @param {*} input - Input according to the used byte converter.\n     * @param  {...str} [args] - Converter settings.\n     * @returns {string} - Base64 encoded string.\n     */\n    encode(input, ...args) {\n        \n        const applyPadding = ({ output, settings, zeroPadding }) => {\n\n            // Cut of redundant chars and append padding if set\n            if (zeroPadding) {\n                const padValue = this.converter.padBytes(zeroPadding);\n                const padChar = this.padChars[settings.version].at(0);\n                output = output.slice(0, -padValue);\n                if (settings.padding) { \n                    output = output.concat(padChar.repeat(padValue));\n                }\n            }\n\n            return output;\n        }\n            \n        return super.encode(input, null, applyPadding, ...args);\n    }\n\n\n    /**\n     * BaseEx Base64 Decoder.\n     * @param {string} input - Base64 String.\n     * @param  {...any} [args] - Converter settings.\n     * @returns {*} - Output according to converter settings.\n     */\n    decode(input, ...args) {\n        return super.decode(input, null, null, false, ...args);\n    }\n}\n","/**\n * [BaseEx|UUencode Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/uuencode.js}\n *\n * @version 0.8.1\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT\n */\n\nimport { BaseConverter, BaseTemplate } from \"../core.js\";\n\n/**\n * BaseEx UUencode Converter.\n * ------------------------\n * \n * This is a UUencoder/UUdecoder. Various input can be \n * converted to a UUencoded string or a UUencoded string\n * can be decoded into various formats.\n * \n * Available charsets are:\n *  - default\n *  - original\n *  - xx\n */\nexport default class UUencode extends BaseTemplate {\n\n    /**\n     * BaseEx UUencode Constructor.\n     * @param {...string} [args] - Converter settings.\n     */\n    constructor(...args) {\n        super();\n        this.converter = new BaseConverter(64, 3, 4);\n\n        // charsets\n        this.charsets.default = [...\"`!\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_\"];\n        Object.defineProperty(this.padChars, \"default\", {\n            get: () => [ this.charsets.default.at(0) ]\n        });\n\n        this.charsets.original = [\" \", ...this.charsets.default.slice(1)];\n        Object.defineProperty(this.padChars, \"original\", {\n            get: () => [ this.charsets.original.at(0) ]\n        });\n\n        this.charsets.xx = [...\"+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\"];\n        Object.defineProperty(this.padChars, \"xx\", {\n            get: () => [ this.charsets.xx.at(0) ]\n        });\n\n\n        // predefined settings\n        this.padding = true;\n        this.buffering = false;\n        this.utils.converterArgs.buffering = [\"nobuffering\", \"buffering\"];\n        this.isMutable.buffering = true;\n        this.header = false;\n        this.utils.converterArgs.header = [\"noheader\", \"header\"];\n        this.isMutable.header = true;\n        this.isMutable.integrity = false;\n\n        // apply user settings\n        this.utils.validateArgs(args, true);\n    }\n\n\n    /**\n     * BaseEx UUencoder.\n     * @param {*} input - Input according to the used byte converter.\n     * @param  {...str} [args] - Converter settings.\n     * @returns {string} - UUencode string.\n     */\n    encode(input, ...args) {\n\n        const format = ({ output, settings, zeroPadding }) => {\n\n            const charset = this.charsets[settings.version];\n            const outArray = [...output];\n            const outLen = outArray.length;\n            settings.options.lineWrap = 0;\n            \n            \n            if (settings.header && !settings.buffering) {\n                const permissions = settings.options.permissions || een();\n                const fileName = settings.options.file || ees();\n                output = `begin ${permissions} ${fileName}\\n`;\n            }  else {\n                output = \"\";\n            }\n\n            // repeatedly take 60 chars from the output \n            for (let start=0; start<outLen; start+=60) {\n                const end = start+60;\n                const lArray = outArray.slice(start, end);\n                \n                // if all chars are taken, remove eventually added pad zeros\n                if (end >= outLen) { \n                    const byteCount = this.converter.padChars(lArray.length) - zeroPadding;\n                    \n                    // add the the current chars plus the leading\n                    // count char\n                    output += `${charset.at(byteCount)}${lArray.join(\"\")}\\n`;\n                }\n                \n                // add the the current chars plus the leading\n                // count char (\"M\" for default charsets) \n                else {\n                    output += `${charset.at(45)}${lArray.join(\"\")}\\n`;\n                }\n            }\n\n            if (!settings.buffering) {\n                output += `${charset.at(0)}\\n`;\n                \n                if (settings.header) {\n                    output += \"end\\n\";\n                }\n            }\n\n            return output;\n        }\n            \n        return super.encode(input, null, format, ...args);\n    }\n\n\n    /**\n     * BaseEx UUdecoder.\n     * @param {string} input - UUencode String.\n     * @param  {...any} [args] - Converter settings.\n     * @returns {*} - Output according to converter settings.\n     */\n     decode(input, ...args) {\n\n        let padChars = 0;\n\n        const format = ({ input, settings }) => {\n\n            const charset = this.charsets[settings.version];\n            const lines = input.trim().split(/\\r?\\n/);\n            const inArray = [];\n            \n            if ((/^begin/i).test(lines.at(0))) {\n                lines.shift();\n            }\n            \n            for (const line of lines) {\n                const lArray = [...line];\n                const byteCount = charset.indexOf(lArray.shift());\n                \n                if (!(byteCount > 0)) {\n                    break;\n                }\n\n                inArray.push(...lArray);\n\n                if (byteCount !== 45) {\n                    let len = lArray.length\n\n                    // fix probably missing spaces for original charset\n                    if (settings.version === \"original\") {\n                        const expectedLen = calcUUStrLen(byteCount);\n                        while (len < expectedLen) {\n                            len++;\n                            inArray.push(\" \");\n                        }\n                    }\n\n                    padChars = this.converter.padChars(len) - byteCount;\n                    break;\n                }\n\n                // fix probably missing spaces for original charset\n                else if (lArray.length !== 60 && settings.version === \"original\") {\n                    while (inArray.length % 60) {\n                        inArray.push(\" \");\n                    }\n                }\n            }\n\n            return inArray.join(\"\");\n\n        }\n\n        const removePadChars = ({ output }) => {\n            if (padChars) {\n                output = new Uint8Array(output.slice(0, -padChars));\n            }\n            return output;\n        }\n\n        return super.decode(input, format, removePadChars, true, ...args);\n    }\n}\n\n\nconst een = () => {\n    const o = () => Math.floor(Math.random() * 8);\n    return `${o()}${o()}${o()}`;\n}\n\nconst ees = () => {\n    const name = [\n        \"unchronological\",\n        \"unconditionally\",\n        \"underemphasized\",\n        \"underprivileged\",\n        \"undistinguished\",\n        \"unsophisticated\",\n        \"untitled\",\n        \"untitled-1\",\n        \"untitled-3\",\n        \"uuencode\"\n    ];\n\n    const ext = [\n        \"applescript\",\n        \"bat\",\n        \"beam\",\n        \"bin\",\n        \"exe\",\n        \"js\",\n        \"mam\",\n        \"py\",\n        \"sh\",\n        \"vdo\",\n        \"wiz\"\n    ];\n\n    const pick = (arr) => arr.at(Math.floor(Math.random() * arr.length));\n\n    return `${pick(name)}.${pick(ext)}`;\n};\n\nconst calcUUStrLen = byteCount => {\n    const len = byteCount / 3 * 4;\n    if (len % 4) {\n        return Math.floor(len/4) * 4 + 4;\n    }\n    return len;\n}\n","/**\n * [BaseEx|Base85 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-85.js}\n *\n * @version 0.8.1\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT\n */\n\nimport { BaseConverter, BaseTemplate } from \"../core.js\";\n\n/**\n * BaseEx Base 85 Converter.\n * ------------------------\n * \n * This is a base85 converter. Various input can be \n * converted to a base85 string or a base85 string\n * can be decoded into various formats.\n * \n * Available charsets are:\n *  - adobe\n *  - ascii85\n *  - rfc1924\n *  - z85\n * \n * Adobe and ascii85 are the basically the same.\n * Adobe will produce the same output, apart from\n * the <~wrapping~>.\n * \n * Z85 is an important variant, because of the \n * more interpreter-friendly character set.\n * \n * The RFC 1924 version is a hybrid. It is not using\n * the mandatory 128 bit calculation. Instead only \n * the charset is getting used.\n */\nexport default class Base85 extends BaseTemplate {\n\n    /**\n     * BaseEx Base85 Constructor.\n     * @param {...string} [args] - Converter settings.\n     */\n    constructor(...args) {\n        super();\n        this.converter = new BaseConverter(85, 4, 5, 84);\n\n        // charsets\n        this.charsets.adobe   =  [...\"!\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstu\"];\n        this.charsets.ascii85 =  this.charsets.adobe.slice();\n        this.charsets.rfc1924 =  [...\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~\"];\n        this.charsets.z85     =  [...\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#\"];\n\n        // predefined settings\n        this.version = \"ascii85\";\n        \n        // apply user settings\n        this.utils.validateArgs(args, true);\n    }\n    \n\n    /**\n     * BaseEx Base85 Encoder.\n     * @param {*} input - Input according to the used byte converter.\n     * @param  {...str} [args] - Converter settings.\n     * @returns {string} - Base85 encoded string.\n     */\n    encode(input, ...args) {\n\n        // Replace five consecutive \"!\" with a \"z\"\n        // for adobe and ascii85\n        const replacerFN = (settings) => {\n            let replacer;\n            if (settings.version.match(/adobe|ascii85/)) {\n                replacer = (frame, zPad) => (!zPad && frame === \"!!!!!\") ? \"z\" : frame;\n            }\n            return replacer;\n        }\n                    \n        // Remove padded values and add a frame for the\n        // adobe variant\n        const framesAndPadding = ({ output, settings, zeroPadding }) => {\n\n            // Cut of redundant chars\n            if (zeroPadding) {\n                const padValue = this.converter.padBytes(zeroPadding);\n                output = output.slice(0, -padValue);\n            }\n\n            // Adobes variant gets its <~framing~>\n            if (settings.version === \"adobe\") {\n                output = `<~${output}~>`;\n            }\n            \n            return output;\n        }\n\n        return super.encode(input, replacerFN, framesAndPadding, ...args);\n    }\n\n\n    /**\n     * BaseEx Base85 Decoder.\n     * @param {string} input - Base85 String.\n     * @param  {...any} [args] - Converter settings.\n     * @returns {*} - Output according to converter settings.\n     */\n    decode(input, ...args) {\n\n        const prepareInput = ({ input, settings }) => {\n\n            // For default ascii85 convert \"z\" back to \"!!!!!\"\n            // Remove the adobe <~frame~>\n            if (settings.version.match(/adobe|ascii85/)) {\n                input = input.replace(/z/g, \"!!!!!\");\n                if (settings.version === \"adobe\") {\n                    input = input.replace(/^<~|~>$/g, \"\");\n                }\n            }\n\n            return input\n        }\n\n        return super.decode(input, prepareInput, null, false, ...args);\n    }\n}\n","/**\n * [BaseEx|Base91 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-91.js}\n *\n * @version 0.8.1\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT AND BSD-3-Clause (Base91, Copyright (c) 2000-2006 Joachim Henke)\n */\n\nimport { BaseTemplate } from \"../core.js\";\nimport { DecodingError } from \"../utils.js\";\n\n/**\n * BaseEx Base 91 Converter.\n * ------------------------\n * \n * This is a base91 converter. Various input can be \n * converted to a base91 string or a base91 string\n * can be decoded into various formats.\n * \n * It is an  implementation of Joachim Henkes method\n * to encode binary data as ASCII characters -> basE91\n * http://base91.sourceforge.net/\n * \n * As this method requires to split the bytes, the\n * default conversion class \"BaseConverter\" is not\n * getting used in this case.\n */\nexport default class Base91 extends BaseTemplate {\n    \n    /**\n     * BaseEx basE91 Constructor.\n     * @param {...string} [args] - Converter settings.\n     */\n    constructor(...args) {\n        super();\n\n        // converter (properties only)\n        this.converter = {\n            radix: 91,\n            bsEnc: 0,\n            bsDec: 0\n        }\n\n        // charsets\n        this.charsets.default = [...\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!#$%&()*+,./:;<=>?@[]^_`{|}~\\\"\"];\n        this.version = \"default\";\n\n        // apply user settings\n        this.utils.validateArgs(args, true);\n    }\n\n\n    /**\n     * BaseEx basE91 Encoder.\n     * @param {*} input - Input according to the used byte converter.\n     * @param  {...str} [args] - Converter settings.\n     * @returns {string} - basE91 encoded string.\n     */\n    encode(input, ...args) {\n       \n        // argument validation and input settings\n        const settings = this.utils.validateArgs(args);\n        const inputBytes = this.utils.inputHandler.toBytes(input, settings)[0];\n  \n        // As this base representation splits the bytes\n        // the read bits need to be stores somewhere. \n        // This is done in \"bitCount\". \"n\", similar to \n        // other solutions here, holds the integer which\n        // is converted to the desired base.\n\n        let bitCount = 0;\n        let n = 0;\n        let output = \"\";\n\n        const charset = this.charsets[settings.version];\n\n        inputBytes.forEach(byte => {\n            //n = n + byte * 2^bitcount;\n            n += (byte << bitCount);\n\n            // Add 8 bits forEach byte\n            bitCount += 8;\n            \n            // If the count exceeds 13 bits, base convert the\n            // current frame.\n\n            if (bitCount > 13) {\n\n                // Set bit amount \"count\" to 13, check the\n                // remainder of n % 2^13. If it is 88 or \n                // lower. Take one more bit from the stream\n                // and calculate the remainder for n % 2^14.\n\n                let count = 13;\n                let rN = n % 8192;\n\n                if (rN < 89) {\n                    count = 14;\n                    rN = n % 16384;\n                }\n\n                // Remove 13 or 14 bits from the integer,\n                // decrease the bitCount by the same amount.\n                n >>= count;\n                bitCount -= count;\n                \n                // Calculate quotient and remainder from\n                // the before calculated remainder of n \n                // -> \"rN\"\n                let q, r;\n                [q, r] = this.#divmod(rN, 91);\n\n                // Lookup the corresponding characters for\n                // \"r\" and \"q\" in the set, append it to the \n                // output string.\n                output = `${output}${charset[r]}${charset[q]}`;\n            }\n        });\n        \n        // If the bitCount is not zero at the end,\n        // calculate quotient and remainder of 91\n        // once more.\n        if (bitCount) {\n            let q, r;\n            [q, r] = this.#divmod(n, 91);\n\n            // The remainder is concatenated in any case\n            output = output.concat(charset[r]);\n\n            // The quotient is also appended, but only\n            // if the bitCount still has the size of a byte\n            // or n can still represent 91 conditions.\n            if (bitCount > 7 || n > 90) {\n                output = output.concat(charset[q]);\n            }\n        }\n        \n        return this.utils.wrapOutput(output, settings.options.lineWrap);\n    }\n\n\n    /**\n     * BaseEx basE91 Decoder.\n     * @param {string} input - basE91 String.\n     * @param  {...any} [args] - Converter settings.\n     * @returns {*} - Output according to converter settings.\n     */\n    decode(input, ...args) {\n\n        // Argument validation and output settings\n        const settings = this.utils.validateArgs(args);\n        const charset = this.charsets[settings.version];\n\n        // Make it a string, whatever goes in\n        input = this.utils.normalizeInput(input);\n        let inArray = [...input];\n\n        // remove unwanted characters if integrity is false \n        if (!settings.integrity) {\n            inArray = inArray.filter(c => charset.includes(c));\n        }\n\n\n        let l = inArray.length;\n\n        // For starters leave the last char behind\n        // if the length of the input string is odd.\n\n        let odd = false;\n        if (l % 2) {\n            odd = true;\n            l--;\n        }\n\n        // Set again integer n for base conversion.\n        // Also initialize a bitCount(er)\n\n        let n = 0;\n        let bitCount = 0;\n        \n        // Initialize an ordinary array\n        const b256Array = new Array();\n        \n        // Walk through the string in steps of two\n        // (aka collect remainder- and quotient-pairs)\n        for (let i=0; i<l; i+=2) {\n\n            const c0 = charset.indexOf(inArray[i]);\n            const c1 =  charset.indexOf(inArray[i+1]);\n            \n            if (c0 < 0) {\n                throw new DecodingError(inArray[i]);\n            }\n            if (c1 < 0) {\n                throw new DecodingError(inArray[i+1]);\n            }\n\n            // Calculate back the remainder of the integer \"n\"\n            const rN = c0 + c1 * 91;\n            n = (rN << bitCount) + n;\n            bitCount += (rN % 8192 > 88) ? 13 : 14;\n\n            // calculate back the individual bytes (base256)\n            do {\n                b256Array.push(n % 256);\n                n >>= 8;\n                bitCount -= 8;\n            } while (bitCount > 7);\n        }\n\n        // Calculate the last byte if the input is odd\n        // and add it\n        if (odd) {\n            const lastChar = inArray.at(l);\n            const rN = charset.indexOf(lastChar);\n            b256Array.push(((rN << bitCount) + n) % 256);\n        }\n\n        const output = Uint8Array.from(b256Array);\n\n        // Return the output\n        return this.utils.outputHandler.compile(output, settings.outputType);\n    }\n\n\n    /**\n     * Divmod Function.\n     * @param {*} x - number 1\n     * @param {*} y - number 2\n     * @returns {number} Modulo y of x\n     */\n    #divmod (x, y) {\n        return [Math.floor(x/y), x%y];\n    }\n}\n","/**\n * [BaseEx|LEB128 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/leb-128.js}\n *\n * @version 0.8.1\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT\n */\n\nimport { BaseConverter, BaseTemplate } from \"../core.js\";\nimport { BytesInput } from \"../io-handlers.js\";\n\n/**\n * BaseEx Little Endian Base 128 Converter.\n * ---------------------------------------\n * \n * This is a leb128 converter. Various input can be \n * converted to a leb128 string or a leb128 string\n * can be decoded into various formats.\n * \n * There is no real charset available as the input is\n * getting converted to bytes. For having the chance \n * to store these bytes, there is a hexadecimal output\n * available.\n */\nexport default class LEB128 extends BaseTemplate {\n    \n    /**\n     * BaseEx LEB128 Constructor.\n     * @param {...string} [args] - Converter settings.\n     */\n    constructor(...args) {\n        // initialize base template without utils\n        super();\n\n        // converters\n        this.converter = new BaseConverter(10, 0, 0);\n        this.hexlify = new BaseConverter(16, 1, 2);\n\n        // charsets\n        this.charsets.default = \"<placeholder>\";\n        this.charsets.hex = \"<placeholder>\"\n\n        // predefined settings\n        this.version = \"default\";\n        this.frozenCharsets = true;\n\n        // predefined settings\n        this.littleEndian = true;\n        this.hasSignedMode = true;\n        this.isMutable.signed = true;\n\n        // apply user settings\n        this.utils.validateArgs(args, true);\n    }\n\n\n    /**\n     * BaseEx LEB128 Encoder.\n     * @param {*} input - Input according to the used byte converter.\n     * @param  {...str} [args] - Converter settings.\n     * @returns {{ buffer: ArrayBufferLike; }} - LEB128 encoded Unit8Array (or hex string of it).\n     */\n    encode(input, ...args) {\n        \n        // argument validation and input settings\n        const settings = this.utils.validateArgs(args);\n        \n        const signed = settings.signed;\n        settings.signed = true;\n        const [ inputBytes, negative, ] = this.utils.inputHandler.toBytes(input, settings);\n\n        // Convert to BaseRadix string\n        let base10 = this.converter.encode(inputBytes, null, settings.littleEndian)[0];\n\n        let n = BigInt(base10);\n        let output = new Array();\n        \n        if (negative) {\n            if (!signed) {\n                throw new TypeError(\"Negative values in unsigned mode are invalid.\");\n            }\n            n = -n;\n        }\n          \n        if (signed) {\n\n            for (;;) {\n                const byte = Number(n & 127n);\n                n >>= 7n;\n                if ((n == 0 && (byte & 64) == 0) || (n == -1 && (byte & 64) != 0)) {\n                    output.push(byte);\n                    break;\n                }\n                output.push(byte | 128);\n            }\n        }\n\n        else {\n            for (;;) {\n                const byte = Number(n & 127n);\n                n >>= 7n;\n                if (n == 0) {\n                    output.push(byte)\n                    break;\n                }\n                output.push(byte | 128);\n            }\n        }\n\n        const Uint8Output = Uint8Array.from(output);\n\n        if (settings.version === \"hex\") {\n            return this.hexlify.encode(Uint8Output, [...\"0123456789abcdef\"], false)[0];\n        }\n\n        return Uint8Output;\n    }\n\n\n    /**\n     * BaseEx LEB128 Decoder.\n     * @param {{ buffer: ArrayBufferLike; }|string} input - LEB128-Bytes or String of Hex-Version.\n     * @param  {...any} [args] - Converter settings.\n     * @returns {*} - Output according to converter settings.\n     */\n    decode(input, ...args) {\n        \n        // Argument validation and output settings\n        const settings = this.utils.validateArgs(args);\n\n        if (settings.version === \"hex\") {\n            input = this.hexlify.decode(this.utils.normalizeInput(input).toLowerCase(), [...\"0123456789abcdef\"], [], settings.integrity, false);\n        } else if (typeof input.byteLength !== \"undefined\") {\n            input = BytesInput.toBytes(input)[0];\n        } else {\n            throw new TypeError(\"Input must be a bytes like object.\");\n        }\n\n        if (input.length === 1 && !input[0]) {\n            return this.utils.outputHandler.compile(new Uint8Array(1), settings.outputType, true);\n        }\n\n        input = Array.from(input);\n\n        let n = 0n;\n        let shiftVal = -7n;\n        let byte;\n\n        for (byte of input) {\n            shiftVal += 7n;\n            n += (BigInt(byte & 127) << shiftVal);\n        }\n        \n        if (settings.signed && ((byte & 64) !== 0)) {\n            n |= -(1n << shiftVal + 7n);\n        }\n\n        // Test for a negative sign\n        let decimalNum, negative;\n        [decimalNum, negative] = this.utils.extractSign(n.toString());\n\n        const output = this.converter.decode(decimalNum, [...\"0123456789\"], [], settings.integrity, true);\n\n        // Return the output\n        return this.utils.outputHandler.compile(output, settings.outputType, true, negative);\n    }\n}\n","/**\n * [BaseEx|Ecoji Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/ecoji.js}\n *\n * @version 0.8.1\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT OR Apache-2.0\n * @see https://github.com/keith-turner/ecoji\n */\n\nimport { BaseConverter, BaseTemplate } from \"../core.js\";\nimport { DecodingError } from \"../utils.js\";\n\n/**\n * BaseEx Ecoji (a Base 1024) Converter.\n * ------------------------------------\n * This an implementation of the Ecoji converter.\n * Various input can be converted to an Ecoji string\n * or an Ecoji string can be decoded into various \n * formats. Versions 1 and 2 are supported.\n * This variant pretty much follows the standard\n * (at least in its results, the algorithm is very\n * different from the original).\n * A deviation is the handling of padding. The last\n * pad char can be trimmed for both versions and\n * additionally omitted completely if integrity\n * checks are disabled.\n */\nexport default class Ecoji extends BaseTemplate {\n\n    #revEmojiVersion = {};\n    #padRegex = null;\n\n    /**\n     * BaseEx Ecoji Constructor.\n     * @param {...string} [args] - Converter settings.\n     */\n    constructor(...args) {\n        super();\n\n        // charsets\n        this.charsets.emojis_v1 = [...\"🀄🃏🅰🅱🅾🅿🆎🆑🆒🆓🆔🆕🆖🆗🆘🆙🆚🇦🇧🇨🇩🇪🇫🇬🇭🇮🇯🇰🇱🇲🇳🇴🇵🇶🇷🇸🇹🇺🇻🇼🇽🇾🇿🈁🈂🈚🈯🈲🈳🈴🈵🈶🈷🈸🈹🈺🉐🉑🌀🌁🌂🌃🌄🌅🌆🌇🌈🌉🌊🌋🌌🌍🌎🌏🌐🌑🌒🌓🌔🌕🌖🌗🌘🌙🌚🌛🌜🌝🌞🌟🌠🌡🌤🌥🌦🌧🌨🌩🌪🌫🌬🌭🌮🌯🌰🌱🌲🌳🌴🌵🌶🌷🌸🌹🌺🌻🌼🌽🌾🌿🍀🍁🍂🍃🍄🍅🍆🍇🍈🍉🍊🍋🍌🍍🍎🍏🍐🍑🍒🍓🍔🍕🍖🍗🍘🍙🍚🍛🍜🍝🍞🍟🍠🍡🍢🍣🍤🍥🍦🍧🍨🍩🍪🍫🍬🍭🍮🍯🍰🍱🍲🍳🍴🍵🍶🍷🍸🍹🍺🍻🍼🍽🍾🍿🎀🎁🎂🎃🎄🎅🎆🎇🎈🎉🎊🎋🎌🎍🎎🎏🎐🎑🎒🎓🎖🎗🎙🎚🎛🎞🎟🎠🎡🎢🎣🎤🎥🎦🎧🎨🎩🎪🎫🎬🎭🎮🎯🎰🎱🎲🎳🎴🎵🎶🎷🎸🎹🎺🎻🎼🎽🎾🎿🏀🏁🏂🏃🏄🏅🏆🏇🏈🏉🏊🏋🏌🏎🏏🏐🏑🏒🏓🏔🏕🏖🏗🏘🏙🏚🏛🏜🏝🏞🏟🏠🏡🏢🏣🏤🏥🏦🏧🏨🏩🏪🏫🏬🏭🏮🏯🏰🏳🏴🏵🏷🏸🏹🏺🏻🏼🏽🏾🏿🐀🐁🐂🐃🐄🐅🐆🐇🐈🐉🐊🐋🐌🐍🐎🐏🐐🐑🐒🐓🐔🐕🐖🐗🐘🐙🐚🐛🐜🐝🐞🐟🐠🐡🐢🐣🐤🐥🐦🐧🐨🐩🐪🐫🐬🐭🐮🐯🐰🐱🐲🐳🐴🐵🐶🐷🐸🐹🐺🐻🐼🐽🐾🐿👀👁👂👃👄👅👆👇👈👉👊👋👌👍👎👏👐👑👒👓👔👕👖👗👘👙👚👛👜👝👞👟👠👡👢👣👤👥👦👧👨👩👪👫👬👭👮👯👰👱👲👳👴👵👶👷👸👹👺👻👼👽👾👿💀💁💂💃💄💅💆💇💈💉💊💋💌💍💎💏💐💑💒💓💔💕💖💗💘💙💚💛💜💝💞💟💠💡💢💣💤💥💦💧💨💩💪💫💬💭💮💯💰💱💲💳💴💵💶💷💸💹💺💻💼💽💾💿📀📁📂📃📄📅📆📇📈📉📊📋📌📍📎📏📐📒📓📔📕📖📗📘📙📚📛📜📝📞📟📠📡📢📣📤📥📦📧📨📩📪📫📬📭📮📯📰📱📲📳📴📵📶📷📸📹📺📻📼📽📿🔀🔁🔂🔃🔄🔅🔆🔇🔈🔉🔊🔋🔌🔍🔎🔏🔐🔑🔒🔓🔔🔕🔖🔗🔘🔙🔚🔛🔜🔝🔞🔟🔠🔡🔢🔣🔤🔥🔦🔧🔨🔩🔪🔫🔬🔭🔮🔯🔰🔱🔲🔳🔴🔵🔶🔷🔸🔹🔺🔻🔼🔽🕉🕊🕋🕌🕍🕎🕐🕑🕒🕓🕔🕕🕖🕗🕘🕙🕚🕛🕜🕝🕞🕟🕠🕡🕢🕣🕤🕥🕦🕧🕯🕰🕳🕴🕵🕶🕷🕸🕹🕺🖇🖊🖋🖌🖍🖐🖕🖖🖤🖥🖨🖱🖲🖼🗂🗃🗄🗑🗒🗓🗜🗝🗞🗡🗣🗨🗯🗳🗺🗻🗼🗽🗾🗿😀😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😑😒😓😔😕😖😗😘😙😚😛😜😝😞😟😠😡😢😣😤😥😦😧😨😩😪😫😬😭😮😯😰😱😲😳😴😵😶😷😸😹😺😻😼😽😾😿🙀🙁🙂🙃🙄🙅🙆🙇🙈🙉🙊🙌🙍🙎🙏🚀🚁🚂🚃🚄🚅🚆🚇🚈🚉🚊🚋🚌🚍🚎🚏🚐🚑🚒🚓🚔🚕🚖🚗🚘🚙🚚🚛🚜🚝🚞🚟🚠🚡🚢🚣🚤🚥🚦🚧🚨🚩🚪🚫🚬🚭🚮🚯🚰🚱🚲🚳🚴🚵🚶🚷🚸🚹🚺🚻🚼🚽🚾🚿🛀🛁🛂🛃🛄🛅🛋🛌🛍🛎🛏🛐🛑🛒🛠🛡🛢🛣🛤🛥🛩🛫🛬🛰🛳🛴🛵🛶🛷🛸🛹🤐🤑🤒🤓🤔🤕🤖🤗🤘🤙🤚🤛🤜🤝🤞🤟🤠🤡🤢🤣🤤🤥🤦🤧🤨🤩🤪🤫🤬🤭🤮🤯🤰🤱🤲🤳🤴🤵🤶🤷🤸🤹🤺🤼🤽🤾🥀🥁🥂🥃🥄🥅🥇🥈🥉🥊🥋🥌🥍🥎🥏🥐🥑🥒🥓🥔🥕🥖🥗🥘🥙🥚🥛🥜🥝🥞🥟🥠🥡🥢🥣🥤🥥🥦🥧🥨🥩🥪🥫🥬🥭🥮🥯🥰🥳🥴🥵🥶🥺🥼🥽🥾🥿🦀🦁🦂🦃🦄🦅🦆🦇🦈🦉🦊🦋🦌🦍🦎🦏🦐🦑🦒🦓🦔🦕🦖🦗🦘🦙🦚🦛🦜🦝🦞🦟🦠🦡🦢🦰🦱🦲🦳🦴🦵🦶🦷🦸🦹🧀🧁🧂🧐🧑🧒🧓🧔🧕\"];\n        this.padChars.emojis_v1 = [ \"⚜\", \"🏍\", \"📑\", \"🙋\", \"☕\" ];\n\n        this.charsets.emojis_v2 = [...\"🀄🃏⏰⏳☔♈♉♊♋♌♍♎♏♐♑♒♓♿⚓⚡⚽⚾⛄⛅⛎⛔⛪⛲⛳⛵⛺⛽✊✋✨⭐🛕🛖🛗🛝🛞🛟🛺🈁🛻🤌🤏🤿🥱🥲🥸🥹🥻🦣🦤🦥🦦🦧🌀🌁🌂🌃🌄🌅🌆🌇🌈🌉🌊🌋🌌🌍🌎🌏🌐🌑🌒🌓🌔🌕🌖🌗🌘🌙🌚🌛🌜🌝🌞🌟🌠🦨🦩🦪🦫🦬🦭🦮🦯🦺🦻🌭🌮🌯🌰🌱🌲🌳🌴🌵🦼🌷🌸🌹🌺🌻🌼🌽🌾🌿🍀🍁🍂🍃🍄🍅🍆🍇🍈🍉🍊🍋🍌🍍🍎🍏🍐🍑🍒🍓🍔🍕🍖🍗🍘🍙🍚🍛🍜🍝🍞🍟🍠🍡🍢🍣🍤🍥🍦🍧🍨🍩🍪🍫🍬🍭🍮🍯🍰🍱🍲🍳🍴🍵🍶🍷🍸🍹🍺🍻🍼🦽🍾🍿🎀🎁🎂🎃🎄🎅🎆🎇🎈🎉🎊🎋🎌🎍🎎🎏🎐🎑🎒🎓🦾🦿🧃🧄🧅🧆🧇🎠🎡🎢🎣🎤🎥🧈🎧🎨🎩🎪🎫🎬🎭🎮🎯🎰🎱🎲🎳🎴🎵🎶🎷🎸🎹🎺🎻🎼🎽🎾🎿🏀🏁🏂🏃🏄🏅🏆🏇🏈🏉🏊🧉🧊🧋🏏🏐🏑🏒🏓🧌🧍🧎🧏🧖🧗🧘🧙🧚🧛🧜🧝🏠🏡🏢🏣🏤🏥🏦🧞🏨🏩🏪🏫🏬🏭🏮🏯🏰🧟🏴🧠🧢🏸🏹🏺🧣🧤🧥🧦🧧🐀🐁🐂🐃🐄🐅🐆🐇🐈🐉🐊🐋🐌🐍🐎🐏🐐🐑🐒🐓🐔🐕🐖🐗🐘🐙🐚🐛🐜🐝🐞🐟🐠🐡🐢🐣🐤🐥🐦🐧🐨🐩🐪🐫🐬🐭🐮🐯🐰🐱🐲🐳🐴🐵🐶🐷🐸🐹🐺🐻🐼🐽🐾🧨👀🧩👂👃👄👅👆👇👈👉👊👋👌👍👎👏👐👑👒👓👔👕👖👗👘👙👚👛👜👝👞👟👠👡👢👣👤👥👦👧👨👩👪👫👬👭👮👯👰👱👲👳👴👵👶👷👸👹👺👻👼👽👾👿💀💁💂💃💄💅💆💇💈💉💊💋💌💍💎💏💐💑💒💓💔💕💖💗💘💙💚💛💜💝💞💟💠💡💢💣💤💥💦💧💨💩💪💫💬💭💮💯💰💱💲💳💴💵💶💷💸🧪💺💻💼💽💾💿📀🧫📂📃📄🧬📆📇📈📉📊📋📌📍📎📏📐📒📓📔📕📖📗📘📙📚📛📜📝📞📟📠📡📢📣📤📥📦📧📨📩📪📫📬📭📮📯📰📱📲📳🧭📵📶📷📸📹📺📻📼🧮📿🧯🧰🧱🧲🧳🔅🔆🔇🔈🔉🔊🔋🔌🔍🔎🔏🔐🔑🔒🔓🔔🔕🔖🔗🔘🧴🧵🧶🧷🧸🧹🧺🧻🧼🧽🧾🧿🔥🔦🔧🔨🔩🔪🔫🔬🔭🔮🔯🔰🔱🔲🔳🩰🩱🩲🩳🩴🩸🩹🩺🩻🩼🪀🪁🕋🕌🕍🕎🪂🪃🪄🪅🪆🪐🪑🪒🪓🪔🪕🪖🪗🪘🪙🪚🪛🪜🪝🪞🪟🪠🪡🪢🪣🪤🪥🪦🪧🪨🪩🪪🪫🕺🪬🪰🪱🪲🪳🪴🖕🖖🖤🪵🪶🪷🪸🪹🪺🫀🫁🫂🫃🫄🫅🫐🫑🫒🫓🫔🫕🫖🫗🗻🗼🗽🗾🗿😀😁😂😃😄😅😆😇😈😉😊😋😌😍😎😏😐😑😒😓😔😕😖😗😘😙😚😛😜😝😞😟😠😡😢😣😤😥😦😧😨😩😪😫😬😭😮😯😰😱😲😳😴😵😶😷😸😹😺😻😼😽😾😿🙀🙁🙂🙃🙄🙅🙆🙇🙈🙉🙊🙌🙍🙎🙏🚀🚁🚂🚃🚄🚅🚆🚇🚈🚉🚊🚋🚌🚍🚎🚏🚐🚑🚒🚓🚔🚕🚖🚗🚘🚙🚚🚛🚜🚝🚞🚟🚠🚡🚢🚣🚤🚥🚦🚧🚨🚩🚪🚫🚬🚭🚮🚯🚰🚱🚲🚳🚴🚵🚶🚷🚸🚹🚺🚻🚼🚽🚾🚿🛀🛁🛂🛃🛄🛅🫘🛌🫙🫠🫡🛐🛑🛒🫢🫣🫤🫥🫦🫧🫰🛫🛬🫱🫲🛴🛵🛶🛷🛸🛹🤐🤑🤒🤓🤔🤕🤖🤗🤘🤙🤚🤛🤜🤝🤞🤟🤠🤡🤢🤣🤤🤥🤦🤧🤨🤩🤪🤫🤬🤭🤮🤯🤰🤱🤲🤳🤴🤵🤶🤷🤸🤹🤺🤼🤽🤾🥀🥁🥂🥃🥄🥅🥇🥈🥉🥊🥋🥌🥍🥎🥏🥐🥑🥒🥓🥔🥕🥖🥗🥘🥙🥚🥛🥜🥝🥞🥟🥠🥡🥢🥣🥤🥥🥦🥧🥨🥩🥪🥫🥬🥭🥮🥯🥰🥳🥴🥵🥶🥺🥼🥽🥾🥿🦀🦁🦂🦃🦄🦅🦆🦇🦈🦉🦊🦋🦌🦍🦎🦏🦐🦑🦒🦓🦔🦕🦖🦗🦘🦙🦚🦛🦜🦝🦞🦟🦠🦡🦢🫳🫴🫵🫶🦴🦵🦶🦷🦸🦹🧀🧁🧂🧐🧑🧒🧓🧔🧕\"];\n        this.padChars.emojis_v2 = [ \"🥷\", \"🛼\", \"📑\", \"🙋\", \"☕\" ];\n      \n        // init mapping for decoding particularities of the two versions\n        this.#init();\n\n        // converter\n        this.converter = new BaseConverter(1024, 5, 4);\n\n        // predefined settings\n        this.padding = true;\n        this.padCharAmount = 5;\n        this.nonASCII = true;\n        this.version = \"emojis_v2\";\n        \n        // mutable extra args\n        this.isMutable.padding = true;\n        this.isMutable.trim = true;\n\n        // set trim option\n        this.trim = null;\n        this.utils.converterArgs.trim = [\"notrim\", \"trim\"];\n        \n        // apply user settings\n        this.utils.validateArgs(args, true);\n\n        if (this.trim === null) {\n            this.trim = this.version === \"emojis_v2\";\n        }\n    }\n\n\n    /**\n     * Analyzes v1 and two charsets for equal and non\n     * equal characters to create a \"revEmojiObj\" for\n     * decoding lookup. Also generates a RegExp object \n     * for handling concatenated strings.\n     */\n    #init() {\n\n        // Stores all padding for a regex generation.\n        const padAll = {};\n\n        // Creates an object which holds all characters\n        // of both versions. Unique chars for version one\n        // are getting the version value \"1\", version two \"2\"\n        // and overlaps \"3\". \n        const revEmojisAdd = (version, set) => {\n            set.forEach((char) => {\n                if (char in this.#revEmojiVersion) {\n                    this.#revEmojiVersion[char].version += version;\n                } else {\n                    this.#revEmojiVersion[char] = { version };\n                }\n            });\n        };\n\n        // This function adds a padding character of both\n        // versions to the object, with additional information\n        // about the padding type. In this process each unique\n        // padChar is also added to the \"padAll\" object. \n        const handlePadding = (version, set, type) => {\n            set.forEach(padChar => {\n            \n                if (padChar in padAll) {\n                    this.#revEmojiVersion[padChar].version = 3;\n                } else {\n                    this.#revEmojiVersion[padChar] = {\n                        version,\n                        padding: type\n                    }\n                    padAll[padChar] = type;\n                }    \n            });\n        };\n\n        revEmojisAdd(1, this.charsets.emojis_v1);\n        revEmojisAdd(2, this.charsets.emojis_v2);\n\n        handlePadding(1, this.padChars.emojis_v1.slice(0, -1), \"last\");\n        handlePadding(2, this.padChars.emojis_v2.slice(0, -1), \"last\");\n        handlePadding(1, this.padChars.emojis_v1.slice(-1), \"fill\");\n        handlePadding(2, this.padChars.emojis_v2.slice(-1), \"fill\");\n\n        \n        // Create an array of keys for the final regex\n        const regexArray = [];\n\n        for (const padChar in padAll) {\n            if (padAll[padChar] === \"last\") {\n                regexArray.push(padChar);\n            } else {\n                regexArray.push(`${padChar}+`);\n            }\n        }\n\n        // create a regex obj for matching all pad chars \n        this.#padRegex = new RegExp(regexArray.join(\"|\"), \"g\");\n    }\n\n\n    /**\n     * BaseEx Ecoji Encoder.\n     * @param {*} input - Input according to the used byte converter.\n     * @param  {...str} [args] - Converter settings.\n     * @returns {string} - Ecoji encoded string.\n     */\n    encode(input, ...args) {\n\n        const applyPadding = ({ output, settings, zeroPadding }) => {\n\n            const charset = this.charsets[settings.version];\n            let outArray = [...output];\n            \n            if (zeroPadding > 1) {\n                const padValue = this.converter.padBytes(zeroPadding);\n                if (settings.padding) {\n                    const padLen = settings.trim ? 1 : padValue;\n                    const padArr = new Array(padLen).fill(this.padChars[settings.version].at(-1));\n                    outArray.splice(outArray.length-padValue, padValue, ...padArr);\n                } else {\n                    outArray.splice(outArray.length-padValue, padValue);\n                }\n            }\n            \n            else if (zeroPadding === 1) {\n                const lastVal = charset.indexOf(outArray.pop());\n                const x = lastVal >> 8;\n                outArray.push(this.padChars[settings.version].at(x));\n            }\n\n            return outArray.join(\"\");\n        }\n        \n        return super.encode(input, null, applyPadding, ...args);\n    }\n\n    \n    /**\n     * BaseEx Ecoji Decoder.\n     * @param {string} input - Ecoji String.\n     * @param  {...any} [args] - Converter settings.\n     * @returns {*} - Output according to converter settings.\n     */\n    decode(input, ...args) {\n\n        // Argument validation and output settings\n        const settings = this.utils.validateArgs(args);\n        input = this.utils.normalizeInput(input);\n\n        let version = settings.version;\n        let versionKey = null;\n\n        if (settings.version === \"emojis_v1\" || settings.version === \"emojis_v2\") {\n            // versionKey can be both v1 or v2\n            versionKey = 3;\n        }\n\n        // the actual decoding is wrapped in a function\n        // for the possibility to call it multiple times\n        const decode = (input) => {\n\n            if (versionKey !== null) {\n                versionKey = this.#preDecode(input, versionKey, settings.integrity);\n                version = (versionKey === 3)\n                    ? settings.version\n                    : `emojis_v${versionKey}`;\n            }\n\n            const charset = this.charsets[version];\n            \n            const inArray = [...input];\n            const lastChar = inArray.at(-1);\n            let skipLast = false;\n\n            for (let i=0, l=this.padChars[version].length-1; i<l; i++) {                \n                if (lastChar === this.padChars[version].at(i)) {\n                    inArray.splice(-1, 1, charset.at(i << 8));\n                    input = inArray.join(\"\");\n                    skipLast = true;\n                    break;\n                }\n            }\n\n            let output = this.converter.decode(input,\n                this.charsets[version],\n                [],\n                false\n            );\n\n            if (skipLast) {\n                output = new Uint8Array(output.buffer.slice(0, -1));\n            }\n\n            return output;\n        }\n\n        const matchGroup = [...input.matchAll(this.#padRegex)];\n\n        // decode the input directly if no or just one \n        // match for padding was found\n        let output;\n        if (matchGroup.length < 2) {\n            output = decode(input);\n        }\n        \n        // otherwise decode every group separately and join it\n        // afterwards\n        else {\n\n            const preOutArray = [];\n            let start = 0;\n            \n            matchGroup.forEach(match => {\n                const end = match.index + match.at(0).length;\n                preOutArray.push(...decode(input.slice(start, end)));\n                start = end;\n            });\n\n            // in case the last group has no padding, it is not yet\n            // decoded -> do it now\n            if (start !== input.length) {\n                preOutArray.push(...decode(input.slice(start, input.length)));\n            }\n\n            output = Uint8Array.from(preOutArray);\n        }\n\n        return this.utils.outputHandler.compile(output, settings.outputType);\n    }\n\n\n    /**\n     * Determines the version (1/2) and analyzes the input for integrity.\n     * @param {string} input - Input string. \n     * @param {number} versionKey - Version key from former calls (initially always 3). \n     * @param {boolean} integrity - If false non standard or wrong padding gets ignored. \n     * @returns {number} - Version key (1|2|3)\n     */\n    #preDecode(input, versionKey, integrity) {\n \n        const inArray = [...input];\n        let sawPadding;\n\n        inArray.forEach((char, i) => {\n\n            if (char in this.#revEmojiVersion) {\n\n                const charVersion = this.#revEmojiVersion[char].version;\n\n                // version changes can only happen if the char is\n                // not in both versions (not 3)\n                if (charVersion !== 3) {\n                    if (versionKey === 3) {\n                        versionKey = charVersion;\n                    } else if (versionKey !== charVersion) {\n                        throw new TypeError(`Emojis from different ecoji versions seen : ${char} from emojis_v${charVersion}`);\n                    }\n                }\n\n                // analyze possible wrong padding if integrity checks\n                // are enabled\n                if (integrity) {\n                    const padding = this.#revEmojiVersion[char].padding;\n                    if (padding) {\n\n                        // index relative to a group of four bytes\n                        const relIndex = i%4;\n                        sawPadding = true;\n\n                        if (padding === \"fill\") {\n                            if (relIndex === 0) {\n                                throw new TypeError(`Padding unexpectedly seen in first position ${char}`);\n                            }\n                        } else if (relIndex !== 3) {\n                            throw new TypeError(`Last padding seen in unexpected position ${char}`);\n                        }\n                    }\n\n                    else if (sawPadding) {\n                        throw new TypeError(\"Unexpectedly saw non-padding after padding\");\n                    }\n                }\n\n            } else {\n                throw new DecodingError(char);\n            }\n        });\n\n        // lastly test for invalid string \n        if (integrity && inArray.length % 4) {\n            if (\n                versionKey === 1 ||\n                this.#revEmojiVersion[inArray.at(-1)].padding !== \"fill\"\n            ) {\n                throw new TypeError(\"Unexpected end of data, input data size not multiple of 4\");\n            }\n        }\n\n        return versionKey;\n    }\n}\n","/**\n * [BaseEx|Base2048 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-2048.js}\n *\n * @version 0.8.1\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT\n */\n\nimport { BaseTemplate } from \"../core.js\";\nimport { DecodingError } from \"../utils.js\";\n\n/**\n * BaseEx Base 2048 Converter.\n * ------------------------\n * This is a base2048/converter. Various input can be \n * converted to a hex string or a hex string can be\n * decoded into various formats. It is possible to \n * convert in both signed and unsigned mode.\n * \n * @see https://github.com/qntm/base2048\n */\nexport default class Base2048 extends BaseTemplate {\n\n    /**\n     * BaseEx Base2048 Constructor.\n     * @param {...string} [args] - Converter settings.\n     */\n    constructor(...args) {\n        super();\n\n        // converter (properties only)\n        this.converter = {\n            radix: 2048,\n            bsEnc: 11,\n            bsEncPad: 3,\n            bsDec: 8\n        }\n        \n        // default settings\n        this.charsets.default = [...\"89ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÆÐØÞßæðøþĐđĦħıĸŁłŊŋŒœŦŧƀƁƂƃƄƅƆƇƈƉƊƋƌƍƎƏƐƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟƢƣƤƥƦƧƨƩƪƫƬƭƮƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿǀǁǂǃǝǤǥǶǷȜȝȠȡȢȣȤȥȴȵȶȷȸȹȺȻȼȽȾȿɀɁɂɃɄɅɆɇɈɉɊɋɌɍɎɏɐɑɒɓɔɕɖɗɘəɚɛɜɝɞɟɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀʁʂʃʄʅʆʇʈʉʊʋʌʍʎʏʐʑʒʓʔʕʖʗʘʙʚʛʜʝʞʟʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯͰͱͲͳͶͷͻͼͽͿΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρςστυφχψωϏϗϘϙϚϛϜϝϞϟϠϡϢϣϤϥϦϧϨϩϪϫϬϭϮϯϳϷϸϺϻϼϽϾϿЂЄЅІЈЉЊЋЏАБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзиклмнопрстуфхцчшщъыьэюяђєѕіјљњћџѠѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯѰѱѲѳѴѵѸѹѺѻѼѽѾѿҀҁҊҋҌҍҎҏҐґҒғҔҕҖҗҘҙҚқҜҝҞҟҠҡҢңҤҥҦҧҨҩҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽҾҿӀӃӄӅӆӇӈӉӊӋӌӍӎӏӔӕӘәӠӡӨөӶӷӺӻӼӽӾӿԀԁԂԃԄԅԆԇԈԉԊԋԌԍԎԏԐԑԒԓԔԕԖԗԘԙԚԛԜԝԞԟԠԡԢԣԤԥԦԧԨԩԪԫԬԭԮԯԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖաբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆאבגדהוזחטיךכלםמןנסעףפץצקרשתװױײؠءابةتثجحخدذرزسشصضطظعغػؼؽؾؿفقكلمنهوىي٠١٢٣٤٥٦٧٨٩ٮٯٱٲٳٴٹٺٻټٽپٿڀځڂڃڄڅچڇڈډڊڋڌڍڎڏڐڑڒړڔڕږڗژڙښڛڜڝڞڟڠڡڢڣڤڥڦڧڨکڪګڬڭڮگڰڱڲڳڴڵڶڷڸڹںڻڼڽھڿہۃۄۅۆۇۈۉۊۋیۍێۏېۑےەۮۯ۰۱۲۳۴۵۶۷۸۹ۺۻۼۿܐܒܓܔܕܖܗܘܙܚܛܜܝܞܟܠܡܢܣܤܥܦܧܨܩܪܫܬܭܮܯݍݎݏݐݑݒݓݔݕݖݗݘݙݚݛݜݝݞݟݠݡݢݣݤݥݦݧݨݩݪݫݬݭݮݯݰݱݲݳݴݵݶݷݸݹݺݻݼݽݾݿހށނރބޅކއވމފދތލގޏސޑޒޓޔޕޖޗޘޙޚޛޜޝޞޟޠޡޢޣޤޥޱ߀߁߂߃߄߅߆߇߈߉ߊߋߌߍߎߏߐߑߒߓߔߕߖߗߘߙߚߛߜߝߞߟߠߡߢߣߤߥߦߧߨߩߪࠀࠁࠂࠃࠄࠅࠆࠇࠈࠉࠊࠋࠌࠍࠎࠏࠐࠑࠒࠓࠔࠕࡀࡁࡂࡃࡄࡅࡆࡇࡈࡉࡊࡋࡌࡍࡎࡏࡐࡑࡒࡓࡔࡕࡖࡗࡘࡠࡡࡢࡣࡤࡥࡦࡧࡨࡩࡪࢠࢡࢢࢣࢤࢥࢦࢧࢨࢩࢪࢫࢬࢭࢮࢯࢰࢱࢲࢳࢴࢶࢷࢸࢹࢺࢻࢼࢽऄअआइईउऊऋऌऍऎएऐऑऒओऔकखगघङचछजझञटठडढणतथदधनपफबभमयरलळवशषसहऽॐॠॡ०१२३४५६७८९ॲॳॴॵॶॷॸॹॺॻॼॽॾॿঀঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহঽৎৠৡ০১২৩৪৫৬৭৮৯ৰৱ৴৵৶৷৸৹ৼਅਆਇਈਉਊਏਐਓਔਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫਬਭਮਯਰਲਵਸਹੜ੦੧੨੩੪੫੬੭੮੯ੲੳੴઅઆઇઈઉઊઋઌઍએઐઑઓઔકખગઘઙચછજઝઞટઠડઢણતથદધનપફબભમયરલળવશષસહઽૐૠૡ૦૧૨૩૪૫૬૭૮૯ૹଅଆଇଈଉଊଋଌଏଐଓଔକଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଭମଯରଲଳଵଶଷସହଽୟୠୡ୦୧୨୩୪୫୬୭୮୯ୱ୲୳୴୵୶୷ஃஅஆஇஈஉஊஎஏஐஒஓகஙசஜஞடணதநனபமயரறலளழவஶஷஸஹௐ௦௧௨௩௪௫௬௭௮௯௰௱௲అఆఇఈఉఊఋఌఎఏఐఒఓఔకఖగఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరఱలళఴవశషసహఽౘౙౚౠౡ౦౧౨౩౪౫౬౭౮౯౸౹౺౻౼౽౾ಀಅಆಇಈಉಊಋಌಎಏಐಒಓಔಕಖಗಘಙಚಛಜಝಞಟಠಡಢಣತಥದಧನಪಫಬಭಮಯರಱಲಳವಶಷಸಹಽೞೠೡ೦೧೨೩೪೫೬೭೮೯ೱೲഅആഇഈഉഊഋഌഎഏഐഒഓഔകഖഗഘങചഛജഝഞടഠഡഢണതഥദധനഩപഫബഭമയരറലളഴവശഷസഹഺഽൎൔൕൖ൘൙൚൛൜൝൞ൟൠൡ൦൧൨൩൪൫൬൭൮൯൰൱൲൳൴൵൶൷൸ൺൻർൽൾൿඅආඇඈඉඊඋඌඍඎඏඐඑඒඓඔඕඖකඛගඝඞඟචඡජඣඤඥඦටඨඩඪණඬතථදධනඳපඵබභමඹයරලවශෂසහළෆ෦෧෨෩෪෫෬෭෮෯กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะาเแโใไๅ๐๑๒๓๔๕๖๗๘๙ກຂຄງຈຊຍດຕຖທນບປຜຝພຟມຢຣລວສຫອຮຯະາຽເແໂໃໄ໐໑໒໓໔໕໖໗໘໙ໞໟༀ༠༡༢༣༤༥༦༧༨༩༪༫༬༭༮༯༰༱༲༳ཀཁགངཅཆཇཉཊཋཌཎཏཐདནཔཕབམཙཚཛཝཞཟའཡརལཤཥསཧཨཪཫཬྈྉྊྋྌကခဂဃငစဆဇဈဉညဋဌဍဎဏတထဒဓနပဖဗဘမယရလဝသဟဠအဢဣဤဥဧဨဩဪဿ၀၁၂၃၄၅၆၇၈၉ၐၑၒၓၔၕ\"];\n        this.padChars.default = [...\"01234567\"];\n\n        this.padCharAmount = 8;\n        this.hasSignedMode = true;\n        this.littleEndian = false;\n        this.nonASCII = true;\n        \n        // apply user settings\n        this.utils.validateArgs(args, true);\n    }\n\n\n    /**\n     * BaseEx Base2048 Encoder.\n     * @param {*} input - Input according to the used byte converter.\n     * @param  {...str} [args] - Converter settings.\n     * @returns {string} - Base2048 encoded string.\n     */\n    encode(input, ...args) {\n\n        const settings = this.utils.validateArgs(args);\n        let inputBytes = this.utils.inputHandler.toBytes(input, settings).at(0);\n\n        const charset = this.charsets[settings.version];\n        const padChars = this.padChars[settings.version];\n\n        let output = \"\";\n        let z = 0;\n        let numZBits = 0;\n\n        inputBytes.forEach(uint8 => {\n            \n            for (let i=this.converter.bsDec-1; i>=0; i--) {\n\n                z = (z << 1) + ((uint8 >> i) & 1);\n                numZBits++;\n\n                if (numZBits === this.converter.bsEnc) {\n                    output += charset.at(z);\n                    z = 0\n                    numZBits = 0\n                }\n            }\n        });\n\n        if (numZBits !== 0) {\n            \n            let bitCount;\n            let isPadding;\n\n            if (numZBits <= this.converter.bsEncPad) {\n                bitCount = this.converter.bsEncPad;\n                isPadding = true;\n            } else {\n                bitCount = this.converter.bsEnc \n                isPadding = false;\n            }\n\n            while (numZBits !== bitCount) {\n                z = (z << 1) + 1\n                numZBits++\n                if (numZBits > this.converter.bsEnc) {\n                    throw new Error(\"Cannot process input. This is a bug!\");\n                }\n            }\n          \n            if (isPadding) { \n                output += padChars.at(z);\n            } else {\n                output += charset.at(z);\n            }\n        }\n\n        return this.utils.wrapOutput(output, settings.options.lineWrap);\n    }\n\n    \n    /**\n     * BaseEx Base2048 Decoder.\n     * @param {string} input - Base2048/Hex String.\n     * @param  {...any} [args] - Converter settings.\n     * @returns {*} - Output according to converter settings.\n     */\n    decode(input, ...args) {\n\n        // apply settings\n        const settings = this.utils.validateArgs(args);\n\n        // ensure a string input\n        input = this.utils.normalizeInput(input);\n        const inArray = [...input];\n\n        const charset = this.charsets[settings.version];\n        const padChars = this.padChars[settings.version];\n\n        const byteArray = new Array();\n        let uint8 = 0;\n        let numUint8Bits = 0;\n\n        inArray.forEach((c, i) => {\n\n            let numZBits;\n            let z = charset.indexOf(c);\n            if (z > -1) { \n                numZBits = this.converter.bsEnc;\n            } else {\n                z = padChars.indexOf(c);\n\n                if (z > -1) {\n                    if (i+1 !== inArray.length) {\n                        throw new DecodingError(null, `Secondary character found before end of input, index: ${i}`);    \n                    }\n\n                    numZBits = this.converter.bsEncPad;\n                }\n                \n                else if (settings.integrity) {\n                    throw new DecodingError(c);\n                }\n            }\n\n            // Take most significant bit first\n            for (let j=numZBits-1; j>=0; j--) {\n\n                uint8 = (uint8 << 1) + ((z >> j) & 1);\n                numUint8Bits++\n\n                if (numUint8Bits === this.converter.bsDec) {\n                    byteArray.push(uint8);\n                    uint8 = 0;\n                    numUint8Bits = 0;\n                }\n            }\n        });\n\n        return this.utils.outputHandler.compile(\n            Uint8Array.from(byteArray),\n            settings.outputType\n        );\n    }\n}\n","/**\n * [BaseEx|SimpleBase Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/simple-base.js}\n *\n * @version 0.8.1\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT\n */\n\nimport { BaseConverter, BaseTemplate } from \"../core.js\";\n\n\n/**\n * BaseEx SimpleBase Converter.\n * ---------------------------\n * SimpleBase provides the simple mathematical base\n * conversion as known from (n).toString(radix) and\n * parseInt(n, radix).\n * \n * The constructor needs a radix between 2-62 as the\n * first argument. In other regards it behaves pretty\n * much as any other converter. \n */\nexport default class SimpleBase extends BaseTemplate {\n    \n    /**\n     * SimpleBase Constructor.\n     * @param {number} radix - Radix between 2 and 62 \n     * @param  {...any} args - Converter settings.\n     */\n    constructor(radix, ...args) {\n        super();\n\n        if (!radix || !Number.isInteger(radix) || radix < 2 || radix > 62) {\n            throw new RangeError(\"Radix argument must be provided and has to be an integer between 2 and 62.\")\n        }\n        this.converter = new BaseConverter(radix, 0, 0);\n\n\n        // charsets\n        this.charsets.default = [...\"0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\"].slice(0, radix);\n    \n\n        // predefined settings\n        this.frozenCharsets = true;\n        this.hasSignedMode = true;\n        this.littleEndian = !(radix === 2 || radix === 16);\n        this.signed = true;\n        this.version = \"default\";\n        \n        // list of allowed/disallowed args to change\n        this.isMutable.littleEndian = true,\n        this.isMutable.upper = radix <= 36;\n\n        // apply user settings\n        this.utils.validateArgs(args, true);\n    }\n    \n\n    /**\n     * BaseEx SimpleBase Encoder.\n     * @param {*} input - Input according to the used byte converter.\n     * @param  {...any} [args] - Converter settings.\n     * @returns {string} - Base 2-62 encoded string.\n     */\n    encode(input, ...args) {\n        return super.encode(input, null, null, ...args);\n    }\n\n\n    /**\n     * BaseEx SimpleBase Decoder.\n     * @param {string} input - Base 2-62 String.\n     * @param  {...any} [args] - Converter settings.\n     * @returns {*} - Output according to converter settings.\n     */\n    decode(rawInput, ...args) {\n\n        // pre decoding function\n        const normalizeInput = ({ input }) => {\n            \n            // normalize input (add leading zeros) for base 2 and 16\n            if (this.converter.radix === 2) {\n                const leadingZeros = (8 - (input.length % 8)) % 8;\n                input = `${\"0\".repeat(leadingZeros)}${input}`;\n            } else if (this.converter.radix === 16) {\n                const leadingZeros = input.length % 2;\n                input = `${\"0\".repeat(leadingZeros)}${input}`;\n            }\n\n            return input;\n        }\n        \n        return super.decode(rawInput, normalizeInput, null, false, ...args);\n\n    }\n}\n","/**\n * big.js v6.2.1 // Copyright (c) 2022 Michael Mclaughlin // https://github.com/MikeMcl/big.js/LICENCE.md // Modified (reduced) and minified for BaseEx\n */\nlet DP=20,RM=1,MAX_DP=1e6,NE=-7,PE=21,STRICT=!1,NAME=\"[big.js] \",INVALID=NAME+\"Invalid \",INVALID_DP=INVALID+\"decimal places\",INVALID_RM=INVALID+\"rounding mode\",P={},NUMERIC=/^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;function _Big_(){function Big(n){let x=this;if(!(x instanceof Big))return void 0===n?_Big_():new Big(n);if(n instanceof Big)x.s=n.s,x.e=n.e,x.c=n.c.slice();else{if(\"string\"!=typeof n){if(!0===Big.strict&&\"bigint\"!=typeof n)throw TypeError(INVALID+\"value\");n=0===n&&1/n<0?\"-0\":String(n)}parse(x,n)}x.constructor=Big}return Big.prototype=P,Big.DP=DP,Big.RM=RM,Big.NE=NE,Big.PE=PE,Big.strict=STRICT,Big.roundDown=0,Big.roundHalfUp=1,Big.roundHalfEven=2,Big.roundUp=3,Big}function parse(x,n){let e,i,nl;if(!NUMERIC.test(n))throw Error(`${INVALID}number`);for(x.s=\"-\"==n.charAt(0)?(n=n.slice(1),-1):1,(e=n.indexOf(\".\"))>-1&&(n=n.replace(\".\",\"\")),(i=n.search(/e/i))>0?(e<0&&(e=i),e+=+n.slice(i+1),n=n.substring(0,i)):e<0&&(e=n.length),nl=n.length,i=0;i<nl&&\"0\"==n.charAt(i);)++i;if(i==nl)x.c=[x.e=0];else{for(;nl>0&&\"0\"==n.charAt(--nl););for(x.e=e-i-1,x.c=[],e=0;i<=nl;)x.c[e++]=+n.charAt(i++)}return x}function round(x,sd,rm,more){let xc=x.c;if(void 0===rm&&(rm=x.constructor.RM),0!==rm&&1!==rm&&2!==rm&&3!==rm)throw Error(INVALID_RM);if(sd<1)more=3===rm&&(more||!!xc[0])||0===sd&&(1===rm&&xc[0]>=5||2===rm&&(xc[0]>5||5===xc[0]&&(more||void 0!==xc[1]))),xc.length=1,more?(x.e=x.e-sd+1,xc[0]=1):xc[0]=x.e=0;else if(sd<xc.length){if(more=1===rm&&xc[sd]>=5||2===rm&&(xc[sd]>5||5===xc[sd]&&(more||void 0!==xc[sd+1]||1&xc[sd-1]))||3===rm&&(more||!!xc[0]),xc.length=sd,more)for(;++xc[--sd]>9;)if(xc[sd]=0,0===sd){++x.e,xc.unshift(1);break}for(sd=xc.length;!xc[--sd];)xc.pop()}return x}function stringify(x,doExponential,isNonzero){let e=x.e,s=x.c.join(\"\"),n=s.length;if(doExponential)s=s.charAt(0)+(n>1?\".\"+s.slice(1):\"\")+(e<0?\"e\":\"e+\")+e;else if(e<0){for(;++e;)s=\"0\"+s;s=\"0.\"+s}else if(e>0)if(++e>n)for(e-=n;e--;)s+=\"0\";else e<n&&(s=s.slice(0,e)+\".\"+s.slice(e));else n>1&&(s=s.charAt(0)+\".\"+s.slice(1));return x.s<0&&isNonzero?\"-\"+s:s}P.abs=function(){let x=new this.constructor(this);return x.s=1,x},P.cmp=function(y){let isneg,x=this,xc=x.c,yc=(y=new x.constructor(y)).c,i=x.s,j=y.s,k=x.e,l=y.e;if(!xc[0]||!yc[0])return xc[0]?i:yc[0]?-j:0;if(i!=j)return i;if(isneg=i<0,k!=l)return k>l^isneg?1:-1;for(j=(k=xc.length)<(l=yc.length)?k:l,i=-1;++i<j;)if(xc[i]!=yc[i])return xc[i]>yc[i]^isneg?1:-1;return k==l?0:k>l^isneg?1:-1},P.eq=function(y){return 0===this.cmp(y)},P.gt=function(y){return this.cmp(y)>0},P.gte=function(y){return this.cmp(y)>-1},P.lt=function(y){return this.cmp(y)<0},P.lte=function(y){return this.cmp(y)<1},P.minus=P.sub=function(y){let i,j,t,xlty,x=this,Big=x.constructor,a=x.s,b=(y=new Big(y)).s;if(a!=b)return y.s=-b,x.plus(y);let xc=x.c.slice(),xe=x.e,yc=y.c,ye=y.e;if(!xc[0]||!yc[0])return yc[0]?y.s=-b:xc[0]?y=new Big(x):y.s=1,y;if(a=xe-ye){for((xlty=a<0)?(a=-a,t=xc):(ye=xe,t=yc),t.reverse(),b=a;b--;)t.push(0);t.reverse()}else for(j=((xlty=xc.length<yc.length)?xc:yc).length,a=b=0;b<j;b++)if(xc[b]!=yc[b]){xlty=xc[b]<yc[b];break}if(xlty&&(t=xc,xc=yc,yc=t,y.s=-y.s),(b=(j=yc.length)-(i=xc.length))>0)for(;b--;)xc[i++]=0;for(b=i;j>a;){if(xc[--j]<yc[j]){for(i=j;i&&!xc[--i];)xc[i]=9;--xc[i],xc[j]+=10}xc[j]-=yc[j]}for(;0===xc[--b];)xc.pop();for(;0===xc[0];)xc.shift(),--ye;return xc[0]||(y.s=1,xc=[ye=0]),y.c=xc,y.e=ye,y},P.plus=P.add=function(y){let e,k,t,x=this,Big=x.constructor;if(y=new Big(y),x.s!=y.s)return y.s=-y.s,x.minus(y);let xe=x.e,xc=x.c,ye=y.e,yc=y.c;if(!xc[0]||!yc[0])return yc[0]||(xc[0]?y=new Big(x):y.s=x.s),y;if(xc=xc.slice(),e=xe-ye){for(e>0?(ye=xe,t=yc):(e=-e,t=xc),t.reverse();e--;)t.push(0);t.reverse()}for(xc.length-yc.length<0&&(t=yc,yc=xc,xc=t),e=yc.length,k=0;e;xc[e]%=10)k=(xc[--e]=xc[e]+yc[e]+k)/10|0;for(k&&(xc.unshift(k),++ye),e=xc.length;0===xc[--e];)xc.pop();return y.c=xc,y.e=ye,y},P.round=function(dp,rm){if(void 0===dp)dp=0;else if(dp!==~~dp||dp<-MAX_DP||dp>MAX_DP)throw Error(INVALID_DP);return round(new this.constructor(this),dp+this.e+1,rm)},P.toFixed=function(dp,rm){let x=this,n=x.c[0];if(void 0!==dp){if(dp!==~~dp||dp<0||dp>MAX_DP)throw Error(INVALID_DP);for(x=round(new x.constructor(x),dp+x.e+1,rm),dp=dp+x.e+1;x.c.length<dp;)x.c.push(0)}return stringify(x,!1,!!n)},P[Symbol.for(\"nodejs.util.inspect.custom\")]=P.toJSON=P.toString=function(){let x=this,Big=x.constructor;return stringify(x,x.e<=Big.NE||x.e>=Big.PE,!!x.c[0])},P.toNumber=function(){let n=Number(stringify(this,!0,!0));if(!0===this.constructor.strict&&!this.eq(n.toString()))throw Error(NAME+\"Imprecise conversion\");return n};export const Big=_Big_();export default Big;\n","/**\n * [BaseEx|BasePhi Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-phi.js}\n *\n * @version 0.8.1\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT\n */\n\nimport { BaseConverter, BaseTemplate } from \"../core.js\";\nimport Big from \"../../lib/big.js/big.min.js\";\nimport { DecodingError } from \"../utils.js\";\n\n/**\n * BaseEx Base Phi Converter.\n * ------------------------\n * \n * This is a base phi converter. Various input can be \n * converted to a base phi string or a base phi string\n * can be decoded into various formats.\n * \n */\nexport default class BasePhi extends BaseTemplate {\n\n    #Phi = Big(\"1.618033988749894848204586834365638117720309179805762862135448622705260462818902449707207204189391137484754088075386891752\");\n    \n    /**\n     * BaseEx basE91 Constructor.\n     * @param {...string} [args] - Converter settings.\n     */\n    constructor(...args) {\n        super();\n\n        // converter (properties only)\n        this.converter = {\n            radix: 2, // radix is Phi, but the normalized representation allows two chars\n            bsEnc: 0,\n            bsDec: 0\n        }\n\n        // base10 converter to have always have a numerical input \n        this.b10 = new BaseConverter(10, 0, 0);\n\n        // charsets\n        this.charsets.default = [\"0\", \"1\"];\n\n        this.version = \"default\";\n        this.signed = true;\n        this.hasDecimalMode = true;\n\n        // apply user settings\n        this.utils.validateArgs(args, true);\n    }\n\n\n    /**\n     * BaseEx BasePhi Encoder.\n     * @param {*} input - Input according to the used byte converter.\n     * @param  {...string} [args] - Converter settings.\n     * @returns {string} - BasePhi encoded string.\n     */\n    encode(input, ...args) {\n        \n        // argument validation and input settings\n        const settings = this.utils.validateArgs(args);\n        const charset = this.charsets[settings.version];\n        \n        let inputBytes;\n        let negative;\n        let n;\n        let output = \"\";\n\n        // Base Phi allows direct encoding of rational \n        // and irrational numbers, which can be enabled\n        // by using the special type \"decimal\". Input \n        // type must be \"Number\" for this mode. \n        if (settings.decimalMode) {\n            if (Number.isFinite(input)) {\n                if (input < 0) {\n                    negative = true;\n                    n = Big(-input);\n                } else {\n                    negative = false;\n                    n = Big(input);\n                }       \n            }\n\n            else {\n                throw new TypeError(\"When running the converter in decimal-mode, only input of type 'Number' is allowed.\")\n            }\n        }\n\n        // Every other type first converts the byte representation\n        // of the input to base 10.\n        else {\n            [ inputBytes, negative, ] = this.utils.inputHandler.toBytes(input, settings);\n            n = Big(\n                this.b10.encode(inputBytes, null, settings.littleEndian)[0]\n            );\n        }\n\n        // if \"n\" if 0 or 1 stop here and return 0 or 1 (according to the charset)\n        if (n.eq(0) || n.eq(1)) {\n            output = charset[n.toNumber()]; \n            if (negative) {\n                output = `-${output}`;\n            }           \n            return output;\n        }\n        \n        // create two arrays to store all exponents\n        const exponents = [];\n        const decExponents = [];\n\n\n        // The very first step is to find the highest exponent\n        // of Phi which fits into \"n\" (the rounded highest exponent\n        // is also the highest Lucas number which fits into \"n\")\n        // To find the highest fitting exponent start with \n        // Phi^0 (1) and Phi^1 (Phi).\n\n        let last = Big(1);\n        let cur = this.#Phi;\n        let exp = 0;\n        \n        // Now add the result with the last higher value \"cur\",\n        // util \"cur\" is bigger than \"n\"\n        while (cur.lt(n)) {\n            [ last, cur ] = this.#nextPhiExp(last, cur);\n            exp++;\n        }\n        \n        /**\n         * Recursive reduction function for \"n\". Finds the largest\n         * fitting exponent of Phi (Lucas index), stores that index\n         * in the exponent arrays and reduces \"n\" by the current exponents\n         * power.\n         * Once started, it calls itself until \"n\" is zero.  \n         * @param {Object} cur - Current result of Phi^exp as a Big.js object. \n         * @param {Object} prev - Previous result of Phi^exp as a Big.js object. \n         * @param {number} exp - Exponent of Phi/Lucas index. \n         */\n        const reduceN = (cur, prev, exp) => {\n\n            // Due to the high floating point precision \"n\" should\n            // be exactly zero, but if not, an approximation is \n            // sufficient.\n            if (this.#approxNull(n)) return;\n\n            // Reduce the exponents of Phi until it power fits into \"n\" \n            while (cur.gt(n)) {\n                [ cur, prev ] = this.#prevPhiExp(cur, prev);\n                \n                // if \"cur\" gets negative return immediately\n                // prevent an infinite loop\n                if (cur.lte(0)) {\n                    console.warn(\"Could not find an exact base-phi representation. Value is approximated.\");\n                    return;\n                }\n                exp--;\n            }\n\n            // Store the exponents\n            if (exp > -1) {\n                exponents.unshift(exp);\n            } else {\n                decExponents.push(exp);\n            }\n\n            // Reduce \"n\"\n            n = n.minus(cur);\n\n            reduceN(cur, prev, exp);\n        }\n\n        // Initial call of the reduction function\n        reduceN(last, cur, exp);\n\n\n        // Create a BasePhi string by setting a \"1\" at every\n        // index stored in the \"exponent\" array. for every\n        // number between two indices a zero is added. \n        exp = 0; \n        exponents.forEach(nExp => {\n            while (exp < nExp) {\n                output = `${charset[0]}${output}`;\n                exp++;\n            }\n            output = `${charset[1]}${output}`;\n            exp++;\n        });\n\n        // Add a decimal point\n        if (!output) {\n            output = \"0.\";\n        } else {\n            output += \".\";\n        }\n        \n        // Proceed with the decimal exponents\n        exp = -1;\n        decExponents.forEach(nExp => {\n            while (exp > nExp) {\n                output += charset[0];\n                exp--;\n            }\n            output += charset[1];\n            exp--;\n        });\n\n        // Add a \"-\" if the input is negative.\n        if (negative) {\n            output = `-${output}`;\n        }\n \n        return output;\n    }\n\n\n    /**\n     * BaseEx Base Phi Decoder.\n     * @param {string} input - Base Phi String.\n     * @param  {...any} [args] - Converter settings.\n     * @returns {*} - Output according to converter settings.\n     */\n     decode(input, ...args) {\n        \n        // Argument validation and output settings\n        const settings = this.utils.validateArgs(args);\n        const charset = this.charsets[settings.version];\n\n        let negative;\n        [ input, negative ] = this.utils.extractSign(\n            this.utils.normalizeInput(input)\n        );\n\n        // remove unwanted characters if integrity is false\n        if (!settings.integrity) {\n            const testChars = [...charset, \".\"];\n            input = [...input].filter(c => testChars.includes(c)).join(\"\");\n        }\n        \n        // Split the input String at the decimal sign\n        // and initialize a big.js-object with value 0\n        const inputSplit = input.split(\".\");\n        if (settings.integrity && inputSplit.length > 2) {\n            throw new DecodingError(null, \"There are multiple decimal points in the input.\");\n        } \n\n        const [ posExpStr, decExpStr ] = inputSplit;\n        let n = Big(0);\n\n        // Initialize two variables \"last\" and \"cur\"\n        // for Phi^exp-1 and Phi^exp\n        let last = this.#Phi.minus(1);\n        let cur = Big(1); \n        \n        // Convert the left side of the input string\n        // to an array of chars and reverse it. Raise\n        // the exponent of Phi and its values until a\n        // one is found in the array, if a \"1\" was found\n        // add the value \"cur\" to number \"n\" (one can\n        // also be another corresponding char of the set\n        // which represents 1).\n        [...posExpStr].reverse().forEach((char) => {\n            const charIndex = charset.indexOf(char);\n            if (charIndex === 1) {\n                n = n.plus(cur);\n            } else if (charIndex !== 0) {\n                throw new DecodingError(char);\n            }\n            [ last, cur ] = this.#nextPhiExp(last, cur);\n        });\n\n        // Now also add the values for the decimal places.\n        if (decExpStr) {      \n            let prev = Big(1); \n            cur = this.#Phi.minus(prev);\n            \n            [...decExpStr].forEach((char) => {\n                const charIndex = charset.indexOf(char);\n                if (charIndex === 1) {\n                    n = n.plus(cur);\n                } else if (charIndex !== 0) {\n                    throw new DecodingError(char);\n                }\n                [ cur, prev ] = this.#prevPhiExp(cur, prev);\n            });\n        }\n\n        // If running in decimal mode return n as a Number\n        if (settings.decimalMode) {\n            return n.toNumber();\n        }\n\n        // For every other case round \"n\" and turn it\n        // into a string of an integer. \n        n = n.round().toFixed();\n\n        // Use the base 10 decoder to get the byte\n        // representation of \"n\".\n        const output = this.b10.decode(n, [...\"0123456789\"], [], settings.integrity, settings.littleEndian);\n \n        // Return the output according to the settings.\n        return this.utils.outputHandler.compile(output, settings.outputType, settings.littleEndian, negative);\n    }\n\n    /**\n     * Test if n is approximately zero.\n     * @param {Object} n - Big.js Object. \n     * @returns {Boolean}\n     */\n    #approxNull(n) { \n        return !(n.round(50)\n            .abs()\n            .toNumber()\n        );\n    }\n    \n    /**\n     * Get the results of of the following exponents of Phi\n     * from the predecessors.\n     * @param {Object} last - Phi^exp-1 as a big.js-object \n     * @param {Object} cur - Phi^exp as a big.js-object\n     * @returns {Object[]} - Array with Phi^exp and Phi^exp+1\n     */\n    #nextPhiExp(last, cur) {\n        return [ cur, last.plus(cur) ];\n    }\n\n    /**\n     * Get the results of of the previous exponents of Phi\n     * from the predecessors.\n     * @param {Object} cur - Phi^exp as a big.js-object \n     * @param {Object} prev - Phi^exp-1 as a big.js-object\n     * @returns {Object[]} - Array with Phi^exp-1 and Phi^exp\n     */\n    #prevPhiExp(cur, prev) {\n        return [ prev.minus(cur), cur ];\n    }\n}\n","/**\n * [BaseEx|Byte Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/byte-converter.js}\n *\n * @version 0.8.1\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT\n */\n\nimport { SmartInput, SmartOutput } from \"../io-handlers.js\";\n\n// Endianness of the system\nconst LITTLE_ENDIAN = (() => {\n    const testInt = new Uint16Array([1]);\n    const byteRepresentation = new Uint8Array(testInt.buffer);\n    return Boolean(byteRepresentation.at(0));\n})();\n\n\n/**\n * BaseEx Byte Converter.\n * ---------------------\n * \n * This is a byte converter. Various input can be \n * converted to a bytes or bytes can be decoded into\n * various formats.\n * \n * As en- and decoder were already available, for the\n * use of converting in- and output for the base\n * converters, this is just a little extra tool, which\n * was fast and easy to create.\n */\nexport default class ByteConverter {\n\n    /**\n     * BaseEx ByteConverter Constructor.\n     * @param {...string} [args] - Converter settings.\n     */\n    constructor(...args) {\n\n        // predefined settings\n        this.littleEndian = LITTLE_ENDIAN;\n        this.numberMode = false;\n        this.outputType = \"buffer\";\n\n        // simplified utils\n        this.utils = {\n            validateArgs: (args, initial=false) => {\n\n                const parameters = {\n                    littleEndian: this.littleEndian,\n                    numberMode: this.numberMode,\n                    outputType: this.outputType,\n                    signed: false,\n                }\n        \n                if (!args.length) {\n                    return parameters;\n                }\n        \n                if (args.includes(\"number\")) {\n                    args.splice(args.indexOf(\"number\"), 1);\n                    parameters.numberMode = true;\n                    parameters.outputType = \"float_n\";\n                }\n        \n                const outTypes = SmartOutput.typeList.map(s => `'${s}'`).join(\", \");\n        \n                args.forEach((arg) => {\n                    arg = String(arg).toLowerCase();\n        \n                    if (arg === \"le\") {\n                        parameters.littleEndian = true;\n                    } else if (arg === \"be\") {\n                        parameters.littleEndian = false;\n                    } else if (SmartOutput.typeList.includes(arg)) {\n                        parameters.outputType = arg;\n                    } else {\n                        throw new TypeError(`Invalid argument: '${arg}.\\nValid arguments are:\\n'le', 'be', ${outTypes}`);\n                    }\n                });\n                \n                if (initial) {\n                    for (const param in parameters) {\n                        this[param] = parameters[param];\n                    }\n                }\n        \n                return parameters;\n            }\n        }\n\n        // apply user settings\n        this.utils.validateArgs(args, true);\n    }\n\n\n    /**\n     * BaseEx Byte Encoder.\n     * @param {*} input - Almost any input.\n     * @param  {...str} [args] - Converter settings.\n     * @returns {{ buffer: ArrayBufferLike; }} - Bytes of Input.\n     */\n    encode(input, ...args) {\n        const settings = this.utils.validateArgs(args);\n        return SmartInput.toBytes(input, settings)[0];\n    }\n\n\n    /**\n     * BaseEx Byte Decoder.\n     * @param {{ buffer: ArrayBufferLike; }} input - Bytes/Buffer/View\n     * @param  {...any} [args] - Converter settings.\n     * @returns {*} - Output of requested type.\n     */\n    decode(input, ...args) {\n        const settings = this.utils.validateArgs(args);\n        return SmartOutput.compile(input, settings.outputType, settings.littleEndian);\n    }\n}\n","/**\n * [BaseEx]{@link https://github.com/UmamiAppearance/BaseExJS}\n *\n * @version 0.8.1\n * @author UmamiAppearance [mail@umamiappearance.eu]\n * @license MIT\n */\n\n/* eslint-disable sort-imports */\n\nimport Base1         from \"./converters/base-1.js\";\nimport Base16        from \"./converters/base-16.js\";\nimport Base32        from \"./converters/base-32.js\";\nimport Base58        from \"./converters/base-58.js\";\nimport Base64        from \"./converters/base-64.js\";\nimport UUencode      from \"./converters/uuencode.js\";\nimport Base85        from \"./converters/base-85.js\";\nimport Base91        from \"./converters/base-91.js\";\nimport LEB128        from \"./converters/leb-128.js\";\nimport Ecoji         from \"./converters/ecoji.js\";\nimport Base2048      from \"./converters/base-2048.js\";\nimport SimpleBase    from \"./converters/simple-base.js\";\nimport BasePhi       from \"./converters/base-phi.js\";\nimport ByteConverter from \"./converters/byte-converter.js\";\n\nimport { DEFAULT_OUTPUT_HANDLER } from \"./utils.js\";\n\n/**\n * BaseEx Converter Collection.\n * ---------------------------\n * This class holds almost any available converter\n * of the whole BaseEx converter collection. The \n * instances are ready to use. Various input can be \n * converted to a base string or the base string can be\n * decoded into various formats.\n */\nclass BaseEx {\n    \n    /**\n     * BaseEx Base Collection Constructor.\n     * @param {string} [outputType] - Output type. \n     */\n    constructor(outputType=\"buffer\") {\n\n        if (!DEFAULT_OUTPUT_HANDLER.typeList.includes(outputType)) {\n            let message = `Invalid argument '${outputType}' for output type. Allowed types are:\\n`;\n            message = message.concat(DEFAULT_OUTPUT_HANDLER.typeList.join(\", \"));\n\n            throw new TypeError(message);\n        }\n\n        this.base1 = new Base1(\"default\", outputType);\n        this.base16 = new Base16(\"default\", outputType);\n        this.base32_crockford = new Base32(\"rfc4648\", outputType);\n        this.base32_rfc3548 = new Base32(\"rfc3548\", outputType);\n        this.base32_rfc4648 = new Base32(\"rfc4648\", outputType);\n        this.base32_zbase32 = new Base32(\"zbase32\", outputType);\n        this.base58 = new Base58(\"default\", outputType);\n        this.base58_bitcoin = new Base58(\"bitcoin\", outputType);\n        this.base58_flickr = new Base58(\"flickr\", outputType);\n        this.base64 = new Base64(\"default\", outputType);\n        this.base64_urlsafe = new Base64(\"urlsafe\", outputType);\n        this.uuencode = new UUencode(\"default\", outputType);\n        this.uuencode_original = new UUencode(\"original\", outputType);\n        this.xxencode = new UUencode(\"xx\", outputType);\n        this.base85_adobe = new Base85(\"adobe\", outputType);\n        this.base85_ascii = new Base85(\"ascii85\", outputType);\n        this.base85_z85 = new Base85(\"z85\", outputType);\n        this.base91 = new Base91(\"default\",outputType);\n        this.leb128 = new LEB128(\"default\", outputType);\n        this.ecoji_v1 = new Ecoji(\"emojis_v1\", outputType);\n        this.ecoji_v2 = new Ecoji(\"emojis_v2\", outputType);\n        this.base2048 = new Base2048(\"default\", outputType);\n        this.basePhi = new BasePhi(\"default\", outputType);\n        this.byteConverter = new ByteConverter(outputType);\n\n        this.simpleBase = {};\n        for (let i=2; i<=62; i++) {\n            this.simpleBase[`base${i}`] = new SimpleBase(i, outputType);\n        }\n    }\n}\n\nexport { \n    Base1,\n    Base16,\n    Base32,\n    Base58,\n    Base64,\n    UUencode,\n    Base85,\n    Base91,\n    LEB128,\n    Ecoji,\n    Base2048,\n    SimpleBase,\n    BasePhi,\n    ByteConverter,\n    BaseEx\n};\n"],"names":[],"mappings":"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AK,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAE,CAAC,OAAO,CAAC,CAAC,SAAS,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CA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"}