kasten-js 0.2.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -6
- package/dist/index.cjs +895 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +45 -7
- package/dist/index.js +875 -1
- package/dist/index.js.map +1 -0
- package/package.json +34 -34
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.cjs","names":[],"sources":["../src/base16/index.ts","../src/utils/char-codes.ts","../src/errors.ts","../src/base16/errors.ts","../src/base16/rfc4648/rfc4648.ts","../src/base16/ascii/ascii.ts","../src/base32/index.ts","../src/base32/errors.ts","../src/base32/rfc4648/rfc4648.ts","../src/base32/rfc4648/rfc4648hex.ts","../src/base64/index.ts","../src/base64/errors.ts","../src/base64/rfc2045/rfc2045.ts","../src/base64/rfc4648/rfc4648.ts","../src/base64/rfc4648/rfc4648url.ts","../src/run-length/index.ts","../src/run-length/basic/basic-run-length.ts","../src/run-length/errors.ts","../src/run-length/pack-bits/pack-bits.ts","../src/run-length/pdf/pdf.ts","../src/kasten.ts"],"sourcesContent":["export const Base16Categories = ['rfc4648', 'ascii'] as const;\n\nexport type Base16Category = typeof Base16Categories[number];\n\n/**\n * Base16 codec.\n */\nexport abstract class Base16 {\n\n /**\n * Encodes bytes to Base16 string.\n * @param bytes Bytes to be encoded.\n */\n public abstract encode(bytes: Uint8Array): string;\n\n /**\n * Decodes Base16 string to bytes.\n * @param base16 Base16 string to be decoded.\n */\n public abstract decode(base16: string): Uint8Array;\n}","export class CharCodes {\n\n public static HT = 9;\n \n public static LF = 10;\n \n public static VT = 11;\n \n public static FF = 12;\n \n public static CR = 13;\n \n public static SP = 32;\n\n private constructor() {}\n\n public static isWhitespace = (c: string | number) => {\n\n const type = typeof c;\n\n if (type !== 'string' && type !== 'number')\n throw new Error('invalid argument type.');\n\n if (type === 'string' && (c as string).length !== 1)\n throw new Error('inalid argument: not a character');\n\n const code = typeof c === 'string'\n ? c.charCodeAt(0)\n : c as number;\n\n return (this.HT <= code && code <= this.CR) || code === this.SP;\n }\n}","export class KastenError extends Error {}","import { KastenError } from '@/errors';\n\nexport class KastenBase16Error extends KastenError {}\n\nexport class KastenBase16EncodeError extends KastenBase16Error {}\n\nexport class KastenBase16DecodeError extends KastenBase16Error {}","import { Base16 } from '@/base16';\nimport { CharCodes } from '@/utils/char-codes';\nimport { KastenBase16DecodeError } from '../errors';\n\n/**\n * RFC 4648 Base 16 encoding.\n */\nexport class RFC4648Base16 extends Base16 {\n\n private static readonly textDecoder = new TextDecoder();\n\n private static readonly TABLE = '0123456789ABCDEF';\n\n private static readonly ENCODED_TABLE = new Uint8Array(\n [...this.TABLE].map(c => c.charCodeAt(0))\n );\n\n private static readonly DECODED_TABLE = new Uint8Array(256);\n\n static {\n this.DECODED_TABLE.fill(255);\n\n for (let i = 0; i < this.TABLE.length; i++) {\n this.DECODED_TABLE[this.TABLE.charCodeAt(i)] = i;\n }\n }\n\n public override encode(bytes: Uint8Array): string {\n\n const ENCODED_TABLE = RFC4648Base16.ENCODED_TABLE;\n\n const chars = new Uint8Array(bytes.length * 2);\n\n let charCount = 0;\n\n for (const byte of bytes) {\n \n const ci1 = (byte & 0xF0) >> 4;\n const ci2 = byte & 0x0F;\n\n const c1 = ENCODED_TABLE[ci1]!;\n const c2 = ENCODED_TABLE[ci2]!;\n\n chars[charCount++] = c1;\n chars[charCount++] = c2;\n }\n\n return RFC4648Base16.textDecoder.decode(chars);\n }\n \n public override decode(base16: string): Uint8Array {\n\n const DECODED_TABLE = RFC4648Base16.DECODED_TABLE;\n\n const upper = base16.toUpperCase();\n const chars = new Uint8Array(base16.length);\n\n let charCount = 0;\n\n for (let i = 0; i < base16.length; i++) {\n const c = upper.charCodeAt(i);\n\n if (CharCodes.isWhitespace(c))\n continue;\n\n if (!DECODED_TABLE[c] || DECODED_TABLE[c] == 255)\n throw new KastenBase16DecodeError(`Invalid Base16 character: ${base16.charAt(i)}`);\n\n chars[charCount++] = c;\n }\n\n if (charCount % 2 !== 0)\n throw new KastenBase16DecodeError('Invalid Base16');\n\n const bytes = new Uint8Array(Math.ceil(base16.length / 2));\n\n let byteCount = 0;\n\n for (let i = 0; i < charCount; i += 2) {\n \n const c1 = chars[i]!;\n const c2 = chars[i + 1]!;\n\n const ci1 = DECODED_TABLE[c1]!;\n const ci2 = DECODED_TABLE[c2]!;\n\n const byte = ((ci1 & 0x0F) << 4) | (ci2 & 0x0F);\n\n bytes[byteCount++] = byte;\n }\n\n return bytes.subarray(0, byteCount);\n }\n}","import { Base16 } from '@/base16';\nimport { CharCodes } from '@/utils/char-codes';\nimport { KastenBase16DecodeError } from '@/base16/errors';\n\n/**\n * AsciiHexDecode codec of PDF1.7\n */\nexport class AsciiHexDecode extends Base16 {\n \n public override encode(bytes: Uint8Array): string {\n\n if (bytes.length === 0) return '>';\n\n const chars: string[] = [];\n\n for (const byte of bytes) {\n const char = byte.toString(16).padStart(2, '0');\n chars.push(char);\n }\n\n chars.push('>');\n\n return chars.join('');\n }\n\n public override decode(base16: string): Uint8Array {\n\n const chars: string[] = [];\n\n for (const c of base16) {\n\n if (c === '>') break;\n \n if (CharCodes.isWhitespace(c)) continue;\n \n const code = c.charCodeAt(0);\n \n if (!(48 <= code && code <= 57) && !(65 <= code && code <= 70) && !(97<= code && code <= 102))\n throw new KastenBase16DecodeError(`invalid char: ${c}`);\n\n chars.push(c);\n }\n\n if (chars.length % 2 !== 0) chars.push('0');\n\n const strLength = chars.length;\n\n const bytes = new Uint8Array(Math.ceil(strLength / 2));\n\n let byteCount = 0;\n\n for (let i = 0, j = 0; i < strLength; i += 2, j++) {\n \n const hex = chars[i]! + chars[i + 1]!;\n\n const byte = Number.parseInt(hex, 16);\n\n bytes[byteCount++] = byte;\n }\n\n return bytes.subarray(0, byteCount);\n }\n}","export type Base32Category = typeof Base32Categories[number];\n\nexport const Base32Categories = ['rfc4648', 'rfc468-hex'] as const;\n\n/**\n * Base32 codec.\n */\nexport abstract class Base32 {\n\n protected static readonly textDecoder = new TextDecoder();\n\n /**\n * Encodes bytes to Base32 string\n * @param bytes Bytes to be encoded.\n */\n public abstract encode(bytes: Uint8Array): string;\n\n /**\n * Decodes Base32 string to bytes.\n * @param base32 Base32 string to be decoded.\n */\n public abstract decode(base32: string): Uint8Array;\n}","import { KastenError } from '@/errors';\n\nexport class KastenBase32Error extends KastenError {}\n\nexport class KastenBase32EncodeError extends KastenBase32Error {}\n\nexport class KastenBase32DecodeError extends KastenBase32Error {}","import { Base32 } from '@/base32';\nimport { CharCodes } from '@/utils/char-codes';\nimport { KastenBase32DecodeError } from '@/base32/errors';\n\nexport class RFC4648Base32 extends Base32 {\n\n private static readonly PADDING_CHAR_CODE: number = '='.charCodeAt(0);\n\n private static readonly TABLE: string\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567';\n\n private static readonly ENCODED_TABLE = new Uint8Array(\n [...this.TABLE].map(c => c.charCodeAt(0))\n );\n\n private static readonly DECODED_TABLE = new Uint8Array(256);\n\n static {\n this.DECODED_TABLE.fill(255);\n\n for (let i = 0; i < this.TABLE.length; i++) {\n this.DECODED_TABLE[this.TABLE.charCodeAt(i)] = i;\n }\n }\n\n public override encode(bytes: Uint8Array): string {\n\n const ENCODED_TABLE = RFC4648Base32.ENCODED_TABLE;\n\n const chars = new Uint8Array(Math.ceil(bytes.length / 5) * 8);\n\n let count = 0;\n\n for (let i = 0; i < bytes.length; i += 5) {\n\n const b1 = bytes[i]!;\n const b2 = bytes[i + 1] ?? 0;\n const b3 = bytes[i + 2] ?? 0;\n const b4 = bytes[i + 3] ?? 0;\n const b5 = bytes[i + 4] ?? 0;\n\n const ci1 = (b1 & 0xFF) >> 3;\n const ci2 = ((b1 & 0x07) << 2) | ((b2 & 0xC0) >> 6);\n const ci3 = (b2 & 0x3E) >> 1;\n const ci4 = ((b2 & 0x01) << 4) | ((b3 & 0xF0) >> 4);\n const ci5 = ((b3 & 0x0F) << 1) | ((b4 & 0x80) >> 7);\n const ci6 = (b4 & 0x7C) >> 2;\n const ci7 = ((b4 & 0x03) << 3) | ((b5 & 0xE0) >> 5);\n const ci8 = b5 & 0x1F;\n\n const c1 = ENCODED_TABLE[ci1]!;\n const c2 = ENCODED_TABLE[ci2]!;\n const c3 = ENCODED_TABLE[ci3]!;\n const c4 = ENCODED_TABLE[ci4]!;\n const c5 = ENCODED_TABLE[ci5]!;\n const c6 = ENCODED_TABLE[ci6]!;\n const c7 = ENCODED_TABLE[ci7]!;\n const c8 = ENCODED_TABLE[ci8]!;\n\n chars[count++] = c1;\n chars[count++] = c2;\n chars[count++] = c3;\n chars[count++] = c4;\n chars[count++] = c5;\n chars[count++] = c6;\n chars[count++] = c7;\n chars[count++] = c8;\n }\n\n const remain = bytes.length % 5;\n\n const padding =\n remain === 4 ? 1 :\n remain === 3 ? 3 :\n remain === 2 ? 4 :\n remain === 1 ? 6 : 0;\n\n for (let i = padding; i > 0; i--) {\n chars[count - i] = RFC4648Base32.PADDING_CHAR_CODE;\n }\n\n return Base32.textDecoder.decode(chars.subarray(0, count));\n }\n \n public override decode(base32: string): Uint8Array {\n\n const upper = base32.toUpperCase();\n\n const DECODED_TABLE = RFC4648Base32.DECODED_TABLE;\n const PADDING = RFC4648Base32.PADDING_CHAR_CODE;\n\n const chars = new Uint8Array(base32.length);\n\n let charCount = 0;\n\n for (let i = 0; i < base32.length; i++) {\n\n const c = upper.charCodeAt(i);\n\n if (!CharCodes.isWhitespace(c)) {\n\n chars[charCount++] = c;\n }\n }\n\n if (charCount % 8 !== 0)\n throw new KastenBase32DecodeError('Invalid length string.');\n\n let firstPad = -1;\n\n for (let i = 0; i < charCount; i++) {\n if (chars[i] === PADDING) {\n firstPad = i;\n break;\n }\n }\n\n let padCount = 0;\n\n if (firstPad !== -1) {\n\n if (firstPad < charCount - 6)\n throw new KastenBase32DecodeError('Invalid padding position.');\n\n for (let i = firstPad; i < charCount; i++) {\n if (chars[i] !== PADDING) {\n throw new KastenBase32DecodeError('Invalid padding');\n }\n }\n\n padCount = charCount - firstPad;\n\n if (padCount !== 1 && padCount !== 3 && padCount !== 4 && padCount !== 6) {\n throw new KastenBase32DecodeError('Invalid padding');\n }\n }\n\n const bytes = new Uint8Array(Math.floor(((charCount - padCount) * 5) / 8));\n\n let byteCount = 0;\n\n for (let i = 0; i < charCount; i += 8) {\n\n const c1 = chars[i]!;\n const c2 = chars[i + 1]!;\n const c3 = chars[i + 2]!;\n const c4 = chars[i + 3]!;\n const c5 = chars[i + 4]!;\n const c6 = chars[i + 5]!;\n const c7 = chars[i + 6]!;\n const c8 = chars[i + 7]!;\n\n const ci1 = DECODED_TABLE[c1]!;\n const ci2 = DECODED_TABLE[c2]!;\n const ci3 = c3 !== PADDING ? DECODED_TABLE[c3]! : 0;\n const ci4 = c4 !== PADDING ? DECODED_TABLE[c4]! : 0;\n const ci5 = c5 !== PADDING ? DECODED_TABLE[c5]! : 0;\n const ci6 = c6 !== PADDING ? DECODED_TABLE[c6]! : 0;\n const ci7 = c7 !== PADDING ? DECODED_TABLE[c7]! : 0;\n const ci8 = c8 !== PADDING ? DECODED_TABLE[c8]! : 0;\n\n if (ci1 === 255 ||\n ci2 === 255 ||\n ci3 === 255 ||\n ci4 === 255 ||\n ci5 === 255 ||\n ci6 === 255 ||\n ci7 === 255 ||\n ci8 === 255) {\n\n throw new KastenBase32DecodeError('Invalid Base32');\n }\n\n const b1 = ((ci1 & 0x1F) << 3) | ((ci2 & 0x1C) >> 2);\n const b2 = ((ci2 & 0x03) << 6) | ((ci3 & 0x1F) << 1) | ((ci4 & 0x10) >> 4);\n const b3 = ((ci4 & 0x0F) << 4) | ((ci5 & 0x1E) >> 1);\n const b4 = ((ci5 & 0x01) << 7) | ((ci6 & 0x1F) << 2) | ((ci7 & 0x18) >> 3);\n const b5 = ((ci7 & 0x07) << 5) | (ci8 & 0x1F);\n\n bytes[byteCount++] = b1;\n\n if (byteCount < bytes.length)\n bytes[byteCount++] = b2;\n\n if (byteCount < bytes.length)\n bytes[byteCount++] = b3;\n\n if (byteCount < bytes.length && c5 !== PADDING)\n bytes[byteCount++] = b4;\n\n if (byteCount < bytes.length && c7 != PADDING)\n bytes[byteCount++] = b5;\n }\n\n return bytes.subarray(0, byteCount);\n }\n}","import { Base32 } from '@/base32';\nimport { CharCodes } from '@/utils/char-codes';\nimport { KastenBase32DecodeError } from '@/base32/errors';\n\nexport class RFC4648Base32Hex extends Base32 {\n\n private static readonly PADDING_CHAR_CODE: number = '='.charCodeAt(0);\n\n private static readonly TABLE: string\n = '0123456789ABCDEFGHIJKLMNOPQRSTUV';\n\n private static readonly ENCODED_TABLE = new Uint8Array(\n [...this.TABLE].map(c => c.charCodeAt(0))\n );\n\n private static readonly DECODED_TABLE = new Uint8Array(256);\n\n static {\n this.DECODED_TABLE.fill(255);\n\n for (let i = 0; i < this.TABLE.length; i++) {\n this.DECODED_TABLE[this.TABLE.charCodeAt(i)] = i;\n }\n }\n\n public override encode(bytes: Uint8Array): string {\n\n const ENCODED_TABLE = RFC4648Base32Hex.ENCODED_TABLE;\n\n const chars = new Uint8Array(Math.ceil(bytes.length / 5) * 8);\n\n let count = 0;\n\n for (let i = 0; i < bytes.length; i += 5) {\n\n const b1 = bytes[i]!;\n const b2 = bytes[i + 1] ?? 0;\n const b3 = bytes[i + 2] ?? 0;\n const b4 = bytes[i + 3] ?? 0;\n const b5 = bytes[i + 4] ?? 0;\n\n const ci1 = (b1 & 0xFF) >> 3;\n const ci2 = ((b1 & 0x07) << 2) | ((b2 & 0xC0) >> 6);\n const ci3 = (b2 & 0x3E) >> 1;\n const ci4 = ((b2 & 0x01) << 4) | ((b3 & 0xF0) >> 4);\n const ci5 = ((b3 & 0x0F) << 1) | ((b4 & 0x80) >> 7);\n const ci6 = (b4 & 0x7C) >> 2;\n const ci7 = ((b4 & 0x03) << 3) | ((b5 & 0xE0) >> 5);\n const ci8 = b5 & 0x1F;\n\n const c1 = ENCODED_TABLE[ci1]!;\n const c2 = ENCODED_TABLE[ci2]!;\n const c3 = ENCODED_TABLE[ci3]!;\n const c4 = ENCODED_TABLE[ci4]!;\n const c5 = ENCODED_TABLE[ci5]!;\n const c6 = ENCODED_TABLE[ci6]!;\n const c7 = ENCODED_TABLE[ci7]!;\n const c8 = ENCODED_TABLE[ci8]!;\n\n chars[count++] = c1;\n chars[count++] = c2;\n chars[count++] = c3;\n chars[count++] = c4;\n chars[count++] = c5;\n chars[count++] = c6;\n chars[count++] = c7;\n chars[count++] = c8;\n }\n\n const remain = bytes.length % 5;\n\n const padding =\n remain === 4 ? 1 :\n remain === 3 ? 3 :\n remain === 2 ? 4 :\n remain === 1 ? 6 : 0;\n\n for (let i = padding; i > 0; i--) {\n chars[count - i] = RFC4648Base32Hex.PADDING_CHAR_CODE;\n }\n\n return Base32.textDecoder.decode(chars.subarray(0, count));\n }\n \n public override decode(base32: string): Uint8Array {\n\n const upper = base32.toUpperCase();\n\n const DECODED_TABLE = RFC4648Base32Hex.DECODED_TABLE;\n const PADDING = RFC4648Base32Hex.PADDING_CHAR_CODE;\n\n const chars = new Uint8Array(base32.length);\n\n let charCount = 0;\n\n for (let i = 0; i < base32.length; i++) {\n\n const c = upper.charCodeAt(i);\n\n if (!CharCodes.isWhitespace(c)) {\n\n chars[charCount++] = c;\n }\n }\n\n if (charCount % 8 !== 0)\n throw new KastenBase32DecodeError('Invalid length string.');\n\n let firstPad = -1;\n\n for (let i = 0; i < charCount; i++) {\n if (chars[i] === PADDING) {\n firstPad = i;\n break;\n }\n }\n\n let padCount = 0;\n\n if (firstPad !== -1) {\n\n if (firstPad < charCount - 6)\n throw new KastenBase32DecodeError('Invalid padding position.');\n\n for (let i = firstPad; i < charCount; i++) {\n if (chars[i] !== PADDING) {\n throw new KastenBase32DecodeError('Invalid padding');\n }\n }\n\n padCount = charCount - firstPad;\n\n if (padCount !== 1 && padCount !== 3 && padCount !== 4 && padCount !== 6) {\n throw new KastenBase32DecodeError('Invalid padding');\n }\n }\n\n const bytes = new Uint8Array(Math.floor(((charCount - padCount) * 5) / 8));\n\n let byteCount = 0;\n\n for (let i = 0; i < charCount; i += 8) {\n\n const c1 = chars[i]!;\n const c2 = chars[i + 1]!;\n const c3 = chars[i + 2]!;\n const c4 = chars[i + 3]!;\n const c5 = chars[i + 4]!;\n const c6 = chars[i + 5]!;\n const c7 = chars[i + 6]!;\n const c8 = chars[i + 7]!;\n\n const ci1 = DECODED_TABLE[c1]!;\n const ci2 = DECODED_TABLE[c2]!;\n const ci3 = c3 !== PADDING ? DECODED_TABLE[c3]! : 0;\n const ci4 = c4 !== PADDING ? DECODED_TABLE[c4]! : 0;\n const ci5 = c5 !== PADDING ? DECODED_TABLE[c5]! : 0;\n const ci6 = c6 !== PADDING ? DECODED_TABLE[c6]! : 0;\n const ci7 = c7 !== PADDING ? DECODED_TABLE[c7]! : 0;\n const ci8 = c8 !== PADDING ? DECODED_TABLE[c8]! : 0;\n\n if (ci1 === 255 ||\n ci2 === 255 ||\n ci3 === 255 ||\n ci4 === 255 ||\n ci5 === 255 ||\n ci6 === 255 ||\n ci7 === 255 ||\n ci8 === 255) {\n\n throw new KastenBase32DecodeError('Invalid Base32');\n }\n\n const b1 = ((ci1 & 0x1F) << 3) | ((ci2 & 0x1C) >> 2);\n const b2 = ((ci2 & 0x03) << 6) | ((ci3 & 0x1F) << 1) | ((ci4 & 0x10) >> 4);\n const b3 = ((ci4 & 0x0F) << 4) | ((ci5 & 0x1E) >> 1);\n const b4 = ((ci5 & 0x01) << 7) | ((ci6 & 0x1F) << 2) | ((ci7 & 0x18) >> 3);\n const b5 = ((ci7 & 0x07) << 5) | (ci8 & 0x1F);\n\n bytes[byteCount++] = b1;\n\n if (byteCount < bytes.length)\n bytes[byteCount++] = b2;\n\n if (byteCount < bytes.length)\n bytes[byteCount++] = b3;\n\n if (byteCount < bytes.length && c5 !== PADDING)\n bytes[byteCount++] = b4;\n\n if (byteCount < bytes.length && c7 != PADDING)\n bytes[byteCount++] = b5;\n }\n\n return bytes.subarray(0, byteCount);\n }\n}","export type Base64Category = typeof Base64Categories[number];\n\nexport const Base64Categories = ['rfc4648', 'rfc4648-url', 'rfc2025'] as const;\n\n/**\n * Base64 codec.\n */\nexport abstract class Base64 {\n\n /**\n * Encodes byte array to string.\n */\n public abstract encode(bytes: Uint8Array): string;\n\n /**\n * Decodes string to byte array.\n * @param base64 Base64 string\n */\n public abstract decode(base64: string): Uint8Array;\n}","import { KastenError } from '@/errors';\n\n/**\n * Base error type of Base64.\n */\nexport class KastenBase64Error extends KastenError {}\n\n/**\n * Thrown when error occurs on Base64 encoding.\n */\nexport class KastenBase64EncodeError extends KastenBase64Error {};\n\n/**\n * Thrown when error occurs on Base64 decoding.\n */\nexport class KastenBase64DecodeError extends KastenBase64Error {};","import { Base64 } from '@/base64';\nimport { CharCodes } from '@/utils/char-codes';\nimport { KastenBase64DecodeError } from '@/base64/errors';\n\nexport class RFC2045Base64 extends Base64 {\n\n private static readonly PADDING_CHAR_CODE = '='.charCodeAt(0);\n\n private static readonly TABLE: string\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n private static readonly DECODE_TABLE = new Uint8Array(256);\n\n private static readonly ENCODE_TABLE = new Uint8Array(\n [...this.TABLE].map(c => c.charCodeAt(0))\n );\n\n private static readonly decoder = new TextDecoder();\n\n static {\n\n this.DECODE_TABLE.fill(255);\n\n for (let i = 0; i < this.TABLE.length; i++) {\n this.DECODE_TABLE[this.TABLE.charCodeAt(i)] = i;\n }\n }\n\n public override encode = (bytes: Uint8Array): string => {\n\n if (bytes.length === 0) return '';\n\n const ENCODE_TABLE = RFC2045Base64.ENCODE_TABLE;\n const { CR, LF } = CharCodes;\n\n const baseSize = Math.ceil(bytes.length / 3) * 4;\n const linebreaks = Math.floor((baseSize - 1) / 76);\n\n const chars = new Uint8Array(baseSize + linebreaks * 2);\n\n let ci = 0;\n\n let charCout = 0;\n\n for (let i = 0; i < bytes.length; i += 3) {\n\n const b1 = bytes[i]!;\n const b2 = bytes[i + 1] ?? 0;\n const b3 = bytes[i + 2] ?? 0;\n\n const c1 = b1 >> 2;\n const c2 = ((b1 & 0b00000011) << 4) | b2 >> 4;\n const c3 = ((b2 & 0b00001111) << 2) | b3 >> 6;\n const c4 = b3 & 0b00111111;\n\n chars[ci++] = ENCODE_TABLE[c1]!;\n chars[ci++] = ENCODE_TABLE[c2]!;\n chars[ci++] = ENCODE_TABLE[c3]!;\n chars[ci++] = ENCODE_TABLE[c4]!;\n\n charCout += 4;\n\n if (charCout === 76 && ci < chars.length) {\n charCout = 0;\n chars[ci++] = CR;\n chars[ci++] = LF;\n }\n }\n\n const remain = bytes.length % 3;\n\n if (remain === 1) {\n chars[ci - 2] = RFC2045Base64.PADDING_CHAR_CODE;\n chars[ci - 1] = RFC2045Base64.PADDING_CHAR_CODE;\n } else if (remain === 2) {\n chars[ci - 1] = RFC2045Base64.PADDING_CHAR_CODE;\n }\n\n return RFC2045Base64.decoder.decode(chars.subarray(0, ci));\n }\n \n public override decode = (base64: string): Uint8Array => {\n\n const DECODE_TABLE = RFC2045Base64.DECODE_TABLE;\n\n const line = new Uint8Array(base64.length);\n let lineCharCount = 0;\n\n for (let i = 0; i < base64.length; i++) {\n const c = base64.charCodeAt(i);\n if (c !== CharCodes.CR\n && c !== CharCodes.LF\n && c !== CharCodes.SP\n && c !== CharCodes.HT) {\n \n line[lineCharCount++] = c;\n }\n }\n\n if (lineCharCount % 4 !== 0)\n throw new KastenBase64DecodeError('Invalid length string');\n\n let firstPad = -1;\n\n for (let i = 0; i < lineCharCount; i++) {\n if (line[i] === RFC2045Base64.PADDING_CHAR_CODE) {\n firstPad = i;\n break;\n }\n }\n\n if (firstPad !== -1) {\n\n if (firstPad < lineCharCount - 2) {\n throw new KastenBase64DecodeError('Invalid padding position');\n }\n\n for (let i = firstPad; i < lineCharCount; i++) {\n if (line[i] !== RFC2045Base64.PADDING_CHAR_CODE) {\n throw new KastenBase64DecodeError('Invalid padding');\n }\n }\n\n const padCount = lineCharCount - firstPad;\n\n if (padCount !== 1 && padCount !== 2) {\n throw new KastenBase64DecodeError('Invalid padding');\n }\n }\n\n const lineLength = lineCharCount;\n\n const padding = \n line[lineLength - 1] === RFC2045Base64.PADDING_CHAR_CODE\n ? (line[lineLength - 2] === RFC2045Base64.PADDING_CHAR_CODE ? 2 : 1)\n : 0;\n\n const bytes = new Uint8Array((lineCharCount / 4) * 3 - padding);\n\n let writtenOffset = 0;\n\n for (let i = 0; i < lineCharCount; i += 4) {\n\n const code1 = line[i]!;\n const code2 = line[i + 1]!;\n const code3 = line[i + 2]!;\n const code4 = line[i + 3]!;\n\n const ci1 = DECODE_TABLE[code1]!;\n const ci2 = DECODE_TABLE[code2]!;\n const ci3 = code3 !== RFC2045Base64.PADDING_CHAR_CODE ? DECODE_TABLE[code3]! : 0;\n const ci4 = code4 !== RFC2045Base64.PADDING_CHAR_CODE ? DECODE_TABLE[code4]! : 0;\n\n if (ci1 === 255 ||\n ci2 === 255 ||\n (code3 !== RFC2045Base64.PADDING_CHAR_CODE && ci3 === 255) ||\n (code4 !== RFC2045Base64.PADDING_CHAR_CODE && ci4 === 255)) {\n\n throw new KastenBase64DecodeError(\"Invalid Base64\");\n }\n\n const b1 = (ci1 << 2) | (ci2 >> 4);\n const b2 = ((ci2 & 15) << 4) | (ci3 >> 2);\n const b3 = ((ci3 & 3) << 6) | ci4;\n\n bytes[writtenOffset++] = b1;\n \n if (code3 !== RFC2045Base64.PADDING_CHAR_CODE) {\n bytes[writtenOffset++] = b2;\n }\n\n if (code4 !== RFC2045Base64.PADDING_CHAR_CODE) {\n bytes[writtenOffset++] = b3;\n }\n }\n\n return bytes;\n }\n}","import { Base64 } from '@/base64';\nimport { KastenBase64DecodeError } from '@/base64/errors';\nimport { CharCodes } from '@/utils/char-codes';\n\nexport class RFC4648Base64 extends Base64 {\n\n private static readonly PADDING_CHAR_CODE = '='.charCodeAt(0);\n\n private static readonly TABLE: string\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n private static readonly DECODE_TABLE = new Uint8Array(256);\n\n private static readonly ENCODE_TABLE = new Uint8Array(\n [...this.TABLE].map(c => c.charCodeAt(0))\n );\n\n private static readonly decoder = new TextDecoder();\n\n static {\n\n this.DECODE_TABLE.fill(255);\n\n for (let i = 0; i < this.TABLE.length; i++) {\n this.DECODE_TABLE[this.TABLE.charCodeAt(i)] = i;\n }\n }\n\n public override encode = (bytes: Uint8Array): string => {\n\n if (bytes.length === 0) return '';\n\n const ENCODE_TABLE = RFC4648Base64.ENCODE_TABLE;\n\n const baseSize = Math.ceil(bytes.length / 3) * 4;\n const linebreaks = Math.floor((baseSize - 1) / 76);\n\n const chars = new Uint8Array(baseSize + linebreaks * 2);\n\n let ci = 0;\n\n for (let i = 0; i < bytes.length; i += 3) {\n\n const b1 = bytes[i]!;\n const b2 = bytes[i + 1] ?? 0;\n const b3 = bytes[i + 2] ?? 0;\n\n const c1 = b1 >> 2;\n const c2 = ((b1 & 0b00000011) << 4) | b2 >> 4;\n const c3 = ((b2 & 0b00001111) << 2) | b3 >> 6;\n const c4 = b3 & 0b00111111;\n\n chars[ci++] = ENCODE_TABLE[c1]!;\n chars[ci++] = ENCODE_TABLE[c2]!;\n chars[ci++] = ENCODE_TABLE[c3]!;\n chars[ci++] = ENCODE_TABLE[c4]!;\n }\n\n const remain = bytes.length % 3;\n\n if (remain === 1) {\n chars[ci - 2] = RFC4648Base64.PADDING_CHAR_CODE;\n chars[ci - 1] = RFC4648Base64.PADDING_CHAR_CODE;\n } else if (remain === 2) {\n chars[ci - 1] = RFC4648Base64.PADDING_CHAR_CODE;\n }\n\n return RFC4648Base64.decoder.decode(chars.subarray(0, ci));\n }\n \n public override decode = (base64: string): Uint8Array => {\n\n const DECODE_TABLE = RFC4648Base64.DECODE_TABLE;\n\n const line = new Uint8Array(base64.length);\n let lineCharCount = 0;\n\n for (let i = 0; i < base64.length; i++) {\n const c = base64.charCodeAt(i);\n if (!CharCodes.isWhitespace(c)) {\n \n line[lineCharCount++] = c;\n }\n }\n\n if (lineCharCount % 4 !== 0)\n throw new KastenBase64DecodeError('Invalid length string');\n\n let firstPad = -1;\n\n for (let i = 0; i < lineCharCount; i++) {\n if (line[i] === RFC4648Base64.PADDING_CHAR_CODE) {\n firstPad = i;\n break;\n }\n }\n\n if (firstPad !== -1) {\n\n if (firstPad < lineCharCount - 2) {\n throw new KastenBase64DecodeError('Invalid padding position');\n }\n\n for (let i = firstPad; i < lineCharCount; i++) {\n if (line[i] !== RFC4648Base64.PADDING_CHAR_CODE) {\n throw new KastenBase64DecodeError('Invalid padding');\n }\n }\n\n const padCount = lineCharCount - firstPad;\n\n if (padCount !== 1 && padCount !== 2) {\n throw new KastenBase64DecodeError('Invalid padding');\n }\n }\n\n const lineLength = lineCharCount;\n\n const padding = \n line[lineLength - 1] === RFC4648Base64.PADDING_CHAR_CODE\n ? (line[lineLength - 2] === RFC4648Base64.PADDING_CHAR_CODE ? 2 : 1)\n : 0;\n\n const bytes = new Uint8Array((lineCharCount / 4) * 3 - padding);\n\n let writtenOffset = 0;\n\n for (let i = 0; i < lineCharCount; i += 4) {\n\n const code1 = line[i]!;\n const code2 = line[i + 1]!;\n const code3 = line[i + 2]!;\n const code4 = line[i + 3]!;\n\n const ci1 = DECODE_TABLE[code1]!;\n const ci2 = DECODE_TABLE[code2]!;\n const ci3 = code3 !== RFC4648Base64.PADDING_CHAR_CODE ? DECODE_TABLE[code3]! : 0;\n const ci4 = code4 !== RFC4648Base64.PADDING_CHAR_CODE ? DECODE_TABLE[code4]! : 0;\n\n if (ci1 === 255 ||\n ci2 === 255 ||\n (code3 !== RFC4648Base64.PADDING_CHAR_CODE && ci3 === 255) ||\n (code4 !== RFC4648Base64.PADDING_CHAR_CODE && ci4 === 255)) {\n\n throw new KastenBase64DecodeError(\"Invalid Base64\");\n }\n\n const b1 = (ci1 << 2) | (ci2 >> 4);\n const b2 = ((ci2 & 15) << 4) | (ci3 >> 2);\n const b3 = ((ci3 & 3) << 6) | ci4;\n\n bytes[writtenOffset++] = b1;\n \n if (code3 !== RFC4648Base64.PADDING_CHAR_CODE) {\n bytes[writtenOffset++] = b2;\n }\n\n if (code4 !== RFC4648Base64.PADDING_CHAR_CODE) {\n bytes[writtenOffset++] = b3;\n }\n }\n\n return bytes;\n }\n}","import { CharCodes } from '@/utils/char-codes';\nimport { KastenBase64DecodeError } from '@/base64/errors';\nimport { Base64 } from '@/base64';\n\nexport class RFC4648Base64URL extends Base64 {\n \n private static readonly PADDING_CHAR_CODE = '='.charCodeAt(0);\n\n private static readonly TABLE: string\n = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_';\n\n private static readonly DECODE_TABLE = new Uint8Array(256);\n\n private static readonly ENCODE_TABLE = new Uint8Array(\n [...this.TABLE].map(c => c.charCodeAt(0))\n );\n\n private static readonly decoder = new TextDecoder();\n\n static {\n \n this.DECODE_TABLE.fill(255);\n\n for (let i = 0; i < this.TABLE.length; i++) {\n this.DECODE_TABLE[this.TABLE.charCodeAt(i)] = i;\n }\n }\n\n public override encode = (bytes: Uint8Array): string => {\n\n if (bytes.length === 0) return '';\n\n const ENCODE_TABLE = RFC4648Base64URL.ENCODE_TABLE;\n\n const baseSize = Math.ceil(bytes.length / 3) * 4;\n const linebreaks = Math.floor((baseSize - 1) / 76);\n\n const chars = new Uint8Array(baseSize + linebreaks * 2);\n\n let ci = 0;\n\n for (let i = 0; i < bytes.length; i += 3) {\n\n const b1 = bytes[i]!;\n const b2 = bytes[i + 1] ?? 0;\n const b3 = bytes[i + 2] ?? 0;\n\n const c1 = b1 >> 2;\n const c2 = ((b1 & 0b00000011) << 4) | b2 >> 4;\n const c3 = ((b2 & 0b00001111) << 2) | b3 >> 6;\n const c4 = b3 & 0b00111111;\n\n chars[ci++] = ENCODE_TABLE[c1]!;\n chars[ci++] = ENCODE_TABLE[c2]!;\n chars[ci++] = ENCODE_TABLE[c3]!;\n chars[ci++] = ENCODE_TABLE[c4]!;\n }\n\n const remain = bytes.length % 3;\n\n if (remain === 1) {\n chars[ci - 2] = RFC4648Base64URL.PADDING_CHAR_CODE;\n chars[ci - 1] = RFC4648Base64URL.PADDING_CHAR_CODE;\n } else if (remain === 2) {\n chars[ci - 1] = RFC4648Base64URL.PADDING_CHAR_CODE;\n }\n\n return RFC4648Base64URL.decoder.decode(chars.subarray(0, ci));\n }\n \n public override decode = (base64: string): Uint8Array => {\n\n const DECODE_TABLE = RFC4648Base64URL.DECODE_TABLE;\n\n const line = new Uint8Array(base64.length);\n let lineCharCount = 0;\n\n for (let i = 0; i < base64.length; i++) {\n const c = base64.charCodeAt(i);\n if (!CharCodes.isWhitespace(c)) {\n \n line[lineCharCount++] = c;\n }\n }\n\n if (lineCharCount % 4 !== 0)\n throw new KastenBase64DecodeError('Invalid length string');\n\n let firstPad = -1;\n\n for (let i = 0; i < lineCharCount; i++) {\n if (line[i] === RFC4648Base64URL.PADDING_CHAR_CODE) {\n firstPad = i;\n break;\n }\n }\n\n if (firstPad !== -1) {\n\n if (firstPad < lineCharCount - 2) {\n throw new KastenBase64DecodeError('Invalid padding position');\n }\n\n for (let i = firstPad; i < lineCharCount; i++) {\n if (line[i] !== RFC4648Base64URL.PADDING_CHAR_CODE) {\n throw new KastenBase64DecodeError('Invalid padding');\n }\n }\n\n const padCount = lineCharCount - firstPad;\n\n if (padCount !== 1 && padCount !== 2) {\n throw new KastenBase64DecodeError('Invalid padding');\n }\n }\n\n const lineLength = lineCharCount;\n\n const padding = \n line[lineLength - 1] === RFC4648Base64URL.PADDING_CHAR_CODE\n ? (line[lineLength - 2] === RFC4648Base64URL.PADDING_CHAR_CODE ? 2 : 1)\n : 0;\n\n const bytes = new Uint8Array((lineCharCount / 4) * 3 - padding);\n\n let writtenOffset = 0;\n\n for (let i = 0; i < lineCharCount; i += 4) {\n\n const code1 = line[i]!;\n const code2 = line[i + 1]!;\n const code3 = line[i + 2]!;\n const code4 = line[i + 3]!;\n\n const ci1 = DECODE_TABLE[code1]!;\n const ci2 = DECODE_TABLE[code2]!;\n const ci3 = code3 !== RFC4648Base64URL.PADDING_CHAR_CODE ? DECODE_TABLE[code3]! : 0;\n const ci4 = code4 !== RFC4648Base64URL.PADDING_CHAR_CODE ? DECODE_TABLE[code4]! : 0;\n\n if (ci1 === 255 ||\n ci2 === 255 ||\n (code3 !== RFC4648Base64URL.PADDING_CHAR_CODE && ci3 === 255) ||\n (code4 !== RFC4648Base64URL.PADDING_CHAR_CODE && ci4 === 255)) {\n\n throw new KastenBase64DecodeError(\"Invalid Base64\");\n }\n\n const b1 = (ci1 << 2) | (ci2 >> 4);\n const b2 = ((ci2 & 15) << 4) | (ci3 >> 2);\n const b3 = ((ci3 & 3) << 6) | ci4;\n\n bytes[writtenOffset++] = b1;\n \n if (code3 !== RFC4648Base64URL.PADDING_CHAR_CODE) {\n bytes[writtenOffset++] = b2;\n }\n\n if (code4 !== RFC4648Base64URL.PADDING_CHAR_CODE) {\n bytes[writtenOffset++] = b3;\n }\n }\n\n return bytes;\n }\n}","export const RunLengthCatgories = ['basic', 'pack-bits', 'pdf'] as const;\n\nexport type RunLengthCatgory = typeof RunLengthCatgories[number];\n\n/**\n * Run-Length encoding and decoding.\n */\nexport abstract class RunLength {\n\n /**\n * Encodes bytes to Run-Length encoded bytes.\n * @param bytes \n */\n public abstract encode(bytes: Uint8Array): Uint8Array;\n\n /**\n * Decodes Run-Length encoded bytes to original bytes.\n * @param runLength \n */\n public abstract decode(runLength: Uint8Array): Uint8Array;\n}","import { RunLength } from '@/run-length';\n\n/**\n * Basic Run-Length codec.\n */\nexport class BasicRunLength extends RunLength {\n \n public override encode(bytes: Uint8Array): Uint8Array {\n\n const encoded = new Uint8Array(bytes.length * 2);\n\n let byteCount = 0;\n\n let prev: number | null = null;\n\n let count = 0;\n\n for(let i = 0; i < bytes.length; i++) {\n\n const byte = bytes[i]!;\n\n if (prev === null) {\n prev = byte;\n count = 1;\n continue;\n }\n\n if (prev === byte) {\n\n if (count < 255) {\n count++;\n continue;\n }\n }\n\n encoded[byteCount++] = count;\n encoded[byteCount++] = prev;\n\n prev = byte;\n count = 1;\n }\n\n if (prev !== null) {\n encoded[byteCount++] = count;\n encoded[byteCount++] = prev;\n }\n\n return encoded.subarray(0, byteCount);\n }\n \n public override decode(runLength: Uint8Array): Uint8Array {\n\n const decoded: number[] = [];\n\n for (let i = 0; i < runLength.length; i += 2) {\n\n const count = runLength[i]!;\n\n const byte = runLength[i + 1]!;\n\n for (let j = 0; j < count; j++) {\n decoded.push(byte);\n }\n }\n\n return new Uint8Array(decoded);\n }\n}","import { KastenError } from '@/errors';\n\nexport class KastenRunLengthError extends KastenError {}\n\nexport class KastenRunLengthEncodeError extends KastenRunLengthError {}\n\nexport class KastenRunLengthDecodeError extends KastenRunLengthError {}","import { RunLength } from '@/run-length';\nimport { KastenRunLengthDecodeError } from '../errors';\n\n/**\n * PackBits codec.\n */\nexport class PackBits extends RunLength {\n\n public override encode(bytes: Uint8Array): Uint8Array {\n\n if (bytes.length === 0) return new Uint8Array([]);\n\n const byteLength = bytes.length;\n\n const encoded: number[] = [];\n\n let i = 0;\n\n while(i < byteLength) {\n\n const byte = bytes[i]!;\n\n let j = 1;\n\n while (i + j < byteLength && byte === bytes[i + j] && j < 128) {\n j++;\n }\n\n if (j >= 3) {\n encoded.push(256 - (j - 1));\n encoded.push(byte);\n i += j;\n continue;\n }\n\n while (i + j < byteLength && j < 128) {\n\n const pos = i + j;\n\n const _byte = bytes[pos]!;\n\n if (bytes[pos - 1] === _byte && _byte === bytes[pos + 1]) {\n j--;\n break;\n }\n\n j++;\n }\n\n encoded.push(j - 1);\n\n for (let k = i; k < i + j; k++) {\n encoded.push(bytes[k]!);\n }\n\n i += j;\n }\n\n return new Uint8Array(encoded);\n }\n \n public override decode(runLength: Uint8Array): Uint8Array {\n\n const decoded: number[] = [];\n\n const byteLength = runLength.length;\n\n let i = 0;\n\n while(i < byteLength) {\n\n const header = runLength[i]!;\n\n if (header === 0x80) continue;\n\n if (0 <= header && header <= 0x7F) {\n \n const end = i + header + 2;\n\n for (let j = i + 1; j < end; j++) {\n\n const byte = runLength[j];\n\n if (byte === undefined)\n throw new KastenRunLengthDecodeError('Invalid PackBits encoding');\n\n decoded.push(byte);\n }\n\n i = end;\n continue;\n }\n\n if (0x81 <= header && header <= 0xFF) {\n\n const count = 0x101 - header;\n\n const byte = runLength[i + 1];\n\n if (byte === undefined)\n throw new KastenRunLengthDecodeError('Invalid PackBits encoding');\n\n for (let j = 0; j < count; j++) {\n decoded.push(byte); \n }\n\n i += 2;\n continue;\n }\n }\n\n return new Uint8Array(decoded);\n }\n}","import { RunLength } from '@/run-length';\nimport { KastenRunLengthDecodeError } from '@/run-length/errors';\n\nexport class Pdf extends RunLength {\n \n public override encode(bytes: Uint8Array): Uint8Array {\n\n if (bytes.length === 0) return new Uint8Array([]);\n\n const byteLength = bytes.length;\n\n const encoded: number[] = [];\n\n let i = 0;\n\n while(i < byteLength) {\n\n const byte = bytes[i]!;\n\n let j = 1;\n\n while (i + j < byteLength && byte === bytes[i + j] && j < 128) {\n j++;\n }\n\n if (j >= 2) {\n encoded.push(257 - j);\n encoded.push(byte);\n i += j;\n continue;\n }\n\n while (i + j < byteLength && j < 128) {\n\n const pos = i + j;\n\n const _byte = bytes[pos]!;\n\n if (bytes[pos - 1] === _byte && _byte === bytes[pos + 1]) {\n j--;\n break;\n }\n\n j++;\n }\n\n encoded.push(j - 1);\n\n for (let k = i; k < i + j; k++) {\n encoded.push(bytes[k]!);\n }\n\n i += j;\n }\n\n return new Uint8Array(encoded);\n }\n\n public override decode(runLength: Uint8Array): Uint8Array {\n\n const decoded: number[] = [];\n \n const byteLength = runLength.length;\n\n let i = 0;\n\n while(i < byteLength) {\n\n const header = runLength[i]!;\n\n if (header === 0x80) continue;\n\n if (0 <= header && header <= 0x7F) {\n \n const end = i + header + 2;\n\n for (let j = i + 1; j < end; j++) {\n\n const byte = runLength[j];\n\n if (byte === undefined)\n throw new KastenRunLengthDecodeError('Invalid PackBits encoding');\n\n decoded.push(byte);\n }\n\n i = end;\n continue;\n }\n\n if (0x81 <= header && header <= 0xFF) {\n\n const count = 0x101 - header;\n\n const byte = runLength[i + 1];\n\n if (byte === undefined)\n throw new KastenRunLengthDecodeError('Invalid PackBits encoding');\n\n for (let j = 0; j < count; j++) {\n decoded.push(byte); \n }\n\n i += 2;\n continue;\n }\n }\n\n return new Uint8Array(decoded);\n }\n}","import type { Base16, Base16Category } from '@/base16';\nimport type { Base32, Base32Category } from '@/base32';\nimport type { Base64, Base64Category } from '@/base64';\nimport type { RunLength, RunLengthCatgory } from '@/run-length';\nimport { RFC4648Base16 } from '@/base16/rfc4648/rfc4648';\nimport { AsciiHexDecode } from '@/base16/ascii/ascii';\nimport { RFC4648Base32 } from '@/base32/rfc4648/rfc4648';\nimport { RFC4648Base32Hex } from '@/base32/rfc4648/rfc4648hex';\nimport { RFC2045Base64 } from '@/base64/rfc2045/rfc2045';\nimport { RFC4648Base64 } from '@/base64/rfc4648/rfc4648';\nimport { RFC4648Base64URL } from '@/base64/rfc4648/rfc4648url';\nimport { BasicRunLength } from '@/run-length/basic/basic-run-length';\nimport { PackBits } from '@/run-length/pack-bits/pack-bits';\nimport { Pdf } from '@/run-length/pdf/pdf';\n\n/**\n * Entry point of the Kasten library.\n * All encoding/decoding feature implementations are created through this class.\n *\n * @example\n * const base64 = Kasten.base64('rfc4648');\n * const encoded = base64.encode(data);\n *\n * @example\n * const base32 = Kasten.base32('rfc464hex');\n * const decoded = base32.decode(text);\n *\n * @example\n * const base16 = Kasten.base16();\n *\n * @example\n * const runLength = Kasten.runLength('pack-bits');\n */\nclass Kasten {\n\n private constructor() {}\n\n /**\n * Creates Base 64 codec instance.\n * @param category Base 64 category.\n */\n public static base64 = (category?: Base64Category): Base64 => {\n\n switch(category) {\n case 'rfc4648-url':\n return new RFC4648Base64URL();\n case 'rfc2025':\n return new RFC2045Base64();\n case 'rfc4648':\n default:\n return new RFC4648Base64();\n }\n }\n\n /**\n * Creates Base 32 codec instance.\n * @param category Base 32 category.\n */\n public static base32 = (category?: Base32Category): Base32 => {\n\n switch(category) {\n case 'rfc468-hex':\n return new RFC4648Base32Hex();\n case 'rfc4648':\n default:\n return new RFC4648Base32();\n }\n }\n\n /**\n * Create Base 16 codec instance.\n */\n public static base16 = (category?: Base16Category): Base16 => {\n\n switch(category) {\n case 'ascii':\n return new AsciiHexDecode();\n case 'rfc4648':\n default:\n return new RFC4648Base16();\n }\n }\n\n /**\n * Creates Run-Length codec instance.\n */\n public static runLength = (category?: RunLengthCatgory): RunLength => {\n\n switch(category) {\n case 'pack-bits':\n return new PackBits();\n case 'pdf':\n return new Pdf();\n case 'basic':\n default:\n return new BasicRunLength();\n }\n }\n}\n\nexport {\n Kasten,\n type Base64,\n type Base64Category as Base64Catgory,\n type Base32,\n type Base32Category,\n type Base16,\n type Base16Category,\n type RunLength,\n type RunLengthCatgory\n}"],"mappings":";;;;;AAOA,IAAsB,SAAtB,MAA6B;;;ACP7B,IAAa,YAAb,MAAuB;CAEnB,OAAc,KAAK;CAEnB,OAAc,KAAK;CAEnB,OAAc,KAAK;CAEnB,OAAc,KAAK;CAEnB,OAAc,KAAK;CAEnB,OAAc,KAAK;CAEnB,cAAsB;CAEtB,OAAc,gBAAgB,MAAuB;EAEjD,MAAM,OAAO,OAAO;AAEpB,MAAI,SAAS,YAAY,SAAS,SAC9B,OAAM,IAAI,MAAM,yBAAyB;AAE7C,MAAI,SAAS,YAAa,EAAa,WAAW,EAC9C,OAAM,IAAI,MAAM,mCAAmC;EAEvD,MAAM,OAAO,OAAO,MAAM,WACpB,EAAE,WAAW,EAAE,GACf;AAEN,SAAQ,KAAK,MAAM,QAAQ,QAAQ,KAAK,MAAO,SAAS,KAAK;;;;;AC9BrE,IAAa,cAAb,cAAiC,MAAM;;;ACEvC,IAAa,oBAAb,cAAuC,YAAY;AAEnD,IAAa,0BAAb,cAA6C,kBAAkB;AAE/D,IAAa,0BAAb,cAA6C,kBAAkB;;;;;;ACC/D,IAAa,gBAAb,MAAa,sBAAsB,OAAO;CAEtC,OAAwB,cAAc,IAAI,aAAa;CAEvD,OAAwB,QAAQ;CAEhC,OAAwB,gBAAgB,IAAI,WACxC,CAAC,GAAG,KAAK,MAAM,CAAC,KAAI,MAAK,EAAE,WAAW,EAAE,CAAC,CAC5C;CAED,OAAwB,gBAAgB,IAAI,WAAW,IAAI;CAE3D;AACI,OAAK,cAAc,KAAK,IAAI;AAE5B,OAAK,IAAI,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,IACnC,MAAK,cAAc,KAAK,MAAM,WAAW,EAAE,IAAI;;CAIvD,OAAuB,OAA2B;EAE9C,MAAM,gBAAgB,cAAc;EAEpC,MAAM,QAAQ,IAAI,WAAW,MAAM,SAAS,EAAE;EAE9C,IAAI,YAAY;AAEhB,OAAK,MAAM,QAAQ,OAAO;GAEtB,MAAM,OAAO,OAAO,QAAS;GAC7B,MAAM,MAAM,OAAO;GAEnB,MAAM,KAAK,cAAc;GACzB,MAAM,KAAK,cAAc;AAEzB,SAAM,eAAe;AACrB,SAAM,eAAe;;AAGzB,SAAO,cAAc,YAAY,OAAO,MAAM;;CAGlD,OAAuB,QAA4B;EAE/C,MAAM,gBAAgB,cAAc;EAEpC,MAAM,QAAQ,OAAO,aAAa;EAClC,MAAM,QAAQ,IAAI,WAAW,OAAO,OAAO;EAE3C,IAAI,YAAY;AAEhB,OAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;GACpC,MAAM,IAAI,MAAM,WAAW,EAAE;AAE7B,OAAI,UAAU,aAAa,EAAE,CACzB;AAEJ,OAAI,CAAC,cAAc,MAAM,cAAc,MAAM,IACzC,OAAM,IAAI,wBAAwB,6BAA6B,OAAO,OAAO,EAAE,GAAG;AAEtF,SAAM,eAAe;;AAGzB,MAAI,YAAY,MAAM,EAClB,OAAM,IAAI,wBAAwB,iBAAiB;EAEvD,MAAM,QAAQ,IAAI,WAAW,KAAK,KAAK,OAAO,SAAS,EAAE,CAAC;EAE1D,IAAI,YAAY;AAEhB,OAAK,IAAI,IAAI,GAAG,IAAI,WAAW,KAAK,GAAG;GAEnC,MAAM,KAAK,MAAM;GACjB,MAAM,KAAK,MAAM,IAAI;GAErB,MAAM,MAAM,cAAc;GAC1B,MAAM,MAAM,cAAc;GAE1B,MAAM,QAAS,MAAM,OAAS,IAAM,MAAM;AAE1C,SAAM,eAAe;;AAGzB,SAAO,MAAM,SAAS,GAAG,UAAU;;;;;;;;ACpF3C,IAAa,iBAAb,cAAoC,OAAO;CAEvC,OAAuB,OAA2B;AAE9C,MAAI,MAAM,WAAW,EAAG,QAAO;EAE/B,MAAM,QAAkB,EAAE;AAE1B,OAAK,MAAM,QAAQ,OAAO;GACtB,MAAM,OAAO,KAAK,SAAS,GAAG,CAAC,SAAS,GAAG,IAAI;AAC/C,SAAM,KAAK,KAAK;;AAGpB,QAAM,KAAK,IAAI;AAEf,SAAO,MAAM,KAAK,GAAG;;CAGzB,OAAuB,QAA4B;EAE/C,MAAM,QAAkB,EAAE;AAE1B,OAAK,MAAM,KAAK,QAAQ;AAEpB,OAAI,MAAM,IAAK;AAEf,OAAI,UAAU,aAAa,EAAE,CAAE;GAE/B,MAAM,OAAO,EAAE,WAAW,EAAE;AAE5B,OAAI,EAAE,MAAM,QAAQ,QAAQ,OAAO,EAAE,MAAM,QAAQ,QAAQ,OAAO,EAAE,MAAK,QAAQ,QAAQ,KACrF,OAAM,IAAI,wBAAwB,iBAAiB,IAAI;AAE3D,SAAM,KAAK,EAAE;;AAGjB,MAAI,MAAM,SAAS,MAAM,EAAG,OAAM,KAAK,IAAI;EAE3C,MAAM,YAAY,MAAM;EAExB,MAAM,QAAQ,IAAI,WAAW,KAAK,KAAK,YAAY,EAAE,CAAC;EAEtD,IAAI,YAAY;AAEhB,OAAK,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,WAAW,KAAK,GAAG,KAAK;GAE/C,MAAM,MAAM,MAAM,KAAM,MAAM,IAAI;GAElC,MAAM,OAAO,OAAO,SAAS,KAAK,GAAG;AAErC,SAAM,eAAe;;AAGzB,SAAO,MAAM,SAAS,GAAG,UAAU;;;;;;;;ACrD3C,IAAsB,SAAtB,MAA6B;CAEzB,OAA0B,cAAc,IAAI,aAAa;;;;ACP7D,IAAa,oBAAb,cAAuC,YAAY;AAEnD,IAAa,0BAAb,cAA6C,kBAAkB;AAE/D,IAAa,0BAAb,cAA6C,kBAAkB;;;ACF/D,IAAa,gBAAb,MAAa,sBAAsB,OAAO;CAEtC,OAAwB,oBAA4B,IAAI,WAAW,EAAE;CAErE,OAAwB,QAClB;CAEN,OAAwB,gBAAgB,IAAI,WACxC,CAAC,GAAG,KAAK,MAAM,CAAC,KAAI,MAAK,EAAE,WAAW,EAAE,CAAC,CAC5C;CAED,OAAwB,gBAAgB,IAAI,WAAW,IAAI;CAE3D;AACI,OAAK,cAAc,KAAK,IAAI;AAE5B,OAAK,IAAI,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,IACnC,MAAK,cAAc,KAAK,MAAM,WAAW,EAAE,IAAI;;CAIvD,OAAuB,OAA2B;EAE9C,MAAM,gBAAgB,cAAc;EAEpC,MAAM,QAAQ,IAAI,WAAW,KAAK,KAAK,MAAM,SAAS,EAAE,GAAG,EAAE;EAE7D,IAAI,QAAQ;AAEZ,OAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;GAEtC,MAAM,KAAK,MAAM;GACjB,MAAM,KAAK,MAAM,IAAI,MAAM;GAC3B,MAAM,KAAK,MAAM,IAAI,MAAM;GAC3B,MAAM,KAAK,MAAM,IAAI,MAAM;GAC3B,MAAM,KAAK,MAAM,IAAI,MAAM;GAE3B,MAAM,OAAO,KAAK,QAAS;GAC3B,MAAM,OAAQ,KAAK,MAAS,KAAO,KAAK,QAAS;GACjD,MAAM,OAAO,KAAK,OAAS;GAC3B,MAAM,OAAQ,KAAK,MAAS,KAAO,KAAK,QAAS;GACjD,MAAM,OAAQ,KAAK,OAAS,KAAO,KAAK,QAAS;GACjD,MAAM,OAAO,KAAK,QAAS;GAC3B,MAAM,OAAQ,KAAK,MAAS,KAAO,KAAK,QAAS;GACjD,MAAM,MAAM,KAAK;GAEjB,MAAM,KAAK,cAAc;GACzB,MAAM,KAAK,cAAc;GACzB,MAAM,KAAK,cAAc;GACzB,MAAM,KAAK,cAAc;GACzB,MAAM,KAAK,cAAc;GACzB,MAAM,KAAK,cAAc;GACzB,MAAM,KAAK,cAAc;GACzB,MAAM,KAAK,cAAc;AAEzB,SAAM,WAAW;AACjB,SAAM,WAAW;AACjB,SAAM,WAAW;AACjB,SAAM,WAAW;AACjB,SAAM,WAAW;AACjB,SAAM,WAAW;AACjB,SAAM,WAAW;AACjB,SAAM,WAAW;;EAGrB,MAAM,SAAS,MAAM,SAAS;EAE9B,MAAM,UACF,WAAW,IAAI,IACf,WAAW,IAAI,IACf,WAAW,IAAI,IACf,WAAW,IAAI,IAAI;AAEvB,OAAK,IAAI,IAAI,SAAS,IAAI,GAAG,IACzB,OAAM,QAAQ,KAAK,cAAc;AAGrC,SAAO,OAAO,YAAY,OAAO,MAAM,SAAS,GAAG,MAAM,CAAC;;CAG9D,OAAuB,QAA4B;EAE/C,MAAM,QAAQ,OAAO,aAAa;EAElC,MAAM,gBAAgB,cAAc;EACpC,MAAM,UAAU,cAAc;EAE9B,MAAM,QAAQ,IAAI,WAAW,OAAO,OAAO;EAE3C,IAAI,YAAY;AAEhB,OAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;GAEpC,MAAM,IAAI,MAAM,WAAW,EAAE;AAE7B,OAAI,CAAC,UAAU,aAAa,EAAE,CAE1B,OAAM,eAAe;;AAI7B,MAAI,YAAY,MAAM,EAClB,OAAM,IAAI,wBAAwB,yBAAyB;EAE/D,IAAI,WAAW;AAEf,OAAK,IAAI,IAAI,GAAG,IAAI,WAAW,IAC3B,KAAI,MAAM,OAAO,SAAS;AACtB,cAAW;AACX;;EAIR,IAAI,WAAW;AAEf,MAAI,aAAa,IAAI;AAEjB,OAAI,WAAW,YAAY,EACvB,OAAM,IAAI,wBAAwB,4BAA4B;AAElE,QAAK,IAAI,IAAI,UAAU,IAAI,WAAW,IAClC,KAAI,MAAM,OAAO,QACb,OAAM,IAAI,wBAAwB,kBAAkB;AAI5D,cAAW,YAAY;AAEvB,OAAI,aAAa,KAAK,aAAa,KAAK,aAAa,KAAK,aAAa,EACnE,OAAM,IAAI,wBAAwB,kBAAkB;;EAI5D,MAAM,QAAQ,IAAI,WAAW,KAAK,OAAQ,YAAY,YAAY,IAAK,EAAE,CAAC;EAE1E,IAAI,YAAY;AAEhB,OAAK,IAAI,IAAI,GAAG,IAAI,WAAW,KAAK,GAAG;GAEnC,MAAM,KAAK,MAAM;GACjB,MAAM,KAAK,MAAM,IAAI;GACrB,MAAM,KAAK,MAAM,IAAI;GACrB,MAAM,KAAK,MAAM,IAAI;GACrB,MAAM,KAAK,MAAM,IAAI;GACrB,MAAM,KAAK,MAAM,IAAI;GACrB,MAAM,KAAK,MAAM,IAAI;GACrB,MAAM,KAAK,MAAM,IAAI;GAErB,MAAM,MAAM,cAAc;GAC1B,MAAM,MAAM,cAAc;GAC1B,MAAM,MAAM,OAAO,UAAU,cAAc,MAAO;GAClD,MAAM,MAAM,OAAO,UAAU,cAAc,MAAO;GAClD,MAAM,MAAM,OAAO,UAAU,cAAc,MAAO;GAClD,MAAM,MAAM,OAAO,UAAU,cAAc,MAAO;GAClD,MAAM,MAAM,OAAO,UAAU,cAAc,MAAO;GAClD,MAAM,MAAM,OAAO,UAAU,cAAc,MAAO;AAElD,OAAI,QAAQ,OACR,QAAQ,OACR,QAAQ,OACR,QAAQ,OACR,QAAQ,OACR,QAAQ,OACR,QAAQ,OACR,QAAQ,IAER,OAAM,IAAI,wBAAwB,iBAAiB;GAGvD,MAAM,MAAO,MAAM,OAAS,KAAO,MAAM,OAAS;GAClD,MAAM,MAAO,MAAM,MAAS,KAAO,MAAM,OAAS,KAAO,MAAM,OAAS;GACxE,MAAM,MAAO,MAAM,OAAS,KAAO,MAAM,OAAS;GAClD,MAAM,MAAO,MAAM,MAAS,KAAO,MAAM,OAAS,KAAO,MAAM,OAAS;GACxE,MAAM,MAAO,MAAM,MAAS,IAAM,MAAM;AAExC,SAAM,eAAe;AAErB,OAAI,YAAY,MAAM,OAClB,OAAM,eAAe;AAEzB,OAAI,YAAY,MAAM,OAClB,OAAM,eAAe;AAEzB,OAAI,YAAY,MAAM,UAAU,OAAO,QACnC,OAAM,eAAe;AAEzB,OAAI,YAAY,MAAM,UAAU,MAAM,QAClC,OAAM,eAAe;;AAG7B,SAAO,MAAM,SAAS,GAAG,UAAU;;;;;AC9L3C,IAAa,mBAAb,MAAa,yBAAyB,OAAO;CAEzC,OAAwB,oBAA4B,IAAI,WAAW,EAAE;CAErE,OAAwB,QAClB;CAEN,OAAwB,gBAAgB,IAAI,WACxC,CAAC,GAAG,KAAK,MAAM,CAAC,KAAI,MAAK,EAAE,WAAW,EAAE,CAAC,CAC5C;CAED,OAAwB,gBAAgB,IAAI,WAAW,IAAI;CAE3D;AACI,OAAK,cAAc,KAAK,IAAI;AAE5B,OAAK,IAAI,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,IACnC,MAAK,cAAc,KAAK,MAAM,WAAW,EAAE,IAAI;;CAIvD,OAAuB,OAA2B;EAE9C,MAAM,gBAAgB,iBAAiB;EAEvC,MAAM,QAAQ,IAAI,WAAW,KAAK,KAAK,MAAM,SAAS,EAAE,GAAG,EAAE;EAE7D,IAAI,QAAQ;AAEZ,OAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;GAEtC,MAAM,KAAK,MAAM;GACjB,MAAM,KAAK,MAAM,IAAI,MAAM;GAC3B,MAAM,KAAK,MAAM,IAAI,MAAM;GAC3B,MAAM,KAAK,MAAM,IAAI,MAAM;GAC3B,MAAM,KAAK,MAAM,IAAI,MAAM;GAE3B,MAAM,OAAO,KAAK,QAAS;GAC3B,MAAM,OAAQ,KAAK,MAAS,KAAO,KAAK,QAAS;GACjD,MAAM,OAAO,KAAK,OAAS;GAC3B,MAAM,OAAQ,KAAK,MAAS,KAAO,KAAK,QAAS;GACjD,MAAM,OAAQ,KAAK,OAAS,KAAO,KAAK,QAAS;GACjD,MAAM,OAAO,KAAK,QAAS;GAC3B,MAAM,OAAQ,KAAK,MAAS,KAAO,KAAK,QAAS;GACjD,MAAM,MAAM,KAAK;GAEjB,MAAM,KAAK,cAAc;GACzB,MAAM,KAAK,cAAc;GACzB,MAAM,KAAK,cAAc;GACzB,MAAM,KAAK,cAAc;GACzB,MAAM,KAAK,cAAc;GACzB,MAAM,KAAK,cAAc;GACzB,MAAM,KAAK,cAAc;GACzB,MAAM,KAAK,cAAc;AAEzB,SAAM,WAAW;AACjB,SAAM,WAAW;AACjB,SAAM,WAAW;AACjB,SAAM,WAAW;AACjB,SAAM,WAAW;AACjB,SAAM,WAAW;AACjB,SAAM,WAAW;AACjB,SAAM,WAAW;;EAGrB,MAAM,SAAS,MAAM,SAAS;EAE9B,MAAM,UACF,WAAW,IAAI,IACf,WAAW,IAAI,IACf,WAAW,IAAI,IACf,WAAW,IAAI,IAAI;AAEvB,OAAK,IAAI,IAAI,SAAS,IAAI,GAAG,IACzB,OAAM,QAAQ,KAAK,iBAAiB;AAGxC,SAAO,OAAO,YAAY,OAAO,MAAM,SAAS,GAAG,MAAM,CAAC;;CAG9D,OAAuB,QAA4B;EAE/C,MAAM,QAAQ,OAAO,aAAa;EAElC,MAAM,gBAAgB,iBAAiB;EACvC,MAAM,UAAU,iBAAiB;EAEjC,MAAM,QAAQ,IAAI,WAAW,OAAO,OAAO;EAE3C,IAAI,YAAY;AAEhB,OAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;GAEpC,MAAM,IAAI,MAAM,WAAW,EAAE;AAE7B,OAAI,CAAC,UAAU,aAAa,EAAE,CAE1B,OAAM,eAAe;;AAI7B,MAAI,YAAY,MAAM,EAClB,OAAM,IAAI,wBAAwB,yBAAyB;EAE/D,IAAI,WAAW;AAEf,OAAK,IAAI,IAAI,GAAG,IAAI,WAAW,IAC3B,KAAI,MAAM,OAAO,SAAS;AACtB,cAAW;AACX;;EAIR,IAAI,WAAW;AAEf,MAAI,aAAa,IAAI;AAEjB,OAAI,WAAW,YAAY,EACvB,OAAM,IAAI,wBAAwB,4BAA4B;AAElE,QAAK,IAAI,IAAI,UAAU,IAAI,WAAW,IAClC,KAAI,MAAM,OAAO,QACb,OAAM,IAAI,wBAAwB,kBAAkB;AAI5D,cAAW,YAAY;AAEvB,OAAI,aAAa,KAAK,aAAa,KAAK,aAAa,KAAK,aAAa,EACnE,OAAM,IAAI,wBAAwB,kBAAkB;;EAI5D,MAAM,QAAQ,IAAI,WAAW,KAAK,OAAQ,YAAY,YAAY,IAAK,EAAE,CAAC;EAE1E,IAAI,YAAY;AAEhB,OAAK,IAAI,IAAI,GAAG,IAAI,WAAW,KAAK,GAAG;GAEnC,MAAM,KAAK,MAAM;GACjB,MAAM,KAAK,MAAM,IAAI;GACrB,MAAM,KAAK,MAAM,IAAI;GACrB,MAAM,KAAK,MAAM,IAAI;GACrB,MAAM,KAAK,MAAM,IAAI;GACrB,MAAM,KAAK,MAAM,IAAI;GACrB,MAAM,KAAK,MAAM,IAAI;GACrB,MAAM,KAAK,MAAM,IAAI;GAErB,MAAM,MAAM,cAAc;GAC1B,MAAM,MAAM,cAAc;GAC1B,MAAM,MAAM,OAAO,UAAU,cAAc,MAAO;GAClD,MAAM,MAAM,OAAO,UAAU,cAAc,MAAO;GAClD,MAAM,MAAM,OAAO,UAAU,cAAc,MAAO;GAClD,MAAM,MAAM,OAAO,UAAU,cAAc,MAAO;GAClD,MAAM,MAAM,OAAO,UAAU,cAAc,MAAO;GAClD,MAAM,MAAM,OAAO,UAAU,cAAc,MAAO;AAElD,OAAI,QAAQ,OACR,QAAQ,OACR,QAAQ,OACR,QAAQ,OACR,QAAQ,OACR,QAAQ,OACR,QAAQ,OACR,QAAQ,IAER,OAAM,IAAI,wBAAwB,iBAAiB;GAGvD,MAAM,MAAO,MAAM,OAAS,KAAO,MAAM,OAAS;GAClD,MAAM,MAAO,MAAM,MAAS,KAAO,MAAM,OAAS,KAAO,MAAM,OAAS;GACxE,MAAM,MAAO,MAAM,OAAS,KAAO,MAAM,OAAS;GAClD,MAAM,MAAO,MAAM,MAAS,KAAO,MAAM,OAAS,KAAO,MAAM,OAAS;GACxE,MAAM,MAAO,MAAM,MAAS,IAAM,MAAM;AAExC,SAAM,eAAe;AAErB,OAAI,YAAY,MAAM,OAClB,OAAM,eAAe;AAEzB,OAAI,YAAY,MAAM,OAClB,OAAM,eAAe;AAEzB,OAAI,YAAY,MAAM,UAAU,OAAO,QACnC,OAAM,eAAe;AAEzB,OAAI,YAAY,MAAM,UAAU,MAAM,QAClC,OAAM,eAAe;;AAG7B,SAAO,MAAM,SAAS,GAAG,UAAU;;;;;;;;AC3L3C,IAAsB,SAAtB,MAA6B;;;;;;ACF7B,IAAa,oBAAb,cAAuC,YAAY;;;;AAKnD,IAAa,0BAAb,cAA6C,kBAAkB;;;;AAK/D,IAAa,0BAAb,cAA6C,kBAAkB;;;ACX/D,IAAa,gBAAb,MAAa,sBAAsB,OAAO;CAEtC,OAAwB,oBAAoB,IAAI,WAAW,EAAE;CAE7D,OAAwB,QAClB;CAEN,OAAwB,eAAe,IAAI,WAAW,IAAI;CAE1D,OAAwB,eAAe,IAAI,WACvC,CAAC,GAAG,KAAK,MAAM,CAAC,KAAI,MAAK,EAAE,WAAW,EAAE,CAAC,CAC5C;CAED,OAAwB,UAAU,IAAI,aAAa;CAEnD;AAEI,OAAK,aAAa,KAAK,IAAI;AAE3B,OAAK,IAAI,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,IACnC,MAAK,aAAa,KAAK,MAAM,WAAW,EAAE,IAAI;;CAItD,UAA0B,UAA8B;AAEpD,MAAI,MAAM,WAAW,EAAG,QAAO;EAE/B,MAAM,eAAe,cAAc;EACnC,MAAM,EAAE,IAAI,OAAO;EAEnB,MAAM,WAAW,KAAK,KAAK,MAAM,SAAS,EAAE,GAAG;EAC/C,MAAM,aAAa,KAAK,OAAO,WAAW,KAAK,GAAG;EAElD,MAAM,QAAQ,IAAI,WAAW,WAAW,aAAa,EAAE;EAEvD,IAAI,KAAK;EAET,IAAI,WAAW;AAEf,OAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;GAEtC,MAAM,KAAK,MAAM;GACjB,MAAM,KAAK,MAAM,IAAI,MAAM;GAC3B,MAAM,KAAK,MAAM,IAAI,MAAM;GAE3B,MAAM,KAAK,MAAM;GACjB,MAAM,MAAO,KAAK,MAAe,IAAK,MAAM;GAC5C,MAAM,MAAO,KAAK,OAAe,IAAK,MAAM;GAC5C,MAAM,KAAK,KAAK;AAEhB,SAAM,QAAQ,aAAa;AAC3B,SAAM,QAAQ,aAAa;AAC3B,SAAM,QAAQ,aAAa;AAC3B,SAAM,QAAQ,aAAa;AAE3B,eAAY;AAEZ,OAAI,aAAa,MAAM,KAAK,MAAM,QAAQ;AACtC,eAAW;AACX,UAAM,QAAQ;AACd,UAAM,QAAQ;;;EAItB,MAAM,SAAS,MAAM,SAAS;AAE9B,MAAI,WAAW,GAAG;AACd,SAAM,KAAK,KAAK,cAAc;AAC9B,SAAM,KAAK,KAAK,cAAc;aACvB,WAAW,EAClB,OAAM,KAAK,KAAK,cAAc;AAGlC,SAAO,cAAc,QAAQ,OAAO,MAAM,SAAS,GAAG,GAAG,CAAC;;CAG9D,UAA0B,WAA+B;EAErD,MAAM,eAAe,cAAc;EAEnC,MAAM,OAAO,IAAI,WAAW,OAAO,OAAO;EAC1C,IAAI,gBAAgB;AAEpB,OAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;GACpC,MAAM,IAAI,OAAO,WAAW,EAAE;AAC9B,OAAI,MAAM,UAAU,MACb,MAAM,UAAU,MAChB,MAAM,UAAU,MAChB,MAAM,UAAU,GAEnB,MAAK,mBAAmB;;AAIhC,MAAI,gBAAgB,MAAM,EACtB,OAAM,IAAI,wBAAwB,wBAAwB;EAE9D,IAAI,WAAW;AAEf,OAAK,IAAI,IAAI,GAAG,IAAI,eAAe,IAC/B,KAAI,KAAK,OAAO,cAAc,mBAAmB;AAC7C,cAAW;AACX;;AAIR,MAAI,aAAa,IAAI;AAEjB,OAAI,WAAW,gBAAgB,EAC3B,OAAM,IAAI,wBAAwB,2BAA2B;AAGjE,QAAK,IAAI,IAAI,UAAU,IAAI,eAAe,IACtC,KAAI,KAAK,OAAO,cAAc,kBAC1B,OAAM,IAAI,wBAAwB,kBAAkB;GAI5D,MAAM,WAAW,gBAAgB;AAEjC,OAAI,aAAa,KAAK,aAAa,EAC/B,OAAM,IAAI,wBAAwB,kBAAkB;;EAI5D,MAAM,aAAa;EAEnB,MAAM,UACF,KAAK,aAAa,OAAO,cAAc,oBACpC,KAAK,aAAa,OAAO,cAAc,oBAAoB,IAAI,IAChE;EAEN,MAAM,QAAQ,IAAI,WAAY,gBAAgB,IAAK,IAAI,QAAQ;EAE/D,IAAI,gBAAgB;AAEpB,OAAK,IAAI,IAAI,GAAG,IAAI,eAAe,KAAK,GAAG;GAEvC,MAAM,QAAQ,KAAK;GACnB,MAAM,QAAQ,KAAK,IAAI;GACvB,MAAM,QAAQ,KAAK,IAAI;GACvB,MAAM,QAAQ,KAAK,IAAI;GAEvB,MAAM,MAAM,aAAa;GACzB,MAAM,MAAM,aAAa;GACzB,MAAM,MAAM,UAAU,cAAc,oBAAoB,aAAa,SAAU;GAC/E,MAAM,MAAM,UAAU,cAAc,oBAAoB,aAAa,SAAU;AAE/E,OAAI,QAAQ,OACR,QAAQ,OACP,UAAU,cAAc,qBAAqB,QAAQ,OACrD,UAAU,cAAc,qBAAqB,QAAQ,IAEtD,OAAM,IAAI,wBAAwB,iBAAiB;GAGvD,MAAM,KAAM,OAAO,IAAM,OAAO;GAChC,MAAM,MAAO,MAAM,OAAO,IAAM,OAAO;GACvC,MAAM,MAAO,MAAM,MAAM,IAAK;AAE9B,SAAM,mBAAmB;AAEzB,OAAI,UAAU,cAAc,kBACxB,OAAM,mBAAmB;AAG7B,OAAI,UAAU,cAAc,kBACxB,OAAM,mBAAmB;;AAIjC,SAAO;;;;;AC5Kf,IAAa,gBAAb,MAAa,sBAAsB,OAAO;CAEtC,OAAwB,oBAAoB,IAAI,WAAW,EAAE;CAE7D,OAAwB,QAClB;CAEN,OAAwB,eAAe,IAAI,WAAW,IAAI;CAE1D,OAAwB,eAAe,IAAI,WACvC,CAAC,GAAG,KAAK,MAAM,CAAC,KAAI,MAAK,EAAE,WAAW,EAAE,CAAC,CAC5C;CAED,OAAwB,UAAU,IAAI,aAAa;CAEnD;AAEI,OAAK,aAAa,KAAK,IAAI;AAE3B,OAAK,IAAI,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,IACnC,MAAK,aAAa,KAAK,MAAM,WAAW,EAAE,IAAI;;CAItD,UAA0B,UAA8B;AAEpD,MAAI,MAAM,WAAW,EAAG,QAAO;EAE/B,MAAM,eAAe,cAAc;EAEnC,MAAM,WAAW,KAAK,KAAK,MAAM,SAAS,EAAE,GAAG;EAC/C,MAAM,aAAa,KAAK,OAAO,WAAW,KAAK,GAAG;EAElD,MAAM,QAAQ,IAAI,WAAW,WAAW,aAAa,EAAE;EAEvD,IAAI,KAAK;AAET,OAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;GAEtC,MAAM,KAAK,MAAM;GACjB,MAAM,KAAK,MAAM,IAAI,MAAM;GAC3B,MAAM,KAAK,MAAM,IAAI,MAAM;GAE3B,MAAM,KAAK,MAAM;GACjB,MAAM,MAAO,KAAK,MAAe,IAAK,MAAM;GAC5C,MAAM,MAAO,KAAK,OAAe,IAAK,MAAM;GAC5C,MAAM,KAAK,KAAK;AAEhB,SAAM,QAAQ,aAAa;AAC3B,SAAM,QAAQ,aAAa;AAC3B,SAAM,QAAQ,aAAa;AAC3B,SAAM,QAAQ,aAAa;;EAG/B,MAAM,SAAS,MAAM,SAAS;AAE9B,MAAI,WAAW,GAAG;AACd,SAAM,KAAK,KAAK,cAAc;AAC9B,SAAM,KAAK,KAAK,cAAc;aACvB,WAAW,EAClB,OAAM,KAAK,KAAK,cAAc;AAGlC,SAAO,cAAc,QAAQ,OAAO,MAAM,SAAS,GAAG,GAAG,CAAC;;CAG9D,UAA0B,WAA+B;EAErD,MAAM,eAAe,cAAc;EAEnC,MAAM,OAAO,IAAI,WAAW,OAAO,OAAO;EAC1C,IAAI,gBAAgB;AAEpB,OAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;GACpC,MAAM,IAAI,OAAO,WAAW,EAAE;AAC9B,OAAI,CAAC,UAAU,aAAa,EAAE,CAE1B,MAAK,mBAAmB;;AAIhC,MAAI,gBAAgB,MAAM,EACtB,OAAM,IAAI,wBAAwB,wBAAwB;EAE9D,IAAI,WAAW;AAEf,OAAK,IAAI,IAAI,GAAG,IAAI,eAAe,IAC/B,KAAI,KAAK,OAAO,cAAc,mBAAmB;AAC7C,cAAW;AACX;;AAIR,MAAI,aAAa,IAAI;AAEjB,OAAI,WAAW,gBAAgB,EAC3B,OAAM,IAAI,wBAAwB,2BAA2B;AAGjE,QAAK,IAAI,IAAI,UAAU,IAAI,eAAe,IACtC,KAAI,KAAK,OAAO,cAAc,kBAC1B,OAAM,IAAI,wBAAwB,kBAAkB;GAI5D,MAAM,WAAW,gBAAgB;AAEjC,OAAI,aAAa,KAAK,aAAa,EAC/B,OAAM,IAAI,wBAAwB,kBAAkB;;EAI5D,MAAM,aAAa;EAEnB,MAAM,UACF,KAAK,aAAa,OAAO,cAAc,oBACpC,KAAK,aAAa,OAAO,cAAc,oBAAoB,IAAI,IAChE;EAEN,MAAM,QAAQ,IAAI,WAAY,gBAAgB,IAAK,IAAI,QAAQ;EAE/D,IAAI,gBAAgB;AAEpB,OAAK,IAAI,IAAI,GAAG,IAAI,eAAe,KAAK,GAAG;GAEvC,MAAM,QAAQ,KAAK;GACnB,MAAM,QAAQ,KAAK,IAAI;GACvB,MAAM,QAAQ,KAAK,IAAI;GACvB,MAAM,QAAQ,KAAK,IAAI;GAEvB,MAAM,MAAM,aAAa;GACzB,MAAM,MAAM,aAAa;GACzB,MAAM,MAAM,UAAU,cAAc,oBAAoB,aAAa,SAAU;GAC/E,MAAM,MAAM,UAAU,cAAc,oBAAoB,aAAa,SAAU;AAE/E,OAAI,QAAQ,OACR,QAAQ,OACP,UAAU,cAAc,qBAAqB,QAAQ,OACrD,UAAU,cAAc,qBAAqB,QAAQ,IAEtD,OAAM,IAAI,wBAAwB,iBAAiB;GAGvD,MAAM,KAAM,OAAO,IAAM,OAAO;GAChC,MAAM,MAAO,MAAM,OAAO,IAAM,OAAO;GACvC,MAAM,MAAO,MAAM,MAAM,IAAK;AAE9B,SAAM,mBAAmB;AAEzB,OAAI,UAAU,cAAc,kBACxB,OAAM,mBAAmB;AAG7B,OAAI,UAAU,cAAc,kBACxB,OAAM,mBAAmB;;AAIjC,SAAO;;;;;AC9Jf,IAAa,mBAAb,MAAa,yBAAyB,OAAO;CAEzC,OAAwB,oBAAoB,IAAI,WAAW,EAAE;CAE7D,OAAwB,QAClB;CAEN,OAAwB,eAAe,IAAI,WAAW,IAAI;CAE1D,OAAwB,eAAe,IAAI,WACvC,CAAC,GAAG,KAAK,MAAM,CAAC,KAAI,MAAK,EAAE,WAAW,EAAE,CAAC,CAC5C;CAED,OAAwB,UAAU,IAAI,aAAa;CAEnD;AAEI,OAAK,aAAa,KAAK,IAAI;AAE3B,OAAK,IAAI,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,IACnC,MAAK,aAAa,KAAK,MAAM,WAAW,EAAE,IAAI;;CAItD,UAA0B,UAA8B;AAEpD,MAAI,MAAM,WAAW,EAAG,QAAO;EAE/B,MAAM,eAAe,iBAAiB;EAEtC,MAAM,WAAW,KAAK,KAAK,MAAM,SAAS,EAAE,GAAG;EAC/C,MAAM,aAAa,KAAK,OAAO,WAAW,KAAK,GAAG;EAElD,MAAM,QAAQ,IAAI,WAAW,WAAW,aAAa,EAAE;EAEvD,IAAI,KAAK;AAET,OAAK,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK,GAAG;GAEtC,MAAM,KAAK,MAAM;GACjB,MAAM,KAAK,MAAM,IAAI,MAAM;GAC3B,MAAM,KAAK,MAAM,IAAI,MAAM;GAE3B,MAAM,KAAK,MAAM;GACjB,MAAM,MAAO,KAAK,MAAe,IAAK,MAAM;GAC5C,MAAM,MAAO,KAAK,OAAe,IAAK,MAAM;GAC5C,MAAM,KAAK,KAAK;AAEhB,SAAM,QAAQ,aAAa;AAC3B,SAAM,QAAQ,aAAa;AAC3B,SAAM,QAAQ,aAAa;AAC3B,SAAM,QAAQ,aAAa;;EAG/B,MAAM,SAAS,MAAM,SAAS;AAE9B,MAAI,WAAW,GAAG;AACd,SAAM,KAAK,KAAK,iBAAiB;AACjC,SAAM,KAAK,KAAK,iBAAiB;aAC1B,WAAW,EAClB,OAAM,KAAK,KAAK,iBAAiB;AAGrC,SAAO,iBAAiB,QAAQ,OAAO,MAAM,SAAS,GAAG,GAAG,CAAC;;CAGjE,UAA0B,WAA+B;EAErD,MAAM,eAAe,iBAAiB;EAEtC,MAAM,OAAO,IAAI,WAAW,OAAO,OAAO;EAC1C,IAAI,gBAAgB;AAEpB,OAAK,IAAI,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;GACpC,MAAM,IAAI,OAAO,WAAW,EAAE;AAC9B,OAAI,CAAC,UAAU,aAAa,EAAE,CAE1B,MAAK,mBAAmB;;AAIhC,MAAI,gBAAgB,MAAM,EACtB,OAAM,IAAI,wBAAwB,wBAAwB;EAE9D,IAAI,WAAW;AAEf,OAAK,IAAI,IAAI,GAAG,IAAI,eAAe,IAC/B,KAAI,KAAK,OAAO,iBAAiB,mBAAmB;AAChD,cAAW;AACX;;AAIR,MAAI,aAAa,IAAI;AAEjB,OAAI,WAAW,gBAAgB,EAC3B,OAAM,IAAI,wBAAwB,2BAA2B;AAGjE,QAAK,IAAI,IAAI,UAAU,IAAI,eAAe,IACtC,KAAI,KAAK,OAAO,iBAAiB,kBAC7B,OAAM,IAAI,wBAAwB,kBAAkB;GAI5D,MAAM,WAAW,gBAAgB;AAEjC,OAAI,aAAa,KAAK,aAAa,EAC/B,OAAM,IAAI,wBAAwB,kBAAkB;;EAI5D,MAAM,aAAa;EAEnB,MAAM,UACF,KAAK,aAAa,OAAO,iBAAiB,oBACvC,KAAK,aAAa,OAAO,iBAAiB,oBAAoB,IAAI,IACnE;EAEN,MAAM,QAAQ,IAAI,WAAY,gBAAgB,IAAK,IAAI,QAAQ;EAE/D,IAAI,gBAAgB;AAEpB,OAAK,IAAI,IAAI,GAAG,IAAI,eAAe,KAAK,GAAG;GAEvC,MAAM,QAAQ,KAAK;GACnB,MAAM,QAAQ,KAAK,IAAI;GACvB,MAAM,QAAQ,KAAK,IAAI;GACvB,MAAM,QAAQ,KAAK,IAAI;GAEvB,MAAM,MAAM,aAAa;GACzB,MAAM,MAAM,aAAa;GACzB,MAAM,MAAM,UAAU,iBAAiB,oBAAoB,aAAa,SAAU;GAClF,MAAM,MAAM,UAAU,iBAAiB,oBAAoB,aAAa,SAAU;AAElF,OAAI,QAAQ,OACR,QAAQ,OACP,UAAU,iBAAiB,qBAAqB,QAAQ,OACxD,UAAU,iBAAiB,qBAAqB,QAAQ,IAEzD,OAAM,IAAI,wBAAwB,iBAAiB;GAGvD,MAAM,KAAM,OAAO,IAAM,OAAO;GAChC,MAAM,MAAO,MAAM,OAAO,IAAM,OAAO;GACvC,MAAM,MAAO,MAAM,MAAM,IAAK;AAE9B,SAAM,mBAAmB;AAEzB,OAAI,UAAU,iBAAiB,kBAC3B,OAAM,mBAAmB;AAG7B,OAAI,UAAU,iBAAiB,kBAC3B,OAAM,mBAAmB;;AAIjC,SAAO;;;;;;;;AC3Jf,IAAsB,YAAtB,MAAgC;;;;;;ACFhC,IAAa,iBAAb,cAAoC,UAAU;CAE1C,OAAuB,OAA+B;EAElD,MAAM,UAAU,IAAI,WAAW,MAAM,SAAS,EAAE;EAEhD,IAAI,YAAY;EAEhB,IAAI,OAAsB;EAE1B,IAAI,QAAQ;AAEZ,OAAI,IAAI,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;GAElC,MAAM,OAAO,MAAM;AAEnB,OAAI,SAAS,MAAM;AACf,WAAO;AACP,YAAQ;AACR;;AAGJ,OAAI,SAAS;QAEL,QAAQ,KAAK;AACb;AACA;;;AAIR,WAAQ,eAAe;AACvB,WAAQ,eAAe;AAEvB,UAAO;AACP,WAAQ;;AAGZ,MAAI,SAAS,MAAM;AACf,WAAQ,eAAe;AACvB,WAAQ,eAAe;;AAG3B,SAAO,QAAQ,SAAS,GAAG,UAAU;;CAGzC,OAAuB,WAAmC;EAEtD,MAAM,UAAoB,EAAE;AAE5B,OAAK,IAAI,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK,GAAG;GAE1C,MAAM,QAAQ,UAAU;GAExB,MAAM,OAAO,UAAU,IAAI;AAE3B,QAAK,IAAI,IAAI,GAAG,IAAI,OAAO,IACvB,SAAQ,KAAK,KAAK;;AAI1B,SAAO,IAAI,WAAW,QAAQ;;;;;AC/DtC,IAAa,uBAAb,cAA0C,YAAY;AAEtD,IAAa,6BAAb,cAAgD,qBAAqB;AAErE,IAAa,6BAAb,cAAgD,qBAAqB;;;;;;ACArE,IAAa,WAAb,cAA8B,UAAU;CAEpC,OAAuB,OAA+B;AAElD,MAAI,MAAM,WAAW,EAAG,QAAO,IAAI,WAAW,EAAE,CAAC;EAEjD,MAAM,aAAa,MAAM;EAEzB,MAAM,UAAoB,EAAE;EAE5B,IAAI,IAAI;AAER,SAAM,IAAI,YAAY;GAElB,MAAM,OAAO,MAAM;GAEnB,IAAI,IAAI;AAER,UAAO,IAAI,IAAI,cAAc,SAAS,MAAM,IAAI,MAAM,IAAI,IACtD;AAGJ,OAAI,KAAK,GAAG;AACR,YAAQ,KAAK,OAAO,IAAI,GAAG;AAC3B,YAAQ,KAAK,KAAK;AAClB,SAAK;AACL;;AAGJ,UAAO,IAAI,IAAI,cAAc,IAAI,KAAK;IAElC,MAAM,MAAM,IAAI;IAEhB,MAAM,QAAQ,MAAM;AAEpB,QAAI,MAAM,MAAM,OAAO,SAAS,UAAU,MAAM,MAAM,IAAI;AACtD;AACA;;AAGJ;;AAGJ,WAAQ,KAAK,IAAI,EAAE;AAEnB,QAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IACvB,SAAQ,KAAK,MAAM,GAAI;AAG3B,QAAK;;AAGT,SAAO,IAAI,WAAW,QAAQ;;CAGlC,OAAuB,WAAmC;EAEtD,MAAM,UAAoB,EAAE;EAE5B,MAAM,aAAa,UAAU;EAE7B,IAAI,IAAI;AAER,SAAM,IAAI,YAAY;GAElB,MAAM,SAAS,UAAU;AAEzB,OAAI,WAAW,IAAM;AAErB,OAAI,KAAK,UAAU,UAAU,KAAM;IAE/B,MAAM,MAAM,IAAI,SAAS;AAEzB,SAAK,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,KAAK;KAE9B,MAAM,OAAO,UAAU;AAEvB,SAAI,SAAS,KAAA,EACT,OAAM,IAAI,2BAA2B,4BAA4B;AAErE,aAAQ,KAAK,KAAK;;AAGtB,QAAI;AACJ;;AAGJ,OAAI,OAAQ,UAAU,UAAU,KAAM;IAElC,MAAM,QAAQ,MAAQ;IAEtB,MAAM,OAAO,UAAU,IAAI;AAE3B,QAAI,SAAS,KAAA,EACT,OAAM,IAAI,2BAA2B,4BAA4B;AAErE,SAAK,IAAI,IAAI,GAAG,IAAI,OAAO,IACvB,SAAQ,KAAK,KAAK;AAGtB,SAAK;AACL;;;AAIR,SAAO,IAAI,WAAW,QAAQ;;;;;AC5GtC,IAAa,MAAb,cAAyB,UAAU;CAE/B,OAAuB,OAA+B;AAElD,MAAI,MAAM,WAAW,EAAG,QAAO,IAAI,WAAW,EAAE,CAAC;EAEjD,MAAM,aAAa,MAAM;EAEzB,MAAM,UAAoB,EAAE;EAE5B,IAAI,IAAI;AAER,SAAM,IAAI,YAAY;GAElB,MAAM,OAAO,MAAM;GAEnB,IAAI,IAAI;AAER,UAAO,IAAI,IAAI,cAAc,SAAS,MAAM,IAAI,MAAM,IAAI,IACtD;AAGJ,OAAI,KAAK,GAAG;AACR,YAAQ,KAAK,MAAM,EAAE;AACrB,YAAQ,KAAK,KAAK;AAClB,SAAK;AACL;;AAGJ,UAAO,IAAI,IAAI,cAAc,IAAI,KAAK;IAElC,MAAM,MAAM,IAAI;IAEhB,MAAM,QAAQ,MAAM;AAEpB,QAAI,MAAM,MAAM,OAAO,SAAS,UAAU,MAAM,MAAM,IAAI;AACtD;AACA;;AAGJ;;AAGJ,WAAQ,KAAK,IAAI,EAAE;AAEnB,QAAK,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IACvB,SAAQ,KAAK,MAAM,GAAI;AAG3B,QAAK;;AAGT,SAAO,IAAI,WAAW,QAAQ;;CAGlC,OAAuB,WAAmC;EAEtD,MAAM,UAAoB,EAAE;EAE5B,MAAM,aAAa,UAAU;EAE7B,IAAI,IAAI;AAER,SAAM,IAAI,YAAY;GAElB,MAAM,SAAS,UAAU;AAEzB,OAAI,WAAW,IAAM;AAErB,OAAI,KAAK,UAAU,UAAU,KAAM;IAE/B,MAAM,MAAM,IAAI,SAAS;AAEzB,SAAK,IAAI,IAAI,IAAI,GAAG,IAAI,KAAK,KAAK;KAE9B,MAAM,OAAO,UAAU;AAEvB,SAAI,SAAS,KAAA,EACT,OAAM,IAAI,2BAA2B,4BAA4B;AAErE,aAAQ,KAAK,KAAK;;AAGtB,QAAI;AACJ;;AAGJ,OAAI,OAAQ,UAAU,UAAU,KAAM;IAElC,MAAM,QAAQ,MAAQ;IAEtB,MAAM,OAAO,UAAU,IAAI;AAE3B,QAAI,SAAS,KAAA,EACT,OAAM,IAAI,2BAA2B,4BAA4B;AAErE,SAAK,IAAI,IAAI,GAAG,IAAI,OAAO,IACvB,SAAQ,KAAK,KAAK;AAGtB,SAAK;AACL;;;AAIR,SAAO,IAAI,WAAW,QAAQ;;;;;;;;;;;;;;;;;;;;;;;AC3EtC,IAAM,SAAN,MAAa;CAET,cAAsB;;;;;CAMtB,OAAc,UAAU,aAAsC;AAE1D,UAAO,UAAP;GACI,KAAK,cACD,QAAO,IAAI,kBAAkB;GACjC,KAAK,UACD,QAAO,IAAI,eAAe;GAE9B,QACI,QAAO,IAAI,eAAe;;;;;;;CAQtC,OAAc,UAAU,aAAsC;AAE1D,UAAO,UAAP;GACI,KAAK,aACD,QAAO,IAAI,kBAAkB;GAEjC,QACI,QAAO,IAAI,eAAe;;;;;;CAOtC,OAAc,UAAU,aAAsC;AAE1D,UAAO,UAAP;GACI,KAAK,QACD,QAAO,IAAI,gBAAgB;GAE/B,QACI,QAAO,IAAI,eAAe;;;;;;CAOtC,OAAc,aAAa,aAA2C;AAElE,UAAO,UAAP;GACI,KAAK,YACD,QAAO,IAAI,UAAU;GACzB,KAAK,MACD,QAAO,IAAI,KAAK;GAEpB,QACI,QAAO,IAAI,gBAAgB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
//#region src/base16/index.d.ts
|
|
2
|
-
declare const Base16Categories: readonly ["rfc4648"];
|
|
2
|
+
declare const Base16Categories: readonly ["rfc4648", "ascii"];
|
|
3
3
|
type Base16Category = typeof Base16Categories[number];
|
|
4
|
+
/**
|
|
5
|
+
* Base16 codec.
|
|
6
|
+
*/
|
|
4
7
|
declare abstract class Base16 {
|
|
5
8
|
/**
|
|
6
9
|
* Encodes bytes to Base16 string.
|
|
@@ -17,8 +20,11 @@ declare abstract class Base16 {
|
|
|
17
20
|
//#region src/base32/index.d.ts
|
|
18
21
|
type Base32Category = typeof Base32Categories[number];
|
|
19
22
|
declare const Base32Categories: readonly ["rfc4648", "rfc468-hex"];
|
|
23
|
+
/**
|
|
24
|
+
* Base32 codec.
|
|
25
|
+
*/
|
|
20
26
|
declare abstract class Base32 {
|
|
21
|
-
protected static readonly textDecoder:
|
|
27
|
+
protected static readonly textDecoder: any;
|
|
22
28
|
/**
|
|
23
29
|
* Encodes bytes to Base32 string
|
|
24
30
|
* @param bytes Bytes to be encoded.
|
|
@@ -32,7 +38,7 @@ declare abstract class Base32 {
|
|
|
32
38
|
}
|
|
33
39
|
//#endregion
|
|
34
40
|
//#region src/base64/index.d.ts
|
|
35
|
-
type
|
|
41
|
+
type Base64Category = typeof Base64Categories[number];
|
|
36
42
|
declare const Base64Categories: readonly ["rfc4648", "rfc4648-url", "rfc2025"];
|
|
37
43
|
/**
|
|
38
44
|
* Base64 codec.
|
|
@@ -50,7 +56,7 @@ declare abstract class Base64 {
|
|
|
50
56
|
}
|
|
51
57
|
//#endregion
|
|
52
58
|
//#region src/run-length/index.d.ts
|
|
53
|
-
declare const RunLengthCatgories: readonly ["basic", "pack-bits"];
|
|
59
|
+
declare const RunLengthCatgories: readonly ["basic", "pack-bits", "pdf"];
|
|
54
60
|
type RunLengthCatgory = typeof RunLengthCatgories[number];
|
|
55
61
|
/**
|
|
56
62
|
* Run-Length encoding and decoding.
|
|
@@ -68,7 +74,7 @@ declare abstract class RunLength {
|
|
|
68
74
|
abstract decode(runLength: Uint8Array): Uint8Array;
|
|
69
75
|
}
|
|
70
76
|
//#endregion
|
|
71
|
-
//#region src/
|
|
77
|
+
//#region src/kasten.d.ts
|
|
72
78
|
/**
|
|
73
79
|
* Entry point of the Kasten library.
|
|
74
80
|
* All encoding/decoding feature implementations are created through this class.
|
|
@@ -93,7 +99,7 @@ declare class Kasten {
|
|
|
93
99
|
* Creates Base 64 codec instance.
|
|
94
100
|
* @param category Base 64 category.
|
|
95
101
|
*/
|
|
96
|
-
static base64: (category?:
|
|
102
|
+
static base64: (category?: Base64Category) => Base64;
|
|
97
103
|
/**
|
|
98
104
|
* Creates Base 32 codec instance.
|
|
99
105
|
* @param category Base 32 category.
|
|
@@ -109,4 +115,36 @@ declare class Kasten {
|
|
|
109
115
|
static runLength: (category?: RunLengthCatgory) => RunLength;
|
|
110
116
|
}
|
|
111
117
|
//#endregion
|
|
112
|
-
|
|
118
|
+
//#region src/errors.d.ts
|
|
119
|
+
declare class KastenError extends Error {}
|
|
120
|
+
//#endregion
|
|
121
|
+
//#region src/base64/errors.d.ts
|
|
122
|
+
/**
|
|
123
|
+
* Base error type of Base64.
|
|
124
|
+
*/
|
|
125
|
+
declare class KastenBase64Error extends KastenError {}
|
|
126
|
+
/**
|
|
127
|
+
* Thrown when error occurs on Base64 encoding.
|
|
128
|
+
*/
|
|
129
|
+
declare class KastenBase64EncodeError extends KastenBase64Error {}
|
|
130
|
+
/**
|
|
131
|
+
* Thrown when error occurs on Base64 decoding.
|
|
132
|
+
*/
|
|
133
|
+
declare class KastenBase64DecodeError extends KastenBase64Error {}
|
|
134
|
+
//#endregion
|
|
135
|
+
//#region src/base32/errors.d.ts
|
|
136
|
+
declare class KastenBase32Error extends KastenError {}
|
|
137
|
+
declare class KastenBase32EncodeError extends KastenBase32Error {}
|
|
138
|
+
declare class KastenBase32DecodeError extends KastenBase32Error {}
|
|
139
|
+
//#endregion
|
|
140
|
+
//#region src/base16/errors.d.ts
|
|
141
|
+
declare class KastenBase16Error extends KastenError {}
|
|
142
|
+
declare class KastenBase16EncodeError extends KastenBase16Error {}
|
|
143
|
+
declare class KastenBase16DecodeError extends KastenBase16Error {}
|
|
144
|
+
//#endregion
|
|
145
|
+
//#region src/run-length/errors.d.ts
|
|
146
|
+
declare class KastenRunLengthError extends KastenError {}
|
|
147
|
+
declare class KastenRunLengthEncodeError extends KastenRunLengthError {}
|
|
148
|
+
declare class KastenRunLengthDecodeError extends KastenRunLengthError {}
|
|
149
|
+
//#endregion
|
|
150
|
+
export { type Base16, type Base16Category, type Base32, type Base32Category, type Base64, type Base64Category, Kasten, KastenBase16DecodeError, KastenBase16EncodeError, KastenBase16Error, KastenBase32DecodeError, KastenBase32EncodeError, KastenBase32Error, KastenBase64DecodeError, KastenBase64EncodeError, KastenBase64Error, KastenError, KastenRunLengthDecodeError, KastenRunLengthEncodeError, KastenRunLengthError, type RunLength, type RunLengthCatgory };
|