From d32c2969546bebad272325d937f0d9daabe3aed3 Mon Sep 17 00:00:00 2001 From: UmamiAppearance Date: Wed, 5 Jul 2023 22:07:37 +0200 Subject: [PATCH] Bump Dependencies --- cjs/base-ex.cjs | 30 ++-- cjs/base-ex.cjs.map | 2 +- dist/base-ex.esm.js | 30 ++-- dist/base-ex.esm.min.js | 2 +- dist/base-ex.iife.js | 30 ++-- dist/base-ex.iife.min.js | 2 +- dist/converters/Base1/base-1.esm.js | 2 +- dist/converters/Base1/base-1.esm.min.js | 2 +- dist/converters/Base1/base-1.iife.js | 2 +- dist/converters/Base1/base-1.iife.min.js | 2 +- dist/converters/Base16/base-16.esm.js | 2 +- dist/converters/Base16/base-16.esm.min.js | 2 +- dist/converters/Base16/base-16.iife.js | 2 +- dist/converters/Base16/base-16.iife.min.js | 2 +- dist/converters/Base2048/base-2048.esm.js | 2 +- dist/converters/Base2048/base-2048.esm.min.js | 2 +- dist/converters/Base2048/base-2048.iife.js | 2 +- .../converters/Base2048/base-2048.iife.min.js | 2 +- dist/converters/Base32/base-32.esm.js | 2 +- dist/converters/Base32/base-32.esm.min.js | 2 +- dist/converters/Base32/base-32.iife.js | 2 +- dist/converters/Base32/base-32.iife.min.js | 2 +- dist/converters/Base58/base-58.esm.js | 2 +- dist/converters/Base58/base-58.esm.min.js | 2 +- dist/converters/Base58/base-58.iife.js | 2 +- dist/converters/Base58/base-58.iife.min.js | 2 +- dist/converters/Base64/base-64.esm.js | 2 +- dist/converters/Base64/base-64.esm.min.js | 2 +- dist/converters/Base64/base-64.iife.js | 2 +- dist/converters/Base64/base-64.iife.min.js | 2 +- dist/converters/Base85/base-85.esm.js | 2 +- dist/converters/Base85/base-85.esm.min.js | 2 +- dist/converters/Base85/base-85.iife.js | 2 +- dist/converters/Base85/base-85.iife.min.js | 2 +- dist/converters/Base91/base-91.esm.js | 2 +- dist/converters/Base91/base-91.esm.min.js | 2 +- dist/converters/Base91/base-91.iife.js | 2 +- dist/converters/Base91/base-91.iife.min.js | 2 +- dist/converters/BasePhi/base-phi.esm.js | 2 +- dist/converters/BasePhi/base-phi.esm.min.js | 2 +- dist/converters/BasePhi/base-phi.iife.js | 2 +- dist/converters/BasePhi/base-phi.iife.min.js | 2 +- .../ByteConverter/byte-converter.esm.js | 2 +- .../ByteConverter/byte-converter.esm.min.js | 2 +- .../ByteConverter/byte-converter.iife.js | 2 +- .../ByteConverter/byte-converter.iife.min.js | 2 +- dist/converters/Ecoji/ecoji.esm.js | 2 +- dist/converters/Ecoji/ecoji.esm.min.js | 2 +- dist/converters/Ecoji/ecoji.iife.js | 2 +- dist/converters/Ecoji/ecoji.iife.min.js | 2 +- dist/converters/LEB128/leb-128.esm.js | 2 +- dist/converters/LEB128/leb-128.esm.min.js | 2 +- dist/converters/LEB128/leb-128.iife.js | 2 +- dist/converters/LEB128/leb-128.iife.min.js | 2 +- dist/converters/SimpleBase/simple-base.esm.js | 2 +- .../SimpleBase/simple-base.esm.min.js | 2 +- .../converters/SimpleBase/simple-base.iife.js | 2 +- .../SimpleBase/simple-base.iife.min.js | 2 +- dist/converters/UUencode/uuencode.esm.js | 2 +- dist/converters/UUencode/uuencode.esm.min.js | 2 +- dist/converters/UUencode/uuencode.iife.js | 2 +- dist/converters/UUencode/uuencode.iife.min.js | 2 +- package-lock.json | 154 +++++++++--------- package.json | 12 +- src/base-ex.js | 2 +- src/converters/base-1.js | 2 +- src/converters/base-16.js | 2 +- src/converters/base-2048.js | 2 +- src/converters/base-32.js | 2 +- src/converters/base-58.js | 2 +- src/converters/base-64.js | 2 +- src/converters/base-85.js | 2 +- src/converters/base-91.js | 2 +- src/converters/base-phi.js | 2 +- src/converters/byte-converter.js | 2 +- src/converters/ecoji.js | 2 +- src/converters/leb-128.js | 2 +- src/converters/simple-base.js | 2 +- src/converters/uuencode.js | 2 +- 79 files changed, 202 insertions(+), 202 deletions(-) diff --git a/cjs/base-ex.cjs b/cjs/base-ex.cjs index 57ba4dd..a24fffe 100644 --- a/cjs/base-ex.cjs +++ b/cjs/base-ex.cjs @@ -1466,7 +1466,7 @@ class BaseTemplate { /** * [BaseEx|Base1 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-1.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -1623,7 +1623,7 @@ class Base1 extends BaseTemplate { /** * [BaseEx|Base16 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-16.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -1712,7 +1712,7 @@ class Base16 extends BaseTemplate { /** * [BaseEx|Base32 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-32.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -1818,7 +1818,7 @@ class Base32 extends BaseTemplate { /** * [BaseEx|Base58 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-58.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -1969,7 +1969,7 @@ class Base58 extends BaseTemplate{ /** * [BaseEx|Base64 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-64.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -2058,7 +2058,7 @@ class Base64 extends BaseTemplate { /** * [BaseEx|UUencode Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/uuencode.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -2298,7 +2298,7 @@ const calcUUStrLen = byteCount => { /** * [BaseEx|Base85 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-85.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -2422,7 +2422,7 @@ class Base85 extends BaseTemplate { /** * [BaseEx|Base91 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-91.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT AND BSD-3-Clause (Base91, Copyright (c) 2000-2006 Joachim Henke) */ @@ -2656,7 +2656,7 @@ class Base91 extends BaseTemplate { /** * [BaseEx|LEB128 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/leb-128.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -2822,7 +2822,7 @@ class LEB128 extends BaseTemplate { /** * [BaseEx|Ecoji Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/ecoji.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT OR Apache-2.0 * @see https://github.com/keith-turner/ecoji @@ -3166,7 +3166,7 @@ class Ecoji extends BaseTemplate { /** * [BaseEx|Base2048 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-2048.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -3346,7 +3346,7 @@ class Base2048 extends BaseTemplate { /** * [BaseEx|SimpleBase Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/simple-base.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -3447,7 +3447,7 @@ let DP=20,RM=1,MAX_DP=1e6,NE=-7,PE=21,STRICT=!1,NAME="[big.js] ",INVALID=NAME+"I /** * [BaseEx|BasePhi Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-phi.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -3785,7 +3785,7 @@ class BasePhi extends BaseTemplate { /** * [BaseEx|Byte Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/byte-converter.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -3904,7 +3904,7 @@ class ByteConverter { /** * [BaseEx]{@link https://github.com/UmamiAppearance/BaseExJS} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/cjs/base-ex.cjs.map b/cjs/base-ex.cjs.map index c257f7c..918e693 100644 --- a/cjs/base-ex.cjs.map +++ b/cjs/base-ex.cjs.map @@ -1 +1 @@ -{"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= 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 {\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.7.9\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 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 \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.7.9\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.7.9\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.7.9\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.7.9\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) { \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.7.9\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.7.9\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 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.7.9\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 = \"\";\n this.charsets.hex = \"\"\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.7.9\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 {\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.7.9\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.7.9\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;i0&&\"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=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 e1&&(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;++iyc[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.length0)for(;b--;)xc[i++]=0;for(b=i;j>a;){if(xc[--j]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=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.7.9\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.7.9\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.7.9\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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"} \ No newline at end of file +{"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= 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 {\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 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 \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) { \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 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 = \"\";\n this.charsets.hex = \"\"\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 {\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;i0&&\"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=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 e1&&(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;++iyc[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.length0)for(;b--;)xc[i++]=0;for(b=i;j>a;){if(xc[--j]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=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,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,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,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAE,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAQ,MAAM,GAAG,CAAC,KAAK,EAAE;;ACHx+I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,MAAM,OAAO,SAAS,YAAY,CAAC;AAClD;AACA,IAAI,IAAI,GAAG,GAAG,CAAC,4HAA4H,CAAC,CAAC;AAC7I;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,GAAG,IAAI,EAAE;AACzB,QAAQ,KAAK,EAAE,CAAC;AAChB;AACA;AACA,QAAQ,IAAI,CAAC,SAAS,GAAG;AACzB,YAAY,KAAK,EAAE,CAAC;AACpB,YAAY,KAAK,EAAE,CAAC;AACpB,YAAY,KAAK,EAAE,CAAC;AACpB,UAAS;AACT;AACA;AACA,QAAQ,IAAI,CAAC,GAAG,GAAG,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC/C;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3C;AACA,QAAQ,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;AACjC,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AAC3B,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AACnC;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE;AAC3B;AACA;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACvD,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACxD;AACA,QAAQ,IAAI,UAAU,CAAC;AACvB,QAAQ,IAAI,QAAQ,CAAC;AACrB,QAAQ,IAAI,CAAC,CAAC;AACd,QAAQ,IAAI,MAAM,GAAG,EAAE,CAAC;AACxB;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE;AAClC,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AACxC,gBAAgB,IAAI,KAAK,GAAG,CAAC,EAAE;AAC/B,oBAAoB,QAAQ,GAAG,IAAI,CAAC;AACpC,oBAAoB,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;AACpC,iBAAiB,MAAM;AACvB,oBAAoB,QAAQ,GAAG,KAAK,CAAC;AACrC,oBAAoB,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;AACnC,iBAAiB;AACjB,aAAa;AACb;AACA,iBAAiB;AACjB,gBAAgB,MAAM,IAAI,SAAS,CAAC,qFAAqF,CAAC;AAC1H,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,YAAY,EAAE,UAAU,EAAE,QAAQ,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AACzF,YAAY,CAAC,GAAG,GAAG;AACnB,gBAAgB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC3E,aAAa,CAAC;AACd,SAAS;AACT;AACA;AACA,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAChC,YAAY,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC3C,YAAY,IAAI,QAAQ,EAAE;AAC1B,gBAAgB,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AACtC,aAAa;AACb,YAAY,OAAO,MAAM,CAAC;AAC1B,SAAS;AACT;AACA;AACA,QAAQ,MAAM,SAAS,GAAG,EAAE,CAAC;AAC7B,QAAQ,MAAM,YAAY,GAAG,EAAE,CAAC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1B,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;AAC5B,QAAQ,IAAI,GAAG,GAAG,CAAC,CAAC;AACpB;AACA;AACA;AACA,QAAQ,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC1B,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACxD,YAAY,GAAG,EAAE,CAAC;AAClB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,KAAK;AAC5C;AACA;AACA;AACA;AACA,YAAY,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO;AAC5C;AACA;AACA,YAAY,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;AAC9B,gBAAgB,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5D;AACA;AACA;AACA,gBAAgB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;AAChC,oBAAoB,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;AAC5G,oBAAoB,OAAO;AAC3B,iBAAiB;AACjB,gBAAgB,GAAG,EAAE,CAAC;AACtB,aAAa;AACb;AACA;AACA,YAAY,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;AAC1B,gBAAgB,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACvC,aAAa,MAAM;AACnB,gBAAgB,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvC,aAAa;AACb;AACA;AACA,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7B;AACA,YAAY,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;AACpC,UAAS;AACT;AACA;AACA,QAAQ,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC;AACA;AACA;AACA;AACA;AACA,QAAQ,GAAG,GAAG,CAAC,CAAC;AAChB,QAAQ,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI;AAClC,YAAY,OAAO,GAAG,GAAG,IAAI,EAAE;AAC/B,gBAAgB,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAClD,gBAAgB,GAAG,EAAE,CAAC;AACtB,aAAa;AACb,YAAY,MAAM,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAC9C,YAAY,GAAG,EAAE,CAAC;AAClB,SAAS,CAAC,CAAC;AACX;AACA;AACA,QAAQ,IAAI,CAAC,MAAM,EAAE;AACrB,YAAY,MAAM,GAAG,IAAI,CAAC;AAC1B,SAAS,MAAM;AACf,YAAY,MAAM,IAAI,GAAG,CAAC;AAC1B,SAAS;AACT;AACA;AACA,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC;AACjB,QAAQ,YAAY,CAAC,OAAO,CAAC,IAAI,IAAI;AACrC,YAAY,OAAO,GAAG,GAAG,IAAI,EAAE;AAC/B,gBAAgB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AACrC,gBAAgB,GAAG,EAAE,CAAC;AACtB,aAAa;AACb,YAAY,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;AACjC,YAAY,GAAG,EAAE,CAAC;AAClB,SAAS,CAAC,CAAC;AACX;AACA;AACA,QAAQ,IAAI,QAAQ,EAAE;AACtB,YAAY,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAClC,SAAS;AACT;AACA,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE;AAC5B;AACA;AACA,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACvD,QAAQ,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACxD;AACA,QAAQ,IAAI,QAAQ,CAAC;AACrB,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW;AACpD,YAAY,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5C,SAAS,CAAC;AACV;AACA;AACA,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE;AACjC,YAAY,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,CAAC,CAAC;AAChD,YAAY,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC3E,SAAS;AACT;AACA;AACA;AACA,QAAQ,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC5C,QAAQ,IAAI,QAAQ,CAAC,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AACzD,YAAY,MAAM,IAAI,aAAa,CAAC,IAAI,EAAE,iDAAiD,CAAC,CAAC;AAC7F,SAAS;AACT;AACA,QAAQ,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,UAAU,CAAC;AACpD,QAAQ,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACvB;AACA;AACA;AACA,QAAQ,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACtC,QAAQ,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACnD,YAAY,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACpD,YAAY,IAAI,SAAS,KAAK,CAAC,EAAE;AACjC,gBAAgB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,aAAa,MAAM,IAAI,SAAS,KAAK,CAAC,EAAE;AACxC,gBAAgB,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;AAC9C,aAAa;AACb,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AACxD,SAAS,CAAC,CAAC;AACX;AACA;AACA,QAAQ,IAAI,SAAS,EAAE;AACvB,YAAY,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAY,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxC;AACA,YAAY,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAC7C,gBAAgB,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACxD,gBAAgB,IAAI,SAAS,KAAK,CAAC,EAAE;AACrC,oBAAoB,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,iBAAiB,MAAM,IAAI,SAAS,KAAK,CAAC,EAAE;AAC5C,oBAAoB,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;AAClD,iBAAiB;AACjB,gBAAgB,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AAC5D,aAAa,CAAC,CAAC;AACf,SAAS;AACT;AACA;AACA,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE;AAClC,YAAY,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;AAChC,SAAS;AACT;AACA;AACA;AACA,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC;AAChC;AACA;AACA;AACA,QAAQ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC5G;AACA;AACA,QAAQ,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;AAC9G,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,CAAC,EAAE;AACnB,QAAQ,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AAC5B,aAAa,GAAG,EAAE;AAClB,aAAa,QAAQ,EAAE;AACvB,SAAS,CAAC;AACV,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE;AAC3B,QAAQ,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AACvC,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE;AAC3B,QAAQ,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC;AACxC,KAAK;AACL;;ACnVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA,MAAM,aAAa,GAAG,CAAC,MAAM;AAC7B,IAAI,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,IAAI,MAAM,kBAAkB,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC9D,IAAI,OAAO,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC,GAAG,CAAC;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe,MAAM,aAAa,CAAC;AACnC;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,GAAG,IAAI,EAAE;AACzB;AACA;AACA,QAAQ,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC;AAC1C,QAAQ,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAChC,QAAQ,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;AACnC;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG;AACrB,YAAY,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,KAAK;AACnD;AACA,gBAAgB,MAAM,UAAU,GAAG;AACnC,oBAAoB,YAAY,EAAE,IAAI,CAAC,YAAY;AACnD,oBAAoB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC/C,oBAAoB,UAAU,EAAE,IAAI,CAAC,UAAU;AAC/C,oBAAoB,MAAM,EAAE,KAAK;AACjC,kBAAiB;AACjB;AACA,gBAAgB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAClC,oBAAoB,OAAO,UAAU,CAAC;AACtC,iBAAiB;AACjB;AACA,gBAAgB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAC7C,oBAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3D,oBAAoB,UAAU,CAAC,UAAU,GAAG,IAAI,CAAC;AACjD,oBAAoB,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC;AACtD,iBAAiB;AACjB;AACA,gBAAgB,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpF;AACA,gBAAgB,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACtC,oBAAoB,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AACpD;AACA,oBAAoB,IAAI,GAAG,KAAK,IAAI,EAAE;AACtC,wBAAwB,UAAU,CAAC,YAAY,GAAG,IAAI,CAAC;AACvD,qBAAqB,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;AAC7C,wBAAwB,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC;AACxD,qBAAqB,MAAM,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACnE,wBAAwB,UAAU,CAAC,UAAU,GAAG,GAAG,CAAC;AACpD,qBAAqB,MAAM;AAC3B,wBAAwB,MAAM,IAAI,SAAS,CAAC,CAAC,mBAAmB,EAAE,GAAG,CAAC,qCAAqC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AACzH,qBAAqB;AACrB,iBAAiB,CAAC,CAAC;AACnB;AACA,gBAAgB,IAAI,OAAO,EAAE;AAC7B,oBAAoB,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE;AACpD,wBAAwB,IAAI,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AACxD,qBAAqB;AACrB,iBAAiB;AACjB;AACA,gBAAgB,OAAO,UAAU,CAAC;AAClC,aAAa;AACb,UAAS;AACT;AACA;AACA,QAAQ,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC5C,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE;AAC3B,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACvD,QAAQ,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE;AAC3B,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACvD,QAAQ,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;AACtF,KAAK;AACL;;ACtHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,MAAM,CAAC;AACb;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE;AACrC;AACA,QAAQ,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACnE,YAAY,IAAI,OAAO,GAAG,CAAC,kBAAkB,EAAE,UAAU,CAAC,uCAAuC,CAAC,CAAC;AACnG,YAAY,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACjF;AACA,YAAY,MAAM,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC;AACzC,SAAS;AACT;AACA,QAAQ,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACtD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,gBAAgB,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAClE,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,cAAc,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAChE,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,iBAAiB,GAAG,IAAI,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACtE,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AACvD,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,YAAY,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC9D,QAAQ,IAAI,CAAC,UAAU,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACvD,QAAQ,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACxD,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAC3D,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;AAC3D,QAAQ,IAAI,CAAC,QAAQ,GAAG,IAAI,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC5D,QAAQ,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC1D,QAAQ,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,UAAU,CAAC,CAAC;AAC3D;AACA,QAAQ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AAC7B,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;AAClC,YAAY,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,UAAU,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;AACxE,SAAS;AACT,KAAK;AACL;;;;;;;;;;;;;;;;;;"} \ No newline at end of file diff --git a/dist/base-ex.esm.js b/dist/base-ex.esm.js index 6c170d8..24f2f80 100644 --- a/dist/base-ex.esm.js +++ b/dist/base-ex.esm.js @@ -1464,7 +1464,7 @@ class BaseTemplate { /** * [BaseEx|Base1 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-1.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -1621,7 +1621,7 @@ class Base1 extends BaseTemplate { /** * [BaseEx|Base16 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-16.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -1710,7 +1710,7 @@ class Base16 extends BaseTemplate { /** * [BaseEx|Base32 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-32.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -1816,7 +1816,7 @@ class Base32 extends BaseTemplate { /** * [BaseEx|Base58 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-58.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -1967,7 +1967,7 @@ class Base58 extends BaseTemplate{ /** * [BaseEx|Base64 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-64.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -2056,7 +2056,7 @@ class Base64 extends BaseTemplate { /** * [BaseEx|UUencode Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/uuencode.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -2296,7 +2296,7 @@ const calcUUStrLen = byteCount => { /** * [BaseEx|Base85 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-85.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -2420,7 +2420,7 @@ class Base85 extends BaseTemplate { /** * [BaseEx|Base91 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-91.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT AND BSD-3-Clause (Base91, Copyright (c) 2000-2006 Joachim Henke) */ @@ -2654,7 +2654,7 @@ class Base91 extends BaseTemplate { /** * [BaseEx|LEB128 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/leb-128.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -2820,7 +2820,7 @@ class LEB128 extends BaseTemplate { /** * [BaseEx|Ecoji Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/ecoji.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT OR Apache-2.0 * @see https://github.com/keith-turner/ecoji @@ -3164,7 +3164,7 @@ class Ecoji extends BaseTemplate { /** * [BaseEx|Base2048 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-2048.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -3344,7 +3344,7 @@ class Base2048 extends BaseTemplate { /** * [BaseEx|SimpleBase Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/simple-base.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -3445,7 +3445,7 @@ let DP=20,RM=1,MAX_DP=1e6,NE=-7,PE=21,STRICT=!1,NAME="[big.js] ",INVALID=NAME+"I /** * [BaseEx|BasePhi Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-phi.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -3783,7 +3783,7 @@ class BasePhi extends BaseTemplate { /** * [BaseEx|Byte Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/byte-converter.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -3902,7 +3902,7 @@ class ByteConverter { /** * [BaseEx]{@link https://github.com/UmamiAppearance/BaseExJS} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/base-ex.esm.min.js b/dist/base-ex.esm.min.js index 94cf675..3144e87 100644 --- a/dist/base-ex.esm.min.js +++ b/dist/base-ex.esm.min.js @@ -2,7 +2,7 @@ class t{static toBytes(t){return!ArrayBuffer.isView(t)||"undefined"!=typeof Buff /** * [BaseEx]{@link https://github.com/UmamiAppearance/BaseExJS} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */class z{constructor(t="buffer"){if(!n.typeList.includes(t)){let e=`Invalid argument '${t}' for output type. Allowed types are:\n`;throw e=e.concat(n.typeList.join(", ")),new TypeError(e)}this.base1=new u("default",t),this.base16=new d("default",t),this.base32_crockford=new f("rfc4648",t),this.base32_rfc3548=new f("rfc3548",t),this.base32_rfc4648=new f("rfc4648",t),this.base32_zbase32=new f("zbase32",t),this.base58=new p("default",t),this.base58_bitcoin=new p("bitcoin",t),this.base58_flickr=new p("flickr",t),this.base64=new g("default",t),this.base64_urlsafe=new g("urlsafe",t),this.uuencode=new b("default",t),this.uuencode_original=new b("original",t),this.xxencode=new b("xx",t),this.base85_adobe=new v("adobe",t),this.base85_ascii=new v("ascii85",t),this.base85_z85=new v("z85",t),this.base91=new E("default",t),this.leb128=new A("default",t),this.ecoji_v1=new x("emojis_v1",t),this.ecoji_v2=new x("emojis_v2",t),this.base2048=new T("default",t),this.basePhi=new D("default",t),this.byteConverter=new O(t),this.simpleBase={};for(let e=2;e<=62;e++)this.simpleBase[`base${e}`]=new M(e,t)}}export{u as Base1,d as Base16,T as Base2048,f as Base32,p as Base58,g as Base64,v as Base85,E as Base91,z as BaseEx,D as BasePhi,O as ByteConverter,x as Ecoji,A as LEB128,M as SimpleBase,b as UUencode}; diff --git a/dist/base-ex.iife.js b/dist/base-ex.iife.js index 66e2793..1c7da59 100644 --- a/dist/base-ex.iife.js +++ b/dist/base-ex.iife.js @@ -1467,7 +1467,7 @@ var BaseEx = (function (exports) { /** * [BaseEx|Base1 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-1.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -1624,7 +1624,7 @@ var BaseEx = (function (exports) { /** * [BaseEx|Base16 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-16.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -1713,7 +1713,7 @@ var BaseEx = (function (exports) { /** * [BaseEx|Base32 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-32.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -1819,7 +1819,7 @@ var BaseEx = (function (exports) { /** * [BaseEx|Base58 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-58.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -1970,7 +1970,7 @@ var BaseEx = (function (exports) { /** * [BaseEx|Base64 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-64.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -2059,7 +2059,7 @@ var BaseEx = (function (exports) { /** * [BaseEx|UUencode Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/uuencode.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -2299,7 +2299,7 @@ var BaseEx = (function (exports) { /** * [BaseEx|Base85 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-85.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -2423,7 +2423,7 @@ var BaseEx = (function (exports) { /** * [BaseEx|Base91 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-91.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT AND BSD-3-Clause (Base91, Copyright (c) 2000-2006 Joachim Henke) */ @@ -2657,7 +2657,7 @@ var BaseEx = (function (exports) { /** * [BaseEx|LEB128 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/leb-128.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -2823,7 +2823,7 @@ var BaseEx = (function (exports) { /** * [BaseEx|Ecoji Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/ecoji.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT OR Apache-2.0 * @see https://github.com/keith-turner/ecoji @@ -3167,7 +3167,7 @@ var BaseEx = (function (exports) { /** * [BaseEx|Base2048 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-2048.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -3347,7 +3347,7 @@ var BaseEx = (function (exports) { /** * [BaseEx|SimpleBase Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/simple-base.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -3448,7 +3448,7 @@ var BaseEx = (function (exports) { /** * [BaseEx|BasePhi Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-phi.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -3786,7 +3786,7 @@ var BaseEx = (function (exports) { /** * [BaseEx|Byte Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/byte-converter.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ @@ -3905,7 +3905,7 @@ var BaseEx = (function (exports) { /** * [BaseEx]{@link https://github.com/UmamiAppearance/BaseExJS} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/base-ex.iife.min.js b/dist/base-ex.iife.min.js index 88b1ac2..c069c45 100644 --- a/dist/base-ex.iife.min.js +++ b/dist/base-ex.iife.min.js @@ -2,7 +2,7 @@ var BaseEx=function(t){"use strict";class e{static toBytes(t){return!ArrayBuffer /** * [BaseEx]{@link https://github.com/UmamiAppearance/BaseExJS} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */return t.Base1=d,t.Base16=f,t.Base2048=M,t.Base32=p,t.Base58=g,t.Base64=b,t.Base85=E,t.Base91=A,t.BaseEx=class{constructor(t="buffer"){if(!o.typeList.includes(t)){let e=`Invalid argument '${t}' for output type. Allowed types are:\n`;throw e=e.concat(o.typeList.join(", ")),new TypeError(e)}this.base1=new d("default",t),this.base16=new f("default",t),this.base32_crockford=new p("rfc4648",t),this.base32_rfc3548=new p("rfc3548",t),this.base32_rfc4648=new p("rfc4648",t),this.base32_zbase32=new p("zbase32",t),this.base58=new g("default",t),this.base58_bitcoin=new g("bitcoin",t),this.base58_flickr=new g("flickr",t),this.base64=new b("default",t),this.base64_urlsafe=new b("urlsafe",t),this.uuencode=new w("default",t),this.uuencode_original=new w("original",t),this.xxencode=new w("xx",t),this.base85_adobe=new E("adobe",t),this.base85_ascii=new E("ascii85",t),this.base85_z85=new E("z85",t),this.base91=new A("default",t),this.leb128=new x("default",t),this.ecoji_v1=new T("emojis_v1",t),this.ecoji_v2=new T("emojis_v2",t),this.base2048=new M("default",t),this.basePhi=new P("default",t),this.byteConverter=new z(t),this.simpleBase={};for(let e=2;e<=62;e++)this.simpleBase[`base${e}`]=new B(e,t)}},t.BasePhi=P,t.ByteConverter=z,t.Ecoji=T,t.LEB128=x,t.SimpleBase=B,t.UUencode=w,t}({}); diff --git a/dist/converters/Base1/base-1.esm.js b/dist/converters/Base1/base-1.esm.js index f336706..1f9465f 100644 --- a/dist/converters/Base1/base-1.esm.js +++ b/dist/converters/Base1/base-1.esm.js @@ -1464,7 +1464,7 @@ class BaseTemplate { /** * [BaseEx|Base1 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-1.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/Base1/base-1.esm.min.js b/dist/converters/Base1/base-1.esm.min.js index cb25824..b29f27a 100644 --- a/dist/converters/Base1/base-1.esm.min.js +++ b/dist/converters/Base1/base-1.esm.min.js @@ -2,7 +2,7 @@ class t{static toBytes(t){return!ArrayBuffer.isView(t)||"undefined"!=typeof Buff /** * [BaseEx|Base1 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-1.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */class u extends h{constructor(...t){super(),this.charsets.all=[..." !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"],this.charsets.sequence=[..."Hello World!"],this.charsets.default=["1"],this.charsets.tmark=["|","#"],this.converter=new l(10,0,0),this.hasSignedMode=!0,this.littleEndian=!0,this.signed=!0,this.isMutable.charsets=!1,this.isMutable.signed=!0,this.isMutable.upper=!0,this.utils.validateArgs(t,!0)}encode(t,...e){const i=this.utils.validateArgs(e);let n,r;[n,r]=this.utils.inputHandler.toBytes(t,i);let s=this.converter.encode(n,null,i.littleEndian)[0],o=BigInt(s);if(o>Number.MAX_SAFE_INTEGER)throw new RangeError("Invalid string length.");o>16777216&&console.warn("The string length is really long. The JavaScript engine may have memory issues generating the output string."),o=Number(o);const a=this.charsets[i.version],l=a.length;let h="";if(1===l)h=a.at(0).repeat(o);else if("all"===i.version)for(let t=0;t4&&(h=a.at(1).repeat((o-t)/5)),h+=a.at(0).repeat(t)}else for(let t=0;t?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~"],this.charsets.sequence=[..."Hello World!"],this.charsets.default=["1"],this.charsets.tmark=["|","#"],this.converter=new l(10,0,0),this.hasSignedMode=!0,this.littleEndian=!0,this.signed=!0,this.isMutable.charsets=!1,this.isMutable.signed=!0,this.isMutable.upper=!0,this.utils.validateArgs(t,!0)}encode(t,...e){const i=this.utils.validateArgs(e);let n,r;[n,r]=this.utils.inputHandler.toBytes(t,i);let s=this.converter.encode(n,null,i.littleEndian)[0],o=BigInt(s);if(o>Number.MAX_SAFE_INTEGER)throw new RangeError("Invalid string length.");o>16777216&&console.warn("The string length is really long. The JavaScript engine may have memory issues generating the output string."),o=Number(o);const a=this.charsets[i.version],l=a.length;let h="";if(1===l)h=a.at(0).repeat(o);else if("all"===i.version)for(let t=0;t4&&(h=a.at(1).repeat((o-t)/5)),h+=a.at(0).repeat(t)}else for(let t=0;t(t=t.replace(/^0x/,""),e.integrity||(t=t.toLowerCase().replace(/[^0-9a-f]/g,"")),t.length%2&&(t="0".concat(t)),t)),null,!1,...e)}}export{u as default}; diff --git a/dist/converters/Base16/base-16.iife.js b/dist/converters/Base16/base-16.iife.js index 654b3c4..0a4990d 100644 --- a/dist/converters/Base16/base-16.iife.js +++ b/dist/converters/Base16/base-16.iife.js @@ -1467,7 +1467,7 @@ var Base16 = (function () { /** * [BaseEx|Base16 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-16.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/Base16/base-16.iife.min.js b/dist/converters/Base16/base-16.iife.min.js index 77d0dae..b3de3ee 100644 --- a/dist/converters/Base16/base-16.iife.min.js +++ b/dist/converters/Base16/base-16.iife.min.js @@ -2,7 +2,7 @@ var Base16=function(){"use strict";class t{static toBytes(t){return!ArrayBuffer. /** * [BaseEx|Base16 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-16.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */return class extends h{constructor(...t){super(),this.converter=new l(16,1,2),this.charsets.default=[..."0123456789abcdef"],this.padChars.default=[],this.hasSignedMode=!0,this.isMutable.signed=!0,this.isMutable.upper=!0,this.utils.validateArgs(t,!0)}encode(t,...e){return super.encode(t,null,null,...e)}decode(t,...e){return super.decode(t,(({input:t,settings:e})=>(t=t.replace(/^0x/,""),e.integrity||(t=t.toLowerCase().replace(/[^0-9a-f]/g,"")),t.length%2&&(t="0".concat(t)),t)),null,!1,...e)}}}(); diff --git a/dist/converters/Base2048/base-2048.esm.js b/dist/converters/Base2048/base-2048.esm.js index 7bf610c..7bae6f5 100644 --- a/dist/converters/Base2048/base-2048.esm.js +++ b/dist/converters/Base2048/base-2048.esm.js @@ -1107,7 +1107,7 @@ class BaseTemplate { /** * [BaseEx|Base2048 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-2048.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/Base2048/base-2048.esm.min.js b/dist/converters/Base2048/base-2048.esm.min.js index 0419084..922b3ea 100644 --- a/dist/converters/Base2048/base-2048.esm.min.js +++ b/dist/converters/Base2048/base-2048.esm.min.js @@ -2,7 +2,7 @@ class t{static toBytes(t){return!ArrayBuffer.isView(t)||"undefined"!=typeof Buff /** * [BaseEx|Base2048 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-2048.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */class l extends h{constructor(...t){super(),this.converter={radix:2048,bsEnc:11,bsEncPad:3,bsDec:8},this.charsets.default=[..."89ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÆÐØÞßæðøþĐđĦħıĸŁłŊŋŒœŦŧƀƁƂƃƄƅƆƇƈƉƊƋƌƍƎƏƐƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟƢƣƤƥƦƧƨƩƪƫƬƭƮƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿǀǁǂǃǝǤǥǶǷȜȝȠȡȢȣȤȥȴȵȶȷȸȹȺȻȼȽȾȿɀɁɂɃɄɅɆɇɈɉɊɋɌɍɎɏɐɑɒɓɔɕɖɗɘəɚɛɜɝɞɟɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀʁʂʃʄʅʆʇʈʉʊʋʌʍʎʏʐʑʒʓʔʕʖʗʘʙʚʛʜʝʞʟʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯͰͱͲͳͶͷͻͼͽͿΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρςστυφχψωϏϗϘϙϚϛϜϝϞϟϠϡϢϣϤϥϦϧϨϩϪϫϬϭϮϯϳϷϸϺϻϼϽϾϿЂЄЅІЈЉЊЋЏАБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзиклмнопрстуфхцчшщъыьэюяђєѕіјљњћџѠѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯѰѱѲѳѴѵѸѹѺѻѼѽѾѿҀҁҊҋҌҍҎҏҐґҒғҔҕҖҗҘҙҚқҜҝҞҟҠҡҢңҤҥҦҧҨҩҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽҾҿӀӃӄӅӆӇӈӉӊӋӌӍӎӏӔӕӘәӠӡӨөӶӷӺӻӼӽӾӿԀԁԂԃԄԅԆԇԈԉԊԋԌԍԎԏԐԑԒԓԔԕԖԗԘԙԚԛԜԝԞԟԠԡԢԣԤԥԦԧԨԩԪԫԬԭԮԯԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖաբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆאבגדהוזחטיךכלםמןנסעףפץצקרשתװױײؠءابةتثجحخدذرزسشصضطظعغػؼؽؾؿفقكلمنهوىي٠١٢٣٤٥٦٧٨٩ٮٯٱٲٳٴٹٺٻټٽپٿڀځڂڃڄڅچڇڈډڊڋڌڍڎڏڐڑڒړڔڕږڗژڙښڛڜڝڞڟڠڡڢڣڤڥڦڧڨکڪګڬڭڮگڰڱڲڳڴڵڶڷڸڹںڻڼڽھڿہۃۄۅۆۇۈۉۊۋیۍێۏېۑےەۮۯ۰۱۲۳۴۵۶۷۸۹ۺۻۼۿܐܒܓܔܕܖܗܘܙܚܛܜܝܞܟܠܡܢܣܤܥܦܧܨܩܪܫܬܭܮܯݍݎݏݐݑݒݓݔݕݖݗݘݙݚݛݜݝݞݟݠݡݢݣݤݥݦݧݨݩݪݫݬݭݮݯݰݱݲݳݴݵݶݷݸݹݺݻݼݽݾݿހށނރބޅކއވމފދތލގޏސޑޒޓޔޕޖޗޘޙޚޛޜޝޞޟޠޡޢޣޤޥޱ߀߁߂߃߄߅߆߇߈߉ߊߋߌߍߎߏߐߑߒߓߔߕߖߗߘߙߚߛߜߝߞߟߠߡߢߣߤߥߦߧߨߩߪࠀࠁࠂࠃࠄࠅࠆࠇࠈࠉࠊࠋࠌࠍࠎࠏࠐࠑࠒࠓࠔࠕࡀࡁࡂࡃࡄࡅࡆࡇࡈࡉࡊࡋࡌࡍࡎࡏࡐࡑࡒࡓࡔࡕࡖࡗࡘࡠࡡࡢࡣࡤࡥࡦࡧࡨࡩࡪࢠࢡࢢࢣࢤࢥࢦࢧࢨࢩࢪࢫࢬࢭࢮࢯࢰࢱࢲࢳࢴࢶࢷࢸࢹࢺࢻࢼࢽऄअआइईउऊऋऌऍऎएऐऑऒओऔकखगघङचछजझञटठडढणतथदधनपफबभमयरलळवशषसहऽॐॠॡ०१२३४५६७८९ॲॳॴॵॶॷॸॹॺॻॼॽॾॿঀঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহঽৎৠৡ০১২৩৪৫৬৭৮৯ৰৱ৴৵৶৷৸৹ৼਅਆਇਈਉਊਏਐਓਔਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫਬਭਮਯਰਲਵਸਹੜ੦੧੨੩੪੫੬੭੮੯ੲੳੴઅઆઇઈઉઊઋઌઍએઐઑઓઔકખગઘઙચછજઝઞટઠડઢણતથદધનપફબભમયરલળવશષસહઽૐૠૡ૦૧૨૩૪૫૬૭૮૯ૹଅଆଇଈଉଊଋଌଏଐଓଔକଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଭମଯରଲଳଵଶଷସହଽୟୠୡ୦୧୨୩୪୫୬୭୮୯ୱ୲୳୴୵୶୷ஃஅஆஇஈஉஊஎஏஐஒஓகஙசஜஞடணதநனபமயரறலளழவஶஷஸஹௐ௦௧௨௩௪௫௬௭௮௯௰௱௲అఆఇఈఉఊఋఌఎఏఐఒఓఔకఖగఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరఱలళఴవశషసహఽౘౙౚౠౡ౦౧౨౩౪౫౬౭౮౯౸౹౺౻౼౽౾ಀಅಆಇಈಉಊಋಌಎಏಐಒಓಔಕಖಗಘಙಚಛಜಝಞಟಠಡಢಣತಥದಧನಪಫಬಭಮಯರಱಲಳವಶಷಸಹಽೞೠೡ೦೧೨೩೪೫೬೭೮೯ೱೲഅആഇഈഉഊഋഌഎഏഐഒഓഔകഖഗഘങചഛജഝഞടഠഡഢണതഥദധനഩപഫബഭമയരറലളഴവശഷസഹഺഽൎൔൕൖ൘൙൚൛൜൝൞ൟൠൡ൦൧൨൩൪൫൬൭൮൯൰൱൲൳൴൵൶൷൸ൺൻർൽൾൿඅආඇඈඉඊඋඌඍඎඏඐඑඒඓඔඕඖකඛගඝඞඟචඡජඣඤඥඦටඨඩඪණඬතථදධනඳපඵබභමඹයරලවශෂසහළෆ෦෧෨෩෪෫෬෭෮෯กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะาเแโใไๅ๐๑๒๓๔๕๖๗๘๙ກຂຄງຈຊຍດຕຖທນບປຜຝພຟມຢຣລວສຫອຮຯະາຽເແໂໃໄ໐໑໒໓໔໕໖໗໘໙ໞໟༀ༠༡༢༣༤༥༦༧༨༩༪༫༬༭༮༯༰༱༲༳ཀཁགངཅཆཇཉཊཋཌཎཏཐདནཔཕབམཙཚཛཝཞཟའཡརལཤཥསཧཨཪཫཬྈྉྊྋྌကခဂဃငစဆဇဈဉညဋဌဍဎဏတထဒဓနပဖဗဘမယရလဝသဟဠအဢဣဤဥဧဨဩဪဿ၀၁၂၃၄၅၆၇၈၉ၐၑၒၓၔၕ"],this.padChars.default=[..."01234567"],this.padCharAmount=8,this.hasSignedMode=!0,this.littleEndian=!1,this.nonASCII=!0,this.utils.validateArgs(t,!0)}encode(t,...e){const n=this.utils.validateArgs(e);let i=this.utils.inputHandler.toBytes(t,n).at(0);const r=this.charsets[n.version],s=this.padChars[n.version];let o="",a=0,h=0;if(i.forEach((t=>{for(let e=this.converter.bsDec-1;e>=0;e--)a=(a<<1)+(t>>e&1),h++,h===this.converter.bsEnc&&(o+=r.at(a),a=0,h=0)})),0!==h){let t,e;for(h<=this.converter.bsEncPad?(t=this.converter.bsEncPad,e=!0):(t=this.converter.bsEnc,e=!1);h!==t;)if(a=1+(a<<1),h++,h>this.converter.bsEnc)throw new Error("Cannot process input. This is a bug!");o+=e?s.at(a):r.at(a)}return this.utils.wrapOutput(o,n.options.lineWrap)}decode(t,...e){const n=this.utils.validateArgs(e);t=this.utils.normalizeInput(t);const i=[...t],r=this.charsets[n.version],s=this.padChars[n.version],a=new Array;let h=0,l=0;return i.forEach(((t,e)=>{let u,c=r.indexOf(t);if(c>-1)u=this.converter.bsEnc;else if(c=s.indexOf(t),c>-1){if(e+1!==i.length)throw new o(null,`Secondary character found before end of input, index: ${e}`);u=this.converter.bsEncPad}else if(n.integrity)throw new o(t);for(let t=u-1;t>=0;t--)h=(h<<1)+(c>>t&1),l++,l===this.converter.bsDec&&(a.push(h),h=0,l=0)})),this.utils.outputHandler.compile(Uint8Array.from(a),n.outputType)}}export{l as default}; diff --git a/dist/converters/Base2048/base-2048.iife.js b/dist/converters/Base2048/base-2048.iife.js index 7309c1f..5288e26 100644 --- a/dist/converters/Base2048/base-2048.iife.js +++ b/dist/converters/Base2048/base-2048.iife.js @@ -1110,7 +1110,7 @@ var Base2048 = (function () { /** * [BaseEx|Base2048 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-2048.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/Base2048/base-2048.iife.min.js b/dist/converters/Base2048/base-2048.iife.min.js index e1b09df..0fbedb7 100644 --- a/dist/converters/Base2048/base-2048.iife.min.js +++ b/dist/converters/Base2048/base-2048.iife.min.js @@ -2,7 +2,7 @@ var Base2048=function(){"use strict";class t{static toBytes(t){return!ArrayBuffe /** * [BaseEx|Base2048 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-2048.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */return class extends h{constructor(...t){super(),this.converter={radix:2048,bsEnc:11,bsEncPad:3,bsDec:8},this.charsets.default=[..."89ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzÆÐØÞßæðøþĐđĦħıĸŁłŊŋŒœŦŧƀƁƂƃƄƅƆƇƈƉƊƋƌƍƎƏƐƑƒƓƔƕƖƗƘƙƚƛƜƝƞƟƢƣƤƥƦƧƨƩƪƫƬƭƮƱƲƳƴƵƶƷƸƹƺƻƼƽƾƿǀǁǂǃǝǤǥǶǷȜȝȠȡȢȣȤȥȴȵȶȷȸȹȺȻȼȽȾȿɀɁɂɃɄɅɆɇɈɉɊɋɌɍɎɏɐɑɒɓɔɕɖɗɘəɚɛɜɝɞɟɠɡɢɣɤɥɦɧɨɩɪɫɬɭɮɯɰɱɲɳɴɵɶɷɸɹɺɻɼɽɾɿʀʁʂʃʄʅʆʇʈʉʊʋʌʍʎʏʐʑʒʓʔʕʖʗʘʙʚʛʜʝʞʟʠʡʢʣʤʥʦʧʨʩʪʫʬʭʮʯͰͱͲͳͶͷͻͼͽͿΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρςστυφχψωϏϗϘϙϚϛϜϝϞϟϠϡϢϣϤϥϦϧϨϩϪϫϬϭϮϯϳϷϸϺϻϼϽϾϿЂЄЅІЈЉЊЋЏАБВГДЕЖЗИКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзиклмнопрстуфхцчшщъыьэюяђєѕіјљњћџѠѡѢѣѤѥѦѧѨѩѪѫѬѭѮѯѰѱѲѳѴѵѸѹѺѻѼѽѾѿҀҁҊҋҌҍҎҏҐґҒғҔҕҖҗҘҙҚқҜҝҞҟҠҡҢңҤҥҦҧҨҩҪҫҬҭҮүҰұҲҳҴҵҶҷҸҹҺһҼҽҾҿӀӃӄӅӆӇӈӉӊӋӌӍӎӏӔӕӘәӠӡӨөӶӷӺӻӼӽӾӿԀԁԂԃԄԅԆԇԈԉԊԋԌԍԎԏԐԑԒԓԔԕԖԗԘԙԚԛԜԝԞԟԠԡԢԣԤԥԦԧԨԩԪԫԬԭԮԯԱԲԳԴԵԶԷԸԹԺԻԼԽԾԿՀՁՂՃՄՅՆՇՈՉՊՋՌՍՎՏՐՑՒՓՔՕՖաբգդեզէըթժիլխծկհձղճմյնշոչպջռսվտրցւփքօֆאבגדהוזחטיךכלםמןנסעףפץצקרשתװױײؠءابةتثجحخدذرزسشصضطظعغػؼؽؾؿفقكلمنهوىي٠١٢٣٤٥٦٧٨٩ٮٯٱٲٳٴٹٺٻټٽپٿڀځڂڃڄڅچڇڈډڊڋڌڍڎڏڐڑڒړڔڕږڗژڙښڛڜڝڞڟڠڡڢڣڤڥڦڧڨکڪګڬڭڮگڰڱڲڳڴڵڶڷڸڹںڻڼڽھڿہۃۄۅۆۇۈۉۊۋیۍێۏېۑےەۮۯ۰۱۲۳۴۵۶۷۸۹ۺۻۼۿܐܒܓܔܕܖܗܘܙܚܛܜܝܞܟܠܡܢܣܤܥܦܧܨܩܪܫܬܭܮܯݍݎݏݐݑݒݓݔݕݖݗݘݙݚݛݜݝݞݟݠݡݢݣݤݥݦݧݨݩݪݫݬݭݮݯݰݱݲݳݴݵݶݷݸݹݺݻݼݽݾݿހށނރބޅކއވމފދތލގޏސޑޒޓޔޕޖޗޘޙޚޛޜޝޞޟޠޡޢޣޤޥޱ߀߁߂߃߄߅߆߇߈߉ߊߋߌߍߎߏߐߑߒߓߔߕߖߗߘߙߚߛߜߝߞߟߠߡߢߣߤߥߦߧߨߩߪࠀࠁࠂࠃࠄࠅࠆࠇࠈࠉࠊࠋࠌࠍࠎࠏࠐࠑࠒࠓࠔࠕࡀࡁࡂࡃࡄࡅࡆࡇࡈࡉࡊࡋࡌࡍࡎࡏࡐࡑࡒࡓࡔࡕࡖࡗࡘࡠࡡࡢࡣࡤࡥࡦࡧࡨࡩࡪࢠࢡࢢࢣࢤࢥࢦࢧࢨࢩࢪࢫࢬࢭࢮࢯࢰࢱࢲࢳࢴࢶࢷࢸࢹࢺࢻࢼࢽऄअआइईउऊऋऌऍऎएऐऑऒओऔकखगघङचछजझञटठडढणतथदधनपफबभमयरलळवशषसहऽॐॠॡ०१२३४५६७८९ॲॳॴॵॶॷॸॹॺॻॼॽॾॿঀঅআইঈউঊঋঌএঐওঔকখগঘঙচছজঝঞটঠডঢণতথদধনপফবভমযরলশষসহঽৎৠৡ০১২৩৪৫৬৭৮৯ৰৱ৴৵৶৷৸৹ৼਅਆਇਈਉਊਏਐਓਔਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਪਫਬਭਮਯਰਲਵਸਹੜ੦੧੨੩੪੫੬੭੮੯ੲੳੴઅઆઇઈઉઊઋઌઍએઐઑઓઔકખગઘઙચછજઝઞટઠડઢણતથદધનપફબભમયરલળવશષસહઽૐૠૡ૦૧૨૩૪૫૬૭૮૯ૹଅଆଇଈଉଊଋଌଏଐଓଔକଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନପଫବଭମଯରଲଳଵଶଷସହଽୟୠୡ୦୧୨୩୪୫୬୭୮୯ୱ୲୳୴୵୶୷ஃஅஆஇஈஉஊஎஏஐஒஓகஙசஜஞடணதநனபமயரறலளழவஶஷஸஹௐ௦௧௨௩௪௫௬௭௮௯௰௱௲అఆఇఈఉఊఋఌఎఏఐఒఓఔకఖగఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరఱలళఴవశషసహఽౘౙౚౠౡ౦౧౨౩౪౫౬౭౮౯౸౹౺౻౼౽౾ಀಅಆಇಈಉಊಋಌಎಏಐಒಓಔಕಖಗಘಙಚಛಜಝಞಟಠಡಢಣತಥದಧನಪಫಬಭಮಯರಱಲಳವಶಷಸಹಽೞೠೡ೦೧೨೩೪೫೬೭೮೯ೱೲഅആഇഈഉഊഋഌഎഏഐഒഓഔകഖഗഘങചഛജഝഞടഠഡഢണതഥദധനഩപഫബഭമയരറലളഴവശഷസഹഺഽൎൔൕൖ൘൙൚൛൜൝൞ൟൠൡ൦൧൨൩൪൫൬൭൮൯൰൱൲൳൴൵൶൷൸ൺൻർൽൾൿඅආඇඈඉඊඋඌඍඎඏඐඑඒඓඔඕඖකඛගඝඞඟචඡජඣඤඥඦටඨඩඪණඬතථදධනඳපඵබභමඹයරලවශෂසහළෆ෦෧෨෩෪෫෬෭෮෯กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะาเแโใไๅ๐๑๒๓๔๕๖๗๘๙ກຂຄງຈຊຍດຕຖທນບປຜຝພຟມຢຣລວສຫອຮຯະາຽເແໂໃໄ໐໑໒໓໔໕໖໗໘໙ໞໟༀ༠༡༢༣༤༥༦༧༨༩༪༫༬༭༮༯༰༱༲༳ཀཁགངཅཆཇཉཊཋཌཎཏཐདནཔཕབམཙཚཛཝཞཟའཡརལཤཥསཧཨཪཫཬྈྉྊྋྌကခဂဃငစဆဇဈဉညဋဌဍဎဏတထဒဓနပဖဗဘမယရလဝသဟဠအဢဣဤဥဧဨဩဪဿ၀၁၂၃၄၅၆၇၈၉ၐၑၒၓၔၕ"],this.padChars.default=[..."01234567"],this.padCharAmount=8,this.hasSignedMode=!0,this.littleEndian=!1,this.nonASCII=!0,this.utils.validateArgs(t,!0)}encode(t,...e){const n=this.utils.validateArgs(e);let r=this.utils.inputHandler.toBytes(t,n).at(0);const i=this.charsets[n.version],s=this.padChars[n.version];let o="",a=0,h=0;if(r.forEach((t=>{for(let e=this.converter.bsDec-1;e>=0;e--)a=(a<<1)+(t>>e&1),h++,h===this.converter.bsEnc&&(o+=i.at(a),a=0,h=0)})),0!==h){let t,e;for(h<=this.converter.bsEncPad?(t=this.converter.bsEncPad,e=!0):(t=this.converter.bsEnc,e=!1);h!==t;)if(a=1+(a<<1),h++,h>this.converter.bsEnc)throw new Error("Cannot process input. This is a bug!");o+=e?s.at(a):i.at(a)}return this.utils.wrapOutput(o,n.options.lineWrap)}decode(t,...e){const n=this.utils.validateArgs(e);t=this.utils.normalizeInput(t);const r=[...t],i=this.charsets[n.version],s=this.padChars[n.version],a=new Array;let h=0,l=0;return r.forEach(((t,e)=>{let u,c=i.indexOf(t);if(c>-1)u=this.converter.bsEnc;else if(c=s.indexOf(t),c>-1){if(e+1!==r.length)throw new o(null,`Secondary character found before end of input, index: ${e}`);u=this.converter.bsEncPad}else if(n.integrity)throw new o(t);for(let t=u-1;t>=0;t--)h=(h<<1)+(c>>t&1),l++,l===this.converter.bsDec&&(a.push(h),h=0,l=0)})),this.utils.outputHandler.compile(Uint8Array.from(a),n.outputType)}}}(); diff --git a/dist/converters/Base32/base-32.esm.js b/dist/converters/Base32/base-32.esm.js index 683af2f..30da7e5 100644 --- a/dist/converters/Base32/base-32.esm.js +++ b/dist/converters/Base32/base-32.esm.js @@ -1464,7 +1464,7 @@ class BaseTemplate { /** * [BaseEx|Base32 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-32.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/Base32/base-32.esm.min.js b/dist/converters/Base32/base-32.esm.min.js index 66db36f..1d38d68 100644 --- a/dist/converters/Base32/base-32.esm.min.js +++ b/dist/converters/Base32/base-32.esm.min.js @@ -2,7 +2,7 @@ class t{static toBytes(t){return!ArrayBuffer.isView(t)||"undefined"!=typeof Buff /** * [BaseEx|Base32 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-32.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */class u extends l{constructor(...t){super(),this.converter=new h(32,5,8),this.charsets.crockford=[..."0123456789abcdefghjkmnpqrstvwxyz"],this.padChars.crockford=["="],this.charsets.rfc3548=[..."abcdefghijklmnopqrstuvwxyz234567"],this.padChars.rfc3548=["="],this.charsets.rfc4648=[..."0123456789abcdefghijklmnopqrstuv"],this.padChars.rfc4648=["="],this.charsets.zbase32=[..."ybndrfg8ejkmcpqxot1uwisza345h769"],this.padChars.zbase32=["="],this.padCharAmount=1,this.hasSignedMode=!0,this.version="rfc4648",this.isMutable.littleEndian=!0,this.isMutable.padding=!0,this.isMutable.signed=!0,this.isMutable.upper=!0,this.utils.validateArgs(t,!0),this.padding=/rfc3548|rfc4648/.test(this.version),this.upper="crockford"===this.version}encode(t,...e){return super.encode(t,null,(({output:t,settings:e,zeroPadding:i})=>{if(!e.littleEndian&&i){const n=this.converter.padBytes(i),r=this.padChars[e.version].at(0);t=t.slice(0,-n),e.padding&&(t=t.concat(r.repeat(n)))}return t}),...e)}decode(t,...e){return super.decode(t,null,null,!1,...e)}}export{u as default}; diff --git a/dist/converters/Base32/base-32.iife.js b/dist/converters/Base32/base-32.iife.js index f38f91a..74316be 100644 --- a/dist/converters/Base32/base-32.iife.js +++ b/dist/converters/Base32/base-32.iife.js @@ -1467,7 +1467,7 @@ var Base32 = (function () { /** * [BaseEx|Base32 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-32.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/Base32/base-32.iife.min.js b/dist/converters/Base32/base-32.iife.min.js index 3327113..2c751a9 100644 --- a/dist/converters/Base32/base-32.iife.min.js +++ b/dist/converters/Base32/base-32.iife.min.js @@ -2,7 +2,7 @@ var Base32=function(){"use strict";class t{static toBytes(t){return!ArrayBuffer. /** * [BaseEx|Base32 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-32.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */return class extends l{constructor(...t){super(),this.converter=new h(32,5,8),this.charsets.crockford=[..."0123456789abcdefghjkmnpqrstvwxyz"],this.padChars.crockford=["="],this.charsets.rfc3548=[..."abcdefghijklmnopqrstuvwxyz234567"],this.padChars.rfc3548=["="],this.charsets.rfc4648=[..."0123456789abcdefghijklmnopqrstuv"],this.padChars.rfc4648=["="],this.charsets.zbase32=[..."ybndrfg8ejkmcpqxot1uwisza345h769"],this.padChars.zbase32=["="],this.padCharAmount=1,this.hasSignedMode=!0,this.version="rfc4648",this.isMutable.littleEndian=!0,this.isMutable.padding=!0,this.isMutable.signed=!0,this.isMutable.upper=!0,this.utils.validateArgs(t,!0),this.padding=/rfc3548|rfc4648/.test(this.version),this.upper="crockford"===this.version}encode(t,...e){return super.encode(t,null,(({output:t,settings:e,zeroPadding:i})=>{if(!e.littleEndian&&i){const n=this.converter.padBytes(i),r=this.padChars[e.version].at(0);t=t.slice(0,-n),e.padding&&(t=t.concat(r.repeat(n)))}return t}),...e)}decode(t,...e){return super.decode(t,null,null,!1,...e)}}}(); diff --git a/dist/converters/Base58/base-58.esm.js b/dist/converters/Base58/base-58.esm.js index f467052..2d6734b 100644 --- a/dist/converters/Base58/base-58.esm.js +++ b/dist/converters/Base58/base-58.esm.js @@ -1464,7 +1464,7 @@ class BaseTemplate { /** * [BaseEx|Base58 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-58.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/Base58/base-58.esm.min.js b/dist/converters/Base58/base-58.esm.min.js index 08a93b5..6063c9e 100644 --- a/dist/converters/Base58/base-58.esm.min.js +++ b/dist/converters/Base58/base-58.esm.min.js @@ -2,7 +2,7 @@ class t{static toBytes(t){return!ArrayBuffer.isView(t)||"undefined"!=typeof Buff /** * [BaseEx|Base58 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-58.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */class u extends l{constructor(...t){super(),this.converter=new h(58,0,0),this.charsets.default=[..."123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],Object.defineProperty(this.padChars,"default",{get:()=>[this.charsets.default.at(0)]}),this.charsets.bitcoin=[..."123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],Object.defineProperty(this.padChars,"bitcoin",{get:()=>[this.charsets.bitcoin.at(0)]}),this.charsets.flickr=[..."123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],Object.defineProperty(this.padChars,"flickr",{get:()=>[this.charsets.flickr.at(0)]}),this.padding=!0,this.version="bitcoin",this.isMutable.padding=!0,this.isMutable.signed=!0,this.utils.validateArgs(t,!0)}encode(t,...e){return super.encode(t,null,(({inputBytes:t,output:e,settings:i,type:n})=>{if(i.padding&&"int"!==n){let n=0;const r=t.length,s=this.charsets[i.version].at(0);if(r){for(;!t[n];)if(n++,n===r){n=0;break}const i=n;i&&(e=s.repeat(i).concat(e))}}return e}),...e)}decode(t,...e){return super.decode(t,null,(({input:t,output:e,settings:i})=>{const n=this.charsets[i.version].at(0);if(i.padding&&t.length>1){let i=0;for(;t[i]===n;)i++;const r=i;r&&(e=Uint8Array.from([...new Array(r).fill(0),...e]))}return e}),!1,...e)}}export{u as default}; diff --git a/dist/converters/Base58/base-58.iife.js b/dist/converters/Base58/base-58.iife.js index e406dfe..322bcae 100644 --- a/dist/converters/Base58/base-58.iife.js +++ b/dist/converters/Base58/base-58.iife.js @@ -1467,7 +1467,7 @@ var Base58 = (function () { /** * [BaseEx|Base58 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-58.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/Base58/base-58.iife.min.js b/dist/converters/Base58/base-58.iife.min.js index a40fce8..bcaa19b 100644 --- a/dist/converters/Base58/base-58.iife.min.js +++ b/dist/converters/Base58/base-58.iife.min.js @@ -2,7 +2,7 @@ var Base58=function(){"use strict";class t{static toBytes(t){return!ArrayBuffer. /** * [BaseEx|Base58 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-58.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */return class extends l{constructor(...t){super(),this.converter=new h(58,0,0),this.charsets.default=[..."123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],Object.defineProperty(this.padChars,"default",{get:()=>[this.charsets.default.at(0)]}),this.charsets.bitcoin=[..."123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"],Object.defineProperty(this.padChars,"bitcoin",{get:()=>[this.charsets.bitcoin.at(0)]}),this.charsets.flickr=[..."123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"],Object.defineProperty(this.padChars,"flickr",{get:()=>[this.charsets.flickr.at(0)]}),this.padding=!0,this.version="bitcoin",this.isMutable.padding=!0,this.isMutable.signed=!0,this.utils.validateArgs(t,!0)}encode(t,...e){return super.encode(t,null,(({inputBytes:t,output:e,settings:i,type:n})=>{if(i.padding&&"int"!==n){let n=0;const r=t.length,s=this.charsets[i.version].at(0);if(r){for(;!t[n];)if(n++,n===r){n=0;break}const i=n;i&&(e=s.repeat(i).concat(e))}}return e}),...e)}decode(t,...e){return super.decode(t,null,(({input:t,output:e,settings:i})=>{const n=this.charsets[i.version].at(0);if(i.padding&&t.length>1){let i=0;for(;t[i]===n;)i++;const r=i;r&&(e=Uint8Array.from([...new Array(r).fill(0),...e]))}return e}),!1,...e)}}}(); diff --git a/dist/converters/Base64/base-64.esm.js b/dist/converters/Base64/base-64.esm.js index ff5accf..e053c3e 100644 --- a/dist/converters/Base64/base-64.esm.js +++ b/dist/converters/Base64/base-64.esm.js @@ -1464,7 +1464,7 @@ class BaseTemplate { /** * [BaseEx|Base64 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-64.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/Base64/base-64.esm.min.js b/dist/converters/Base64/base-64.esm.min.js index 3ac4c01..bda1337 100644 --- a/dist/converters/Base64/base-64.esm.min.js +++ b/dist/converters/Base64/base-64.esm.min.js @@ -2,7 +2,7 @@ class t{static toBytes(t){return!ArrayBuffer.isView(t)||"undefined"!=typeof Buff /** * [BaseEx|Base64 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-64.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */class u extends h{constructor(...t){super(),this.converter=new l(64,3,4),this.charsets.default=[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],this.padChars.default=["="],this.charsets.urlsafe=this.charsets.default.slice(0,-2).concat(["-","_"]),this.padChars.urlsafe=["="],this.padCharAmount=1,this.padding=!0,this.isMutable.padding=!0,this.utils.validateArgs(t,!0)}encode(t,...e){return super.encode(t,null,(({output:t,settings:e,zeroPadding:n})=>{if(n){const i=this.converter.padBytes(n),r=this.padChars[e.version].at(0);t=t.slice(0,-i),e.padding&&(t=t.concat(r.repeat(i)))}return t}),...e)}decode(t,...e){return super.decode(t,null,null,!1,...e)}}export{u as default}; diff --git a/dist/converters/Base64/base-64.iife.js b/dist/converters/Base64/base-64.iife.js index 6faebfb..cbb78ee 100644 --- a/dist/converters/Base64/base-64.iife.js +++ b/dist/converters/Base64/base-64.iife.js @@ -1467,7 +1467,7 @@ var Base64 = (function () { /** * [BaseEx|Base64 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-64.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/Base64/base-64.iife.min.js b/dist/converters/Base64/base-64.iife.min.js index 4539ecc..0fa0fbf 100644 --- a/dist/converters/Base64/base-64.iife.min.js +++ b/dist/converters/Base64/base-64.iife.min.js @@ -2,7 +2,7 @@ var Base64=function(){"use strict";class t{static toBytes(t){return!ArrayBuffer. /** * [BaseEx|Base64 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-64.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */return class extends h{constructor(...t){super(),this.converter=new l(64,3,4),this.charsets.default=[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"],this.padChars.default=["="],this.charsets.urlsafe=this.charsets.default.slice(0,-2).concat(["-","_"]),this.padChars.urlsafe=["="],this.padCharAmount=1,this.padding=!0,this.isMutable.padding=!0,this.utils.validateArgs(t,!0)}encode(t,...e){return super.encode(t,null,(({output:t,settings:e,zeroPadding:n})=>{if(n){const i=this.converter.padBytes(n),r=this.padChars[e.version].at(0);t=t.slice(0,-i),e.padding&&(t=t.concat(r.repeat(i)))}return t}),...e)}decode(t,...e){return super.decode(t,null,null,!1,...e)}}}(); diff --git a/dist/converters/Base85/base-85.esm.js b/dist/converters/Base85/base-85.esm.js index 7c748eb..29763bc 100644 --- a/dist/converters/Base85/base-85.esm.js +++ b/dist/converters/Base85/base-85.esm.js @@ -1464,7 +1464,7 @@ class BaseTemplate { /** * [BaseEx|Base85 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-85.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/Base85/base-85.esm.min.js b/dist/converters/Base85/base-85.esm.min.js index 8b9c0b1..665526a 100644 --- a/dist/converters/Base85/base-85.esm.min.js +++ b/dist/converters/Base85/base-85.esm.min.js @@ -2,7 +2,7 @@ class t{static toBytes(t){return!ArrayBuffer.isView(t)||"undefined"!=typeof Buff /** * [BaseEx|Base85 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-85.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */class u extends l{constructor(...t){super(),this.converter=new h(85,4,5,84),this.charsets.adobe=[..."!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstu"],this.charsets.ascii85=this.charsets.adobe.slice(),this.charsets.rfc1924=[..."0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~"],this.charsets.z85=[..."0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#"],this.version="ascii85",this.utils.validateArgs(t,!0)}encode(t,...e){return super.encode(t,(t=>{let e;return t.version.match(/adobe|ascii85/)&&(e=(t,e)=>e||"!!!!!"!==t?t:"z"),e}),(({output:t,settings:e,zeroPadding:n})=>{if(n){const e=this.converter.padBytes(n);t=t.slice(0,-e)}return"adobe"===e.version&&(t=`<~${t}~>`),t}),...e)}decode(t,...e){return super.decode(t,(({input:t,settings:e})=>(e.version.match(/adobe|ascii85/)&&(t=t.replace(/z/g,"!!!!!"),"adobe"===e.version&&(t=t.replace(/^<~|~>$/g,""))),t)),null,!1,...e)}}export{u as default}; diff --git a/dist/converters/Base85/base-85.iife.js b/dist/converters/Base85/base-85.iife.js index 408a076..d5a5511 100644 --- a/dist/converters/Base85/base-85.iife.js +++ b/dist/converters/Base85/base-85.iife.js @@ -1467,7 +1467,7 @@ var Base85 = (function () { /** * [BaseEx|Base85 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-85.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/Base85/base-85.iife.min.js b/dist/converters/Base85/base-85.iife.min.js index e2f2c44..9d1885d 100644 --- a/dist/converters/Base85/base-85.iife.min.js +++ b/dist/converters/Base85/base-85.iife.min.js @@ -2,7 +2,7 @@ var Base85=function(){"use strict";class t{static toBytes(t){return!ArrayBuffer. /** * [BaseEx|Base85 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-85.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */return class extends l{constructor(...t){super(),this.converter=new h(85,4,5,84),this.charsets.adobe=[..."!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstu"],this.charsets.ascii85=this.charsets.adobe.slice(),this.charsets.rfc1924=[..."0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz!#$%&()*+-;<=>?@^_`{|}~"],this.charsets.z85=[..."0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-:+=^!/*?&<>()[]{}@%$#"],this.version="ascii85",this.utils.validateArgs(t,!0)}encode(t,...e){return super.encode(t,(t=>{let e;return t.version.match(/adobe|ascii85/)&&(e=(t,e)=>e||"!!!!!"!==t?t:"z"),e}),(({output:t,settings:e,zeroPadding:n})=>{if(n){const e=this.converter.padBytes(n);t=t.slice(0,-e)}return"adobe"===e.version&&(t=`<~${t}~>`),t}),...e)}decode(t,...e){return super.decode(t,(({input:t,settings:e})=>(e.version.match(/adobe|ascii85/)&&(t=t.replace(/z/g,"!!!!!"),"adobe"===e.version&&(t=t.replace(/^<~|~>$/g,""))),t)),null,!1,...e)}}}(); diff --git a/dist/converters/Base91/base-91.esm.js b/dist/converters/Base91/base-91.esm.js index 2c5fe96..245e2c2 100644 --- a/dist/converters/Base91/base-91.esm.js +++ b/dist/converters/Base91/base-91.esm.js @@ -1107,7 +1107,7 @@ class BaseTemplate { /** * [BaseEx|Base91 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-91.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT AND BSD-3-Clause (Base91, Copyright (c) 2000-2006 Joachim Henke) */ diff --git a/dist/converters/Base91/base-91.esm.min.js b/dist/converters/Base91/base-91.esm.min.js index c187aff..3e5866d 100644 --- a/dist/converters/Base91/base-91.esm.min.js +++ b/dist/converters/Base91/base-91.esm.min.js @@ -2,7 +2,7 @@ class t{static toBytes(t){return!ArrayBuffer.isView(t)||"undefined"!=typeof Buff /** * [BaseEx|Base91 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-91.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT AND BSD-3-Clause (Base91, Copyright (c) 2000-2006 Joachim Henke) */class u extends l{constructor(...t){super(),this.converter={radix:91,bsEnc:0,bsDec:0},this.charsets.default=[...'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!#$%&()*+,./:;<=>?@[]^_`{|}~"'],this.version="default",this.utils.validateArgs(t,!0)}encode(t,...e){const i=this.utils.validateArgs(e),n=this.utils.inputHandler.toBytes(t,i)[0];let r=0,s=0,o="";const a=this.charsets[i.version];if(n.forEach((t=>{if(s+=t<13){let t,e,i=13,n=s%8192;n<89&&(i=14,n=s%16384),s>>=i,r-=i,[t,e]=this.#n(n,91),o=`${o}${a[e]}${a[t]}`}})),r){let t,e;[t,e]=this.#n(s,91),o=o.concat(a[e]),(r>7||s>90)&&(o=o.concat(a[t]))}return this.utils.wrapOutput(o,i.options.lineWrap)}decode(t,...e){const i=this.utils.validateArgs(e),n=this.charsets[i.version];t=this.utils.normalizeInput(t);let r=[...t];i.integrity||(r=r.filter((t=>n.includes(t))));let s=r.length,a=!1;s%2&&(a=!0,s--);let l=0,u=0;const h=new Array;for(let t=0;t88?13:14;do{h.push(l%256),l>>=8,u-=8}while(u>7)}if(a){const t=r.at(s),e=n.indexOf(t);h.push(((e<?@[]^_`{|}~"'],this.version="default",this.utils.validateArgs(t,!0)}encode(t,...e){const i=this.utils.validateArgs(e),n=this.utils.inputHandler.toBytes(t,i)[0];let r=0,s=0,o="";const a=this.charsets[i.version];if(n.forEach((t=>{if(s+=t<13){let t,e,i=13,n=s%8192;n<89&&(i=14,n=s%16384),s>>=i,r-=i,[t,e]=this.#n(n,91),o=`${o}${a[e]}${a[t]}`}})),r){let t,e;[t,e]=this.#n(s,91),o=o.concat(a[e]),(r>7||s>90)&&(o=o.concat(a[t]))}return this.utils.wrapOutput(o,i.options.lineWrap)}decode(t,...e){const i=this.utils.validateArgs(e),n=this.charsets[i.version];t=this.utils.normalizeInput(t);let r=[...t];i.integrity||(r=r.filter((t=>n.includes(t))));let s=r.length,a=!1;s%2&&(a=!0,s--);let l=0,u=0;const h=new Array;for(let t=0;t88?13:14;do{h.push(l%256),l>>=8,u-=8}while(u>7)}if(a){const t=r.at(s),e=n.indexOf(t);h.push(((e<{if(!this.#s(o)){for(;t.gt(o);){if([t,e]=this.#o(t,e),t.lte(0))return void console.warn("Could not find an exact base-phi representation. Value is approximated.");i--}i>-1?l.unshift(i):h.push(i),o=o.minus(t),d(t,e,i)}};return d(u,c,f),f=0,l.forEach((t=>{for(;f{for(;f>t;)a+=n[0],f--;a+=n[1],f--})),s&&(a=`-${a}`),a}decode(t,...e){const i=this.utils.validateArgs(e),n=this.charsets[i.version];let r;if([t,r]=this.utils.extractSign(this.utils.normalizeInput(t)),!i.integrity){const e=[...n,"."];t=[...t].filter((t=>e.includes(t))).join("")}const s=t.split(".");if(i.integrity&&s.length>2)throw new o(null,"There are multiple decimal points in the input.");const[a,l]=s;let h=m(0),u=this.#n.minus(1),c=m(1);if([...a].reverse().forEach((t=>{const e=n.indexOf(t);if(1===e)h=h.plus(c);else if(0!==e)throw new o(t);[u,c]=this.#r(u,c)})),l){let t=m(1);c=this.#n.minus(t),[...l].forEach((e=>{const i=n.indexOf(e);if(1===i)h=h.plus(c);else if(0!==i)throw new o(e);[c,t]=this.#o(c,t)}))}if(i.decimalMode)return h.toNumber();h=h.round().toFixed();const f=this.b10.decode(h,[..."0123456789"],[],i.integrity,i.littleEndian);return this.utils.outputHandler.compile(f,i.outputType,i.littleEndian,r)}#s(t){return!t.round(50).abs().toNumber()}#r(t,e){return[e,t.plus(e)]}#o(t,e){return[e.minus(t),t]}}export{E as default}; diff --git a/dist/converters/BasePhi/base-phi.iife.js b/dist/converters/BasePhi/base-phi.iife.js index 580d757..b9b8653 100644 --- a/dist/converters/BasePhi/base-phi.iife.js +++ b/dist/converters/BasePhi/base-phi.iife.js @@ -1472,7 +1472,7 @@ var BasePhi = (function () { /** * [BaseEx|BasePhi Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-phi.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/BasePhi/base-phi.iife.min.js b/dist/converters/BasePhi/base-phi.iife.min.js index 09cf942..aa974b1 100644 --- a/dist/converters/BasePhi/base-phi.iife.min.js +++ b/dist/converters/BasePhi/base-phi.iife.min.js @@ -2,7 +2,7 @@ var BasePhi=function(){"use strict";class t{static toBytes(t){return!ArrayBuffer /** * [BaseEx|BasePhi Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-phi.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */return class extends h{#n=m("1.618033988749894848204586834365638117720309179805762862135448622705260462818902449707207204189391137484754088075386891752");constructor(...t){super(),this.converter={radix:2,bsEnc:0,bsDec:0},this.b10=new l(10,0,0),this.charsets.default=["0","1"],this.version="default",this.signed=!0,this.hasDecimalMode=!0,this.utils.validateArgs(t,!0)}encode(t,...e){const i=this.utils.validateArgs(e),n=this.charsets[i.version];let r,s,o,a="";if(i.decimalMode){if(!Number.isFinite(t))throw new TypeError("When running the converter in decimal-mode, only input of type 'Number' is allowed.");t<0?(s=!0,o=m(-t)):(s=!1,o=m(t))}else[r,s]=this.utils.inputHandler.toBytes(t,i),o=m(this.b10.encode(r,null,i.littleEndian)[0]);if(o.eq(0)||o.eq(1))return a=n[o.toNumber()],s&&(a=`-${a}`),a;const l=[],h=[];let u=m(1),c=this.#n,f=0;for(;c.lt(o);)[u,c]=this.#r(u,c),f++;const d=(t,e,i)=>{if(!this.#s(o)){for(;t.gt(o);){if([t,e]=this.#o(t,e),t.lte(0))return void console.warn("Could not find an exact base-phi representation. Value is approximated.");i--}i>-1?l.unshift(i):h.push(i),o=o.minus(t),d(t,e,i)}};return d(u,c,f),f=0,l.forEach((t=>{for(;f{for(;f>t;)a+=n[0],f--;a+=n[1],f--})),s&&(a=`-${a}`),a}decode(t,...e){const i=this.utils.validateArgs(e),n=this.charsets[i.version];let r;if([t,r]=this.utils.extractSign(this.utils.normalizeInput(t)),!i.integrity){const e=[...n,"."];t=[...t].filter((t=>e.includes(t))).join("")}const s=t.split(".");if(i.integrity&&s.length>2)throw new o(null,"There are multiple decimal points in the input.");const[a,l]=s;let h=m(0),u=this.#n.minus(1),c=m(1);if([...a].reverse().forEach((t=>{const e=n.indexOf(t);if(1===e)h=h.plus(c);else if(0!==e)throw new o(t);[u,c]=this.#r(u,c)})),l){let t=m(1);c=this.#n.minus(t),[...l].forEach((e=>{const i=n.indexOf(e);if(1===i)h=h.plus(c);else if(0!==i)throw new o(e);[c,t]=this.#o(c,t)}))}if(i.decimalMode)return h.toNumber();h=h.round().toFixed();const f=this.b10.decode(h,[..."0123456789"],[],i.integrity,i.littleEndian);return this.utils.outputHandler.compile(f,i.outputType,i.littleEndian,r)}#s(t){return!t.round(50).abs().toNumber()}#r(t,e){return[e,t.plus(e)]}#o(t,e){return[e.minus(t),t]}}}(); diff --git a/dist/converters/ByteConverter/byte-converter.esm.js b/dist/converters/ByteConverter/byte-converter.esm.js index e2309b5..aea3f4c 100644 --- a/dist/converters/ByteConverter/byte-converter.esm.js +++ b/dist/converters/ByteConverter/byte-converter.esm.js @@ -464,7 +464,7 @@ class SmartOutput { /** * [BaseEx|Byte Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/byte-converter.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/ByteConverter/byte-converter.esm.min.js b/dist/converters/ByteConverter/byte-converter.esm.min.js index 2dbb1af..eb378ca 100644 --- a/dist/converters/ByteConverter/byte-converter.esm.min.js +++ b/dist/converters/ByteConverter/byte-converter.esm.min.js @@ -2,7 +2,7 @@ class t{static makeDataView(t){const e=new ArrayBuffer(t);return new DataView(e) /** * [BaseEx|Byte Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/byte-converter.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */const n=(()=>{const t=new Uint16Array([1]),e=new Uint8Array(t.buffer);return Boolean(e.at(0))})();class i{constructor(...t){this.littleEndian=n,this.numberMode=!1,this.outputType="buffer",this.utils={validateArgs:(t,n=!1)=>{const i={littleEndian:this.littleEndian,numberMode:this.numberMode,outputType:this.outputType,signed:!1};if(!t.length)return i;t.includes("number")&&(t.splice(t.indexOf("number"),1),i.numberMode=!0,i.outputType="float_n");const r=e.typeList.map((t=>`'${t}'`)).join(", ");if(t.forEach((t=>{if("le"===(t=String(t).toLowerCase()))i.littleEndian=!0;else if("be"===t)i.littleEndian=!1;else{if(!e.typeList.includes(t))throw new TypeError(`Invalid argument: '${t}.\nValid arguments are:\n'le', 'be', ${r}`);i.outputType=t}})),n)for(const t in i)this[t]=i[t];return i}},this.utils.validateArgs(t,!0)}encode(e,...n){const i=this.utils.validateArgs(n);return t.toBytes(e,i)[0]}decode(t,...n){const i=this.utils.validateArgs(n);return e.compile(t,i.outputType,i.littleEndian)}}export{i as default}; diff --git a/dist/converters/ByteConverter/byte-converter.iife.js b/dist/converters/ByteConverter/byte-converter.iife.js index 5b8c9c8..0f717c4 100644 --- a/dist/converters/ByteConverter/byte-converter.iife.js +++ b/dist/converters/ByteConverter/byte-converter.iife.js @@ -467,7 +467,7 @@ var ByteConverter = (function () { /** * [BaseEx|Byte Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/byte-converter.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/ByteConverter/byte-converter.iife.min.js b/dist/converters/ByteConverter/byte-converter.iife.min.js index 10c0961..89d8386 100644 --- a/dist/converters/ByteConverter/byte-converter.iife.min.js +++ b/dist/converters/ByteConverter/byte-converter.iife.min.js @@ -2,7 +2,7 @@ var ByteConverter=function(){"use strict";class t{static makeDataView(t){const e /** * [BaseEx|Byte Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/byte-converter.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */const n=(()=>{const t=new Uint16Array([1]),e=new Uint8Array(t.buffer);return Boolean(e.at(0))})();return class{constructor(...t){this.littleEndian=n,this.numberMode=!1,this.outputType="buffer",this.utils={validateArgs:(t,n=!1)=>{const i={littleEndian:this.littleEndian,numberMode:this.numberMode,outputType:this.outputType,signed:!1};if(!t.length)return i;t.includes("number")&&(t.splice(t.indexOf("number"),1),i.numberMode=!0,i.outputType="float_n");const r=e.typeList.map((t=>`'${t}'`)).join(", ");if(t.forEach((t=>{if("le"===(t=String(t).toLowerCase()))i.littleEndian=!0;else if("be"===t)i.littleEndian=!1;else{if(!e.typeList.includes(t))throw new TypeError(`Invalid argument: '${t}.\nValid arguments are:\n'le', 'be', ${r}`);i.outputType=t}})),n)for(const t in i)this[t]=i[t];return i}},this.utils.validateArgs(t,!0)}encode(e,...n){const i=this.utils.validateArgs(n);return t.toBytes(e,i)[0]}decode(t,...n){const i=this.utils.validateArgs(n);return e.compile(t,i.outputType,i.littleEndian)}}}(); diff --git a/dist/converters/Ecoji/ecoji.esm.js b/dist/converters/Ecoji/ecoji.esm.js index b6c332a..179abd9 100644 --- a/dist/converters/Ecoji/ecoji.esm.js +++ b/dist/converters/Ecoji/ecoji.esm.js @@ -1464,7 +1464,7 @@ class BaseTemplate { /** * [BaseEx|Ecoji Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/ecoji.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT OR Apache-2.0 * @see https://github.com/keith-turner/ecoji diff --git a/dist/converters/Ecoji/ecoji.esm.min.js b/dist/converters/Ecoji/ecoji.esm.min.js index 14e0748..218abd0 100644 --- a/dist/converters/Ecoji/ecoji.esm.min.js +++ b/dist/converters/Ecoji/ecoji.esm.min.js @@ -2,7 +2,7 @@ class t{static toBytes(t){return!ArrayBuffer.isView(t)||"undefined"!=typeof Buff /** * [BaseEx|Ecoji Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/ecoji.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT OR Apache-2.0 * @see https://github.com/keith-turner/ecoji diff --git a/dist/converters/Ecoji/ecoji.iife.js b/dist/converters/Ecoji/ecoji.iife.js index 3d3d26b..bc2a705 100644 --- a/dist/converters/Ecoji/ecoji.iife.js +++ b/dist/converters/Ecoji/ecoji.iife.js @@ -1467,7 +1467,7 @@ var Ecoji = (function () { /** * [BaseEx|Ecoji Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/ecoji.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT OR Apache-2.0 * @see https://github.com/keith-turner/ecoji diff --git a/dist/converters/Ecoji/ecoji.iife.min.js b/dist/converters/Ecoji/ecoji.iife.min.js index 9aed152..2671a2f 100644 --- a/dist/converters/Ecoji/ecoji.iife.min.js +++ b/dist/converters/Ecoji/ecoji.iife.min.js @@ -2,7 +2,7 @@ var Ecoji=function(){"use strict";class t{static toBytes(t){return!ArrayBuffer.i /** * [BaseEx|Ecoji Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/ecoji.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT OR Apache-2.0 * @see https://github.com/keith-turner/ecoji diff --git a/dist/converters/LEB128/leb-128.esm.js b/dist/converters/LEB128/leb-128.esm.js index a4ecb61..e0bc58b 100644 --- a/dist/converters/LEB128/leb-128.esm.js +++ b/dist/converters/LEB128/leb-128.esm.js @@ -1464,7 +1464,7 @@ class BaseTemplate { /** * [BaseEx|LEB128 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/leb-128.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/LEB128/leb-128.esm.min.js b/dist/converters/LEB128/leb-128.esm.min.js index b741152..d82ddd4 100644 --- a/dist/converters/LEB128/leb-128.esm.min.js +++ b/dist/converters/LEB128/leb-128.esm.min.js @@ -2,7 +2,7 @@ class t{static toBytes(t){return!ArrayBuffer.isView(t)||"undefined"!=typeof Buff /** * [BaseEx|LEB128 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/leb-128.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */class u extends h{constructor(...t){super(),this.converter=new l(10,0,0),this.hexlify=new l(16,1,2),this.charsets.default="",this.charsets.hex="",this.version="default",this.frozenCharsets=!0,this.littleEndian=!0,this.hasSignedMode=!0,this.isMutable.signed=!0,this.utils.validateArgs(t,!0)}encode(t,...e){const n=this.utils.validateArgs(e),i=n.signed;n.signed=!0;const[r,s]=this.utils.inputHandler.toBytes(t,n);let o=this.converter.encode(r,null,n.littleEndian)[0],a=BigInt(o),l=new Array;if(s){if(!i)throw new TypeError("Negative values in unsigned mode are invalid.");a=-a}if(i)for(;;){const t=Number(127n&a);if(a>>=7n,0==a&&0==(64&t)||-1==a&&0!=(64&t)){l.push(t);break}l.push(128|t)}else for(;;){const t=Number(127n&a);if(a>>=7n,0==a){l.push(t);break}l.push(128|t)}const h=Uint8Array.from(l);return"hex"===n.version?this.hexlify.encode(h,[..."0123456789abcdef"],!1)[0]:h}decode(e,...n){const i=this.utils.validateArgs(n);if("hex"===i.version)e=this.hexlify.decode(this.utils.normalizeInput(e).toLowerCase(),[..."0123456789abcdef"],[],i.integrity,!1);else{if(void 0===e.byteLength)throw new TypeError("Input must be a bytes like object.");e=t.toBytes(e)[0]}if(1===e.length&&!e[0])return this.utils.outputHandler.compile(new Uint8Array(1),i.outputType,!0);e=Array.from(e);let r,s,o,a=0n,l=-7n;for(r of e)l+=7n,a+=BigInt(127&r)<>=7n,0==a&&0==(64&t)||-1==a&&0!=(64&t)){l.push(t);break}l.push(128|t)}else for(;;){const t=Number(127n&a);if(a>>=7n,0==a){l.push(t);break}l.push(128|t)}const h=Uint8Array.from(l);return"hex"===n.version?this.hexlify.encode(h,[..."0123456789abcdef"],!1)[0]:h}decode(e,...n){const i=this.utils.validateArgs(n);if("hex"===i.version)e=this.hexlify.decode(this.utils.normalizeInput(e).toLowerCase(),[..."0123456789abcdef"],[],i.integrity,!1);else{if(void 0===e.byteLength)throw new TypeError("Input must be a bytes like object.");e=t.toBytes(e)[0]}if(1===e.length&&!e[0])return this.utils.outputHandler.compile(new Uint8Array(1),i.outputType,!0);e=Array.from(e);let r,s,o,a=0n,l=-7n;for(r of e)l+=7n,a+=BigInt(127&r)<62)throw new RangeError("Radix argument must be provided and has to be an integer between 2 and 62.");this.converter=new l(t,0,0),this.charsets.default=[..."0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"].slice(0,t),this.frozenCharsets=!0,this.hasSignedMode=!0,this.littleEndian=!(2===t||16===t),this.signed=!0,this.version="default",this.isMutable.littleEndian=!0,this.isMutable.upper=t<=36,this.utils.validateArgs(e,!0)}encode(t,...e){return super.encode(t,null,null,...e)}decode(t,...e){return super.decode(t,(({input:t})=>{if(2===this.converter.radix){const e=(8-t.length%8)%8;t=`${"0".repeat(e)}${t}`}else if(16===this.converter.radix){const e=t.length%2;t=`${"0".repeat(e)}${t}`}return t}),null,!1,...e)}}export{u as default}; diff --git a/dist/converters/SimpleBase/simple-base.iife.js b/dist/converters/SimpleBase/simple-base.iife.js index 5f8022b..50d8b3e 100644 --- a/dist/converters/SimpleBase/simple-base.iife.js +++ b/dist/converters/SimpleBase/simple-base.iife.js @@ -1467,7 +1467,7 @@ var SimpleBase = (function () { /** * [BaseEx|SimpleBase Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/simple-base.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/SimpleBase/simple-base.iife.min.js b/dist/converters/SimpleBase/simple-base.iife.min.js index 9aa58d5..ce0e83b 100644 --- a/dist/converters/SimpleBase/simple-base.iife.min.js +++ b/dist/converters/SimpleBase/simple-base.iife.min.js @@ -2,7 +2,7 @@ var SimpleBase=function(){"use strict";class t{static toBytes(t){return!ArrayBuf /** * [BaseEx|SimpleBase Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/simple-base.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */return class extends h{constructor(t,...e){if(super(),!t||!Number.isInteger(t)||t<2||t>62)throw new RangeError("Radix argument must be provided and has to be an integer between 2 and 62.");this.converter=new l(t,0,0),this.charsets.default=[..."0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"].slice(0,t),this.frozenCharsets=!0,this.hasSignedMode=!0,this.littleEndian=!(2===t||16===t),this.signed=!0,this.version="default",this.isMutable.littleEndian=!0,this.isMutable.upper=t<=36,this.utils.validateArgs(e,!0)}encode(t,...e){return super.encode(t,null,null,...e)}decode(t,...e){return super.decode(t,(({input:t})=>{if(2===this.converter.radix){const e=(8-t.length%8)%8;t=`${"0".repeat(e)}${t}`}else if(16===this.converter.radix){const e=t.length%2;t=`${"0".repeat(e)}${t}`}return t}),null,!1,...e)}}}(); diff --git a/dist/converters/UUencode/uuencode.esm.js b/dist/converters/UUencode/uuencode.esm.js index 437fe8d..54c2de1 100644 --- a/dist/converters/UUencode/uuencode.esm.js +++ b/dist/converters/UUencode/uuencode.esm.js @@ -1464,7 +1464,7 @@ class BaseTemplate { /** * [BaseEx|UUencode Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/uuencode.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/UUencode/uuencode.esm.min.js b/dist/converters/UUencode/uuencode.esm.min.js index e78cd2e..03c9cbf 100644 --- a/dist/converters/UUencode/uuencode.esm.min.js +++ b/dist/converters/UUencode/uuencode.esm.min.js @@ -2,7 +2,7 @@ class t{static toBytes(t){return!ArrayBuffer.isView(t)||"undefined"!=typeof Buff /** * [BaseEx|UUencode Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/uuencode.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */class u extends l{constructor(...t){super(),this.converter=new h(64,3,4),this.charsets.default=[..."`!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"],Object.defineProperty(this.padChars,"default",{get:()=>[this.charsets.default.at(0)]}),this.charsets.original=[" ",...this.charsets.default.slice(1)],Object.defineProperty(this.padChars,"original",{get:()=>[this.charsets.original.at(0)]}),this.charsets.xx=[..."+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"],Object.defineProperty(this.padChars,"xx",{get:()=>[this.charsets.xx.at(0)]}),this.padding=!0,this.buffering=!1,this.utils.converterArgs.buffering=["nobuffering","buffering"],this.isMutable.buffering=!0,this.header=!1,this.utils.converterArgs.header=["noheader","header"],this.isMutable.header=!0,this.isMutable.integrity=!1,this.utils.validateArgs(t,!0)}encode(t,...e){return super.encode(t,null,(({output:t,settings:e,zeroPadding:n})=>{const i=this.charsets[e.version],r=[...t],s=r.length;if(e.options.lineWrap=0,e.header&&!e.buffering){t=`begin ${e.options.permissions||c()} ${e.options.file||f()}\n`}else t="";for(let e=0;e=s){const e=this.converter.padChars(a.length)-n;t+=`${i.at(e)}${a.join("")}\n`}else t+=`${i.at(45)}${a.join("")}\n`}return e.buffering||(t+=`${i.at(0)}\n`,e.header&&(t+="end\n")),t}),...e)}decode(t,...e){let n=0;return super.decode(t,(({input:t,settings:e})=>{const i=this.charsets[e.version],r=t.trim().split(/\r?\n/),s=[];/^begin/i.test(r.at(0))&&r.shift();for(const t of r){const r=[...t],o=i.indexOf(r.shift());if(!(o>0))break;if(s.push(...r),45!==o){let t=r.length;if("original"===e.version){const e=d(o);for(;t(n&&(t=new Uint8Array(t.slice(0,-n))),t)),!0,...e)}}const c=()=>{const t=()=>Math.floor(8*Math.random());return`${t()}${t()}${t()}`},f=()=>{const t=t=>t.at(Math.floor(Math.random()*t.length));return`${t(["unchronological","unconditionally","underemphasized","underprivileged","undistinguished","unsophisticated","untitled","untitled-1","untitled-3","uuencode"])}.${t(["applescript","bat","beam","bin","exe","js","mam","py","sh","vdo","wiz"])}`},d=t=>{const e=t/3*4;return e%4?4*Math.floor(e/4)+4:e};export{u as default}; diff --git a/dist/converters/UUencode/uuencode.iife.js b/dist/converters/UUencode/uuencode.iife.js index 5383b61..dd8d787 100644 --- a/dist/converters/UUencode/uuencode.iife.js +++ b/dist/converters/UUencode/uuencode.iife.js @@ -1467,7 +1467,7 @@ var UUencode = (function () { /** * [BaseEx|UUencode Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/uuencode.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/dist/converters/UUencode/uuencode.iife.min.js b/dist/converters/UUencode/uuencode.iife.min.js index 80f9fa8..45a5272 100644 --- a/dist/converters/UUencode/uuencode.iife.min.js +++ b/dist/converters/UUencode/uuencode.iife.min.js @@ -2,7 +2,7 @@ var UUencode=function(){"use strict";class t{static toBytes(t){return!ArrayBuffe /** * [BaseEx|UUencode Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/uuencode.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */const u=()=>{const t=()=>Math.floor(8*Math.random());return`${t()}${t()}${t()}`},c=()=>{const t=t=>t.at(Math.floor(Math.random()*t.length));return`${t(["unchronological","unconditionally","underemphasized","underprivileged","undistinguished","unsophisticated","untitled","untitled-1","untitled-3","uuencode"])}.${t(["applescript","bat","beam","bin","exe","js","mam","py","sh","vdo","wiz"])}`},f=t=>{const e=t/3*4;return e%4?4*Math.floor(e/4)+4:e};return class extends l{constructor(...t){super(),this.converter=new h(64,3,4),this.charsets.default=[..."`!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_"],Object.defineProperty(this.padChars,"default",{get:()=>[this.charsets.default.at(0)]}),this.charsets.original=[" ",...this.charsets.default.slice(1)],Object.defineProperty(this.padChars,"original",{get:()=>[this.charsets.original.at(0)]}),this.charsets.xx=[..."+-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"],Object.defineProperty(this.padChars,"xx",{get:()=>[this.charsets.xx.at(0)]}),this.padding=!0,this.buffering=!1,this.utils.converterArgs.buffering=["nobuffering","buffering"],this.isMutable.buffering=!0,this.header=!1,this.utils.converterArgs.header=["noheader","header"],this.isMutable.header=!0,this.isMutable.integrity=!1,this.utils.validateArgs(t,!0)}encode(t,...e){return super.encode(t,null,(({output:t,settings:e,zeroPadding:n})=>{const i=this.charsets[e.version],r=[...t],s=r.length;if(e.options.lineWrap=0,e.header&&!e.buffering){t=`begin ${e.options.permissions||u()} ${e.options.file||c()}\n`}else t="";for(let e=0;e=s){const e=this.converter.padChars(a.length)-n;t+=`${i.at(e)}${a.join("")}\n`}else t+=`${i.at(45)}${a.join("")}\n`}return e.buffering||(t+=`${i.at(0)}\n`,e.header&&(t+="end\n")),t}),...e)}decode(t,...e){let n=0;return super.decode(t,(({input:t,settings:e})=>{const i=this.charsets[e.version],r=t.trim().split(/\r?\n/),s=[];/^begin/i.test(r.at(0))&&r.shift();for(const t of r){const r=[...t],o=i.indexOf(r.shift());if(!(o>0))break;if(s.push(...r),45!==o){let t=r.length;if("original"===e.version){const e=f(o);for(;t(n&&(t=new Uint8Array(t.slice(0,-n))),t)),!0,...e)}}}(); diff --git a/package-lock.json b/package-lock.json index 4911e46..b8e1a00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,22 +1,31 @@ { "name": "base-ex", - "version": "0.8.0", + "version": "0.8.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "base-ex", - "version": "0.8.0", + "version": "0.8.1", "license": "MIT", "devDependencies": { "@rollup/plugin-terser": "^0.4.3", - "ava": "^5.3.0", + "ava": "^5.3.1", "big.js": "^6.2.1", - "eslint": "^8.42.0", + "eslint": "^8.44.0", "http-server": "^14.1.1", - "remembrance": "^0.3.0", - "rollup": "^3.23.1", - "rollup-plugin-your-function": "^0.5.2" + "remembrance": "^0.3.1", + "rollup": "^3.26.1", + "rollup-plugin-your-function": "^0.5.3" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/@eslint-community/eslint-utils": { @@ -44,14 +53,14 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.3.tgz", - "integrity": "sha512-+5gy6OQfk+xx3q0d6jGZZC3f3KzAkXc/IanVxd1is/VIIziRqqt3ongQz0FiTUXqTk0c7aDB3OaFuKnuSoJicQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.0.tgz", + "integrity": "sha512-Lj7DECXqIVCqnqjjHMPna4vn6GJcMgul/wuS0je9OZ9gsL0zzDpKPVtcG1HaDVc+9y+qgXneTeUMbCqXJNpH1A==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.2", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -67,9 +76,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.42.0.tgz", - "integrity": "sha512-6SWlXpWU5AvId8Ac7zjzmIOqMOba/JWY8XZ4A7q7Gn1Vlfg/SFFIlrtHXt9nPn4op9ZPAkl91Jao+QQv3r/ukw==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.44.0.tgz", + "integrity": "sha512-Ag+9YM4ocKQx9AarydN0KY2j0ErMHNIocPDrVo8zAE44xLTjEtz81OdR68/cydGtk6m6jDb5Za3r2useMzYmSw==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -141,9 +150,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", @@ -258,9 +267,9 @@ "dev": true }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -402,9 +411,9 @@ } }, "node_modules/ava": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ava/-/ava-5.3.0.tgz", - "integrity": "sha512-QYvBdyygl1LGX13IuYsC4bkwVCzZeovMGbxYkD73i7DVJxNlWnFa06YgrBOTbjw2QvSKUl5fOJ92Kj5WK9hSeg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ava/-/ava-5.3.1.tgz", + "integrity": "sha512-Scv9a4gMOXB6+ni4toLuhAm9KYWEjsgBglJl+kMGI5+IVDt120CCDZyB5HNU9DjmLI2t4I0GbnxGLmmRfGTJGg==", "dev": true, "dependencies": { "acorn": "^8.8.2", @@ -578,9 +587,9 @@ } }, "node_modules/chalk": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz", - "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -996,15 +1005,15 @@ } }, "node_modules/eslint": { - "version": "8.42.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.42.0.tgz", - "integrity": "sha512-ulg9Ms6E1WPf67PHaEY4/6E2tEn5/f7FXGzr3t9cBMugOmf1INYvuUwwh1aXQN4MfJ6a5K2iNwP3w4AColvI9A==", + "version": "8.44.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.44.0.tgz", + "integrity": "sha512-0wpHoUbDUHgNCyvFB5aXLiQVfK9B0at6gUvzy83k4kAsQ/u769TQDX6iKC+aO4upIHO9WSaA3QoXYQDHbNwf1A==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.3", - "@eslint/js": "8.42.0", + "@eslint/eslintrc": "^2.1.0", + "@eslint/js": "8.44.0", "@humanwhocodes/config-array": "^0.11.10", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -1016,7 +1025,7 @@ "escape-string-regexp": "^4.0.0", "eslint-scope": "^7.2.0", "eslint-visitor-keys": "^3.4.1", - "espree": "^9.5.2", + "espree": "^9.6.0", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -1036,7 +1045,7 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" @@ -1144,12 +1153,12 @@ } }, "node_modules/espree": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz", - "integrity": "sha512-7OASN1Wma5fum5SrNhFMAMJxOUAbhyfQ8dQ//PJaJbNw0URTPWqIghHWt1MmAANKhHZIYOHruW4Kw4ruUWOdGw==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.0.tgz", + "integrity": "sha512-1FH/IiruXZ84tpUlm0aCUEwMl2Ho5ilqVh0VvQXw+byAz/4SAciyHLlfmL5WYqsvD38oymdUwBss0LtK8m4s/A==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^3.4.1" }, @@ -1240,9 +1249,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", + "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -1481,9 +1490,9 @@ } }, "node_modules/globby": { - "version": "13.1.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", - "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", + "version": "13.2.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.1.tgz", + "integrity": "sha512-DPCBxctI7dN4EeIqjW2KGqgdcUMbrhJ9AzON+PlxCtvppWhubTLD4+a0GFxiym14ZvacUydTPjLPc2DlKz7EIg==", "dev": true, "dependencies": { "dir-glob": "^3.0.1", @@ -1935,12 +1944,12 @@ } }, "node_modules/magic-string": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", - "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", + "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", "dev": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" + "@jridgewell/sourcemap-codec": "^1.4.15" }, "engines": { "node": ">=12" @@ -2150,17 +2159,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -2554,9 +2563,9 @@ } }, "node_modules/remembrance": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/remembrance/-/remembrance-0.3.0.tgz", - "integrity": "sha512-d9VEBnTO7N4KNF8Nq7ZQ6ke2fQqmVqkn09uzfOjF+atohuZIcTHGsO6GwGJ1S32W2hFx93vSMZIENxycdjRxNw==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/remembrance/-/remembrance-0.3.1.tgz", + "integrity": "sha512-M5F8lcxcPnRtp8nAP18VaRbYBdtkbMC3aNq1HzgIk3Ku4Mv4n2kLuv7bgoiwP68hYIBMoMNQvU7M2GQkj8OLRA==", "dev": true, "dependencies": { "picomatch": "^2.3.1" @@ -2636,9 +2645,9 @@ } }, "node_modules/rollup": { - "version": "3.23.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.23.1.tgz", - "integrity": "sha512-ybRdFVHOoljGEFILHLd2g/qateqUdjE6YS41WXq4p3C/WwD3xtWxV4FYWETA1u9TeXQc5K8L8zHE5d/scOvrOQ==", + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.26.1.tgz", + "integrity": "sha512-I5gJCSpSMr3U9wv4D5YA8g7w7cj3eaSDeo7t+JcaFQOmoOUBgu4K9iMp8k3EZnwbJrjQxUMSKxMyB8qEQzzaSg==", "dev": true, "bin": { "rollup": "dist/bin/rollup" @@ -2652,15 +2661,15 @@ } }, "node_modules/rollup-plugin-your-function": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/rollup-plugin-your-function/-/rollup-plugin-your-function-0.5.2.tgz", - "integrity": "sha512-//IwjPdZ0LJBMX/95h7qvCty9y4OSaspxzrUiqmom+saZqVfgFBYFrQGCOrYKSqJjqweSDdX7JpiTwiD1sU+5w==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-your-function/-/rollup-plugin-your-function-0.5.3.tgz", + "integrity": "sha512-DmGsrOJRjalR1N+bPWb6uZlhZJ9IRhmLUoryCluRhH09O22xOqWOJSRT2C1nHx1o6F+3g66fTOPhGuwQKvjdCQ==", "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.2", "colorette": "^2.0.20", "diff": "^5.1.0", - "magic-string": "^0.30.0" + "magic-string": "^0.30.1" } }, "node_modules/run-parallel": { @@ -2705,9 +2714,9 @@ "dev": true }, "node_modules/semver": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz", - "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==", + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -2985,9 +2994,9 @@ } }, "node_modules/terser": { - "version": "5.17.7", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.7.tgz", - "integrity": "sha512-/bi0Zm2C6VAexlGgLlVxA0P2lru/sdLyfCVaRMfKVo9nWxbmz7f/sD8VPybPeSUJaJcwmCJis9pBIhcVcG1QcQ==", + "version": "5.18.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.18.2.tgz", + "integrity": "sha512-Ah19JS86ypbJzTzvUCX7KOsEIhDaRONungA4aYBjEP3JZRf4ocuDzTg4QWZnPn9DEMiMYGJPiSOy7aykoCc70w==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -3116,15 +3125,6 @@ "node": ">= 8" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", diff --git a/package.json b/package.json index 5f789c0..d63877e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "base-ex", - "version": "0.8.0", + "version": "0.8.1", "description": "A collection of classes for data representation written in JavaScript.", "main": "./cjs/base-ex.cjs", "module": "./src/base-ex.js", @@ -63,12 +63,12 @@ "homepage": "https://github.com/UmamiAppearance/BaseExJS#readme", "devDependencies": { "@rollup/plugin-terser": "^0.4.3", - "ava": "^5.3.0", + "ava": "^5.3.1", "big.js": "^6.2.1", - "eslint": "^8.42.0", + "eslint": "^8.44.0", "http-server": "^14.1.1", - "remembrance": "^0.3.0", - "rollup": "^3.23.1", - "rollup-plugin-your-function": "^0.5.2" + "remembrance": "^0.3.1", + "rollup": "^3.26.1", + "rollup-plugin-your-function": "^0.5.3" } } diff --git a/src/base-ex.js b/src/base-ex.js index ef4b006..75ac4da 100644 --- a/src/base-ex.js +++ b/src/base-ex.js @@ -1,7 +1,7 @@ /** * [BaseEx]{@link https://github.com/UmamiAppearance/BaseExJS} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/src/converters/base-1.js b/src/converters/base-1.js index 9d0cfe6..00476d3 100644 --- a/src/converters/base-1.js +++ b/src/converters/base-1.js @@ -1,7 +1,7 @@ /** * [BaseEx|Base1 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-1.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/src/converters/base-16.js b/src/converters/base-16.js index c271b04..6fdb7d0 100644 --- a/src/converters/base-16.js +++ b/src/converters/base-16.js @@ -1,7 +1,7 @@ /** * [BaseEx|Base16 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-16.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/src/converters/base-2048.js b/src/converters/base-2048.js index aa7aa10..6efacd5 100644 --- a/src/converters/base-2048.js +++ b/src/converters/base-2048.js @@ -1,7 +1,7 @@ /** * [BaseEx|Base2048 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-2048.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/src/converters/base-32.js b/src/converters/base-32.js index e5377ab..0c883a5 100644 --- a/src/converters/base-32.js +++ b/src/converters/base-32.js @@ -1,7 +1,7 @@ /** * [BaseEx|Base32 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-32.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/src/converters/base-58.js b/src/converters/base-58.js index dc642ac..fe75a9a 100644 --- a/src/converters/base-58.js +++ b/src/converters/base-58.js @@ -1,7 +1,7 @@ /** * [BaseEx|Base58 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-58.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/src/converters/base-64.js b/src/converters/base-64.js index 7b95b07..9527792 100644 --- a/src/converters/base-64.js +++ b/src/converters/base-64.js @@ -1,7 +1,7 @@ /** * [BaseEx|Base64 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-64.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/src/converters/base-85.js b/src/converters/base-85.js index f9b0a5b..c21d9d4 100644 --- a/src/converters/base-85.js +++ b/src/converters/base-85.js @@ -1,7 +1,7 @@ /** * [BaseEx|Base85 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-85.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/src/converters/base-91.js b/src/converters/base-91.js index 04fad98..f6ee4c0 100644 --- a/src/converters/base-91.js +++ b/src/converters/base-91.js @@ -1,7 +1,7 @@ /** * [BaseEx|Base91 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-91.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT AND BSD-3-Clause (Base91, Copyright (c) 2000-2006 Joachim Henke) */ diff --git a/src/converters/base-phi.js b/src/converters/base-phi.js index cb441f3..ee9c38a 100644 --- a/src/converters/base-phi.js +++ b/src/converters/base-phi.js @@ -1,7 +1,7 @@ /** * [BaseEx|BasePhi Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/base-phi.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/src/converters/byte-converter.js b/src/converters/byte-converter.js index 07fd8df..78c2c9d 100644 --- a/src/converters/byte-converter.js +++ b/src/converters/byte-converter.js @@ -1,7 +1,7 @@ /** * [BaseEx|Byte Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/byte-converter.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/src/converters/ecoji.js b/src/converters/ecoji.js index a7d32b4..c97d5a6 100644 --- a/src/converters/ecoji.js +++ b/src/converters/ecoji.js @@ -1,7 +1,7 @@ /** * [BaseEx|Ecoji Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/ecoji.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT OR Apache-2.0 * @see https://github.com/keith-turner/ecoji diff --git a/src/converters/leb-128.js b/src/converters/leb-128.js index ddee89a..4054a11 100644 --- a/src/converters/leb-128.js +++ b/src/converters/leb-128.js @@ -1,7 +1,7 @@ /** * [BaseEx|LEB128 Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/leb-128.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/src/converters/simple-base.js b/src/converters/simple-base.js index f26ee23..8d8bd2b 100644 --- a/src/converters/simple-base.js +++ b/src/converters/simple-base.js @@ -1,7 +1,7 @@ /** * [BaseEx|SimpleBase Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/simple-base.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */ diff --git a/src/converters/uuencode.js b/src/converters/uuencode.js index 6aee12a..950cf07 100644 --- a/src/converters/uuencode.js +++ b/src/converters/uuencode.js @@ -1,7 +1,7 @@ /** * [BaseEx|UUencode Converter]{@link https://github.com/UmamiAppearance/BaseExJS/blob/main/src/converters/uuencode.js} * - * @version 0.7.9 + * @version 0.8.1 * @author UmamiAppearance [mail@umamiappearance.eu] * @license MIT */