@jscrypto/classic 0.1.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/LICENSE +21 -0
- package/README.md +89 -0
- package/dist/adapter/crypto-js.d.ts +19 -0
- package/dist/adapter/crypto-js.d.ts.map +1 -0
- package/dist/adapter/crypto-js.js +49 -0
- package/dist/adapter/crypto-js.js.map +1 -0
- package/dist/ciphers/aes.d.ts +4 -0
- package/dist/ciphers/aes.d.ts.map +1 -0
- package/dist/ciphers/aes.js +23 -0
- package/dist/ciphers/aes.js.map +1 -0
- package/dist/ciphers/des.d.ts +4 -0
- package/dist/ciphers/des.d.ts.map +1 -0
- package/dist/ciphers/des.js +23 -0
- package/dist/ciphers/des.js.map +1 -0
- package/dist/ciphers/rc4.d.ts +8 -0
- package/dist/ciphers/rc4.d.ts.map +1 -0
- package/dist/ciphers/rc4.js +98 -0
- package/dist/ciphers/rc4.js.map +1 -0
- package/dist/ciphers/triple-des.d.ts +4 -0
- package/dist/ciphers/triple-des.d.ts.map +1 -0
- package/dist/ciphers/triple-des.js +23 -0
- package/dist/ciphers/triple-des.js.map +1 -0
- package/dist/formats/openssl.d.ts +4 -0
- package/dist/formats/openssl.d.ts.map +1 -0
- package/dist/formats/openssl.js +34 -0
- package/dist/formats/openssl.js.map +1 -0
- package/dist/index.cjs +948 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +892 -0
- package/dist/index.mjs.map +7 -0
- package/dist/jscrypto-classic.iife.js +8012 -0
- package/dist/jscrypto-classic.iife.js.map +7 -0
- package/dist/jscrypto-classic.iife.min.js +28 -0
- package/dist/jscrypto-classic.iife.min.js.map +7 -0
- package/dist/jscrypto-classic.umd.js +8023 -0
- package/dist/jscrypto-classic.umd.js.map +7 -0
- package/dist/jscrypto-classic.umd.min.js +39 -0
- package/dist/jscrypto-classic.umd.min.js.map +7 -0
- package/dist/kdfs/evpkdf.d.ts +11 -0
- package/dist/kdfs/evpkdf.d.ts.map +1 -0
- package/dist/kdfs/evpkdf.js +46 -0
- package/dist/kdfs/evpkdf.js.map +1 -0
- package/dist/kdfs/pbkdf2.d.ts +11 -0
- package/dist/kdfs/pbkdf2.d.ts.map +1 -0
- package/dist/kdfs/pbkdf2.js +44 -0
- package/dist/kdfs/pbkdf2.js.map +1 -0
- package/dist/modes/cbc.d.ts +3 -0
- package/dist/modes/cbc.d.ts.map +1 -0
- package/dist/modes/cbc.js +56 -0
- package/dist/modes/cbc.js.map +1 -0
- package/dist/modes/cfb.d.ts +3 -0
- package/dist/modes/cfb.d.ts.map +1 -0
- package/dist/modes/cfb.js +51 -0
- package/dist/modes/cfb.js.map +1 -0
- package/dist/modes/ctr.d.ts +3 -0
- package/dist/modes/ctr.d.ts.map +1 -0
- package/dist/modes/ctr.js +46 -0
- package/dist/modes/ctr.js.map +1 -0
- package/dist/modes/ecb.d.ts +3 -0
- package/dist/modes/ecb.d.ts.map +1 -0
- package/dist/modes/ecb.js +46 -0
- package/dist/modes/ecb.js.map +1 -0
- package/dist/modes/gcm.d.ts +3 -0
- package/dist/modes/gcm.d.ts.map +1 -0
- package/dist/modes/gcm.js +14 -0
- package/dist/modes/gcm.js.map +1 -0
- package/dist/modes/ofb.d.ts +3 -0
- package/dist/modes/ofb.d.ts.map +1 -0
- package/dist/modes/ofb.js +38 -0
- package/dist/modes/ofb.js.map +1 -0
- package/dist/paddings/ansi-x923.d.ts +3 -0
- package/dist/paddings/ansi-x923.d.ts.map +1 -0
- package/dist/paddings/ansi-x923.js +36 -0
- package/dist/paddings/ansi-x923.js.map +1 -0
- package/dist/paddings/iso10126.d.ts +3 -0
- package/dist/paddings/iso10126.d.ts.map +1 -0
- package/dist/paddings/iso10126.js +45 -0
- package/dist/paddings/iso10126.js.map +1 -0
- package/dist/paddings/iso97971.d.ts +3 -0
- package/dist/paddings/iso97971.d.ts.map +1 -0
- package/dist/paddings/iso97971.js +35 -0
- package/dist/paddings/iso97971.js.map +1 -0
- package/dist/paddings/none.d.ts +3 -0
- package/dist/paddings/none.d.ts.map +1 -0
- package/dist/paddings/none.js +17 -0
- package/dist/paddings/none.js.map +1 -0
- package/dist/paddings/pkcs7.d.ts +3 -0
- package/dist/paddings/pkcs7.d.ts.map +1 -0
- package/dist/paddings/pkcs7.js +27 -0
- package/dist/paddings/pkcs7.js.map +1 -0
- package/dist/paddings/zero.d.ts +3 -0
- package/dist/paddings/zero.d.ts.map +1 -0
- package/dist/paddings/zero.js +24 -0
- package/dist/paddings/zero.js.map +1 -0
- package/dist/preset.d.ts +5 -0
- package/dist/preset.d.ts.map +1 -0
- package/dist/preset.js +55 -0
- package/dist/preset.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/adapter/crypto-js.ts", "../src/ciphers/aes.ts", "../src/ciphers/des.ts", "../src/ciphers/rc4.ts", "../src/ciphers/triple-des.ts", "../src/formats/openssl.ts", "../src/kdfs/evpkdf.ts", "../src/kdfs/pbkdf2.ts", "../src/modes/cbc.ts", "../src/modes/cfb.ts", "../src/modes/ctr.ts", "../src/modes/ecb.ts", "../src/modes/gcm.ts", "../src/modes/ofb.ts", "../src/paddings/ansi-x923.ts", "../src/paddings/iso10126.ts", "../src/paddings/iso97971.ts", "../src/paddings/none.ts", "../src/paddings/pkcs7.ts", "../src/paddings/zero.ts", "../src/preset.ts"],
|
|
4
|
+
"sourcesContent": ["import type { BlockCipher } from '@jscrypto/core';\nimport CryptoJS from 'crypto-js';\n\nexport interface CryptoJsBlockCipherOptions {\n readonly name: string;\n readonly key: Uint8Array;\n readonly blockSize: number;\n readonly algorithm: CryptoJsCipherFactory;\n}\n\nexport interface CryptoJsCipherFactory {\n createEncryptor(key: CryptoJS.lib.WordArray): unknown;\n createDecryptor(key: CryptoJS.lib.WordArray): unknown;\n}\n\ninterface CryptoJsBlockCipherAlgorithm {\n encryptBlock(words: number[], offset: number): void;\n decryptBlock(words: number[], offset: number): void;\n}\n\nexport function createCryptoJsBlockCipher(options: CryptoJsBlockCipherOptions): BlockCipher {\n const { name, key, blockSize, algorithm } = options;\n const keyWords = bytesToWordArray(key);\n const encryptor = algorithm.createEncryptor(keyWords) as CryptoJsBlockCipherAlgorithm;\n const decryptor = algorithm.createDecryptor(keyWords) as CryptoJsBlockCipherAlgorithm;\n\n return {\n blockSize,\n\n encryptBlock(block) {\n assertBlock(block, blockSize, name);\n const words = bytesToWords(block);\n encryptor.encryptBlock(words, 0);\n return wordsToBytes(words, blockSize);\n },\n\n decryptBlock(block) {\n assertBlock(block, blockSize, name);\n const words = bytesToWords(block);\n decryptor.decryptBlock(words, 0);\n return wordsToBytes(words, blockSize);\n },\n };\n}\n\nexport { CryptoJS };\n\nfunction assertBlock(block: Uint8Array, blockSize: number, name: string): void {\n if (block.length !== blockSize) {\n throw new Error(`${name} block must be ${blockSize * 8} bits.`);\n }\n}\n\nexport function bytesToWordArray(bytes: Uint8Array): CryptoJS.lib.WordArray {\n return CryptoJS.lib.WordArray.create(bytesToWords(bytes), bytes.length);\n}\n\nexport function bytesToWords(bytes: Uint8Array): number[] {\n const words: number[] = [];\n for (let i = 0; i < bytes.length; i++) {\n words[i >>> 2] |= bytes[i] << (24 - (i % 4) * 8);\n }\n return words;\n}\n\nexport function wordArrayToBytes(wordArray: CryptoJS.lib.WordArray): Uint8Array {\n return wordsToBytes(wordArray.words, wordArray.sigBytes);\n}\n\nexport function wordsToBytes(words: number[], length: number): Uint8Array {\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; i++) {\n bytes[i] = (words[i >>> 2] >>> (24 - (i % 4) * 8)) & 0xff;\n }\n return bytes;\n}\n", "import { createCryptoJsBlockCipher, CryptoJS } from '../adapter/crypto-js.js';\nimport type { BlockCipher, CipherComponent } from '@jscrypto/core';\n\nexport const aes: CipherComponent<'AES'> = {\n kind: 'cipher',\n name: 'AES',\n type: 'block',\n blockSize: 16,\n keySizes: [16, 24, 32],\n create(key) {\n return createAesCipher(key);\n },\n};\n\nexport function createAesCipher(key: Uint8Array): BlockCipher {\n if (![16, 24, 32].includes(key.length)) {\n throw new Error('AES key must be 128, 192, or 256 bits.');\n }\n\n return createCryptoJsBlockCipher({\n name: 'AES',\n key,\n blockSize: 16,\n algorithm: CryptoJS.algo.AES,\n });\n}\n", "import { createCryptoJsBlockCipher, CryptoJS } from '../adapter/crypto-js.js';\nimport type { BlockCipher, CipherComponent } from '@jscrypto/core';\n\nexport const des: CipherComponent<'DES'> = {\n kind: 'cipher',\n name: 'DES',\n type: 'block',\n blockSize: 8,\n keySizes: [8],\n create(key) {\n return createDesCipher(key);\n },\n};\n\nexport function createDesCipher(key: Uint8Array): BlockCipher {\n if (key.length !== 8) {\n throw new Error('DES key must be 64 bits.');\n }\n\n return createCryptoJsBlockCipher({\n name: 'DES',\n key,\n blockSize: 8,\n algorithm: CryptoJS.algo.DES,\n });\n}\n", "import type { StreamCipherComponent, Transform } from '@jscrypto/core';\n\nexport interface Rc4Options {\n readonly drop?: number;\n}\n\nexport const rc4: StreamCipherComponent<'RC4'> = {\n kind: 'cipher',\n name: 'RC4',\n type: 'stream',\n createEncryptor({ key, options }) {\n return createRc4Transform(key, getDrop(options, 0));\n },\n createDecryptor({ key, options }) {\n return createRc4Transform(key, getDrop(options, 0));\n },\n};\n\nexport const rc4Drop: StreamCipherComponent<'RC4Drop'> = {\n kind: 'cipher',\n name: 'RC4Drop',\n type: 'stream',\n createEncryptor({ key, options }) {\n return createRc4Transform(key, getDrop(options, 192));\n },\n createDecryptor({ key, options }) {\n return createRc4Transform(key, getDrop(options, 192));\n },\n};\n\nexport function createRc4Transform(key: Uint8Array, drop = 0): Transform {\n assertKey(key);\n assertDrop(drop);\n\n const state = createInitialState(key);\n for (let n = 0; n < drop; n++) {\n nextByte(state);\n }\n\n let finalized = false;\n\n const processInput = (input: Uint8Array): Uint8Array => {\n const output = new Uint8Array(input.length);\n for (let i = 0; i < input.length; i++) {\n output[i] = input[i] ^ nextByte(state);\n }\n return output;\n };\n\n return {\n process(input) {\n assertNotFinalized(finalized);\n return processInput(input);\n },\n\n finalize(input = new Uint8Array()) {\n assertNotFinalized(finalized);\n finalized = true;\n return input.length === 0 ? new Uint8Array() : processInput(input);\n },\n };\n}\n\ninterface Rc4State {\n readonly s: Uint8Array;\n i: number;\n j: number;\n}\n\nfunction createInitialState(key: Uint8Array): Rc4State {\n const s = new Uint8Array(256);\n for (let i = 0; i < s.length; i++) {\n s[i] = i;\n }\n\n let j = 0;\n for (let i = 0; i < s.length; i++) {\n j = (j + s[i] + key[i % key.length]) & 0xff;\n swap(s, i, j);\n }\n\n return { s, i: 0, j: 0 };\n}\n\nfunction nextByte(state: Rc4State): number {\n const { s } = state;\n state.i = (state.i + 1) & 0xff;\n state.j = (state.j + s[state.i]) & 0xff;\n swap(s, state.i, state.j);\n return s[(s[state.i] + s[state.j]) & 0xff];\n}\n\nfunction swap(bytes: Uint8Array, a: number, b: number): void {\n const value = bytes[a];\n bytes[a] = bytes[b];\n bytes[b] = value;\n}\n\nfunction getDrop(options: unknown, defaultDrop: number): number {\n if (!isRc4Options(options) || options.drop === undefined) {\n return defaultDrop;\n }\n return options.drop;\n}\n\nfunction isRc4Options(options: unknown): options is Rc4Options {\n return typeof options === 'object' && options !== null;\n}\n\nfunction assertKey(key: Uint8Array): void {\n if (key.length < 5) {\n throw new Error('RC4 key should be greater or equal than 40 bits.');\n }\n}\n\nfunction assertDrop(drop: number): void {\n if (!Number.isInteger(drop) || drop < 0) {\n throw new RangeError('RC4 drop must be a non-negative integer.');\n }\n}\n\nfunction assertNotFinalized(finalized: boolean): void {\n if (finalized) {\n throw new Error('Transform is already finalized.');\n }\n}\n", "import { createCryptoJsBlockCipher, CryptoJS } from '../adapter/crypto-js.js';\nimport type { BlockCipher, CipherComponent } from '@jscrypto/core';\n\nexport const tripleDes: CipherComponent<'TripleDES'> = {\n kind: 'cipher',\n name: 'TripleDES',\n type: 'block',\n blockSize: 8,\n keySizes: [16, 24],\n create(key) {\n return createTripleDesCipher(key);\n },\n};\n\nexport function createTripleDesCipher(key: Uint8Array): BlockCipher {\n if (![16, 24].includes(key.length)) {\n throw new Error('Triple DES key must be 128 or 192 bits.');\n }\n\n return createCryptoJsBlockCipher({\n name: 'Triple DES',\n key,\n blockSize: 8,\n algorithm: CryptoJS.algo.TripleDES,\n });\n}\n", "import type { FormatComponent } from '@jscrypto/core';\nimport { concatBytes, equalBytes } from '@jscrypto/core';\n\nexport const OPENSSL_SALTED_MAGIC = new Uint8Array([\n 0x53, 0x61, 0x6c, 0x74, 0x65, 0x64, 0x5f, 0x5f,\n]);\n\nexport const opensslFormat: FormatComponent<'OpenSSL'> = {\n kind: 'format',\n name: 'OpenSSL',\n mediaType: 'application/octet-stream',\n stringify({ ciphertext, salt }) {\n if (!salt) {\n return ciphertext.slice();\n }\n assertSalt(salt);\n return concatBytes(OPENSSL_SALTED_MAGIC, salt, ciphertext);\n },\n parse(input) {\n if (!hasSaltHeader(input)) {\n return { ciphertext: input.slice() };\n }\n\n return {\n salt: input.slice(OPENSSL_SALTED_MAGIC.length, OPENSSL_SALTED_MAGIC.length + 8),\n ciphertext: input.slice(OPENSSL_SALTED_MAGIC.length + 8),\n };\n },\n};\n\nfunction hasSaltHeader(input: Uint8Array): boolean {\n return input.length >= 16 && equalBytes(input.subarray(0, OPENSSL_SALTED_MAGIC.length), OPENSSL_SALTED_MAGIC);\n}\n\nfunction assertSalt(salt: Uint8Array): void {\n if (salt.length !== 8) {\n throw new Error('OpenSSL salt must be 64 bits.');\n }\n}\n", "import { bytesToWordArray, CryptoJS, wordArrayToBytes } from '../adapter/crypto-js.js';\nimport type { KdfComponent } from '@jscrypto/core';\n\nexport interface EvpKdfParams {\n passphrase: Uint8Array | string;\n salt: Uint8Array | string;\n iterations?: number;\n length: number;\n hash?: string;\n}\n\nexport const evpKdf: KdfComponent<'EvpKDF'> = {\n kind: 'kdf',\n name: 'EvpKDF',\n derive(params) {\n return deriveEvpKdf(params as EvpKdfParams);\n },\n};\n\nexport function deriveEvpKdf(params: EvpKdfParams): Uint8Array {\n assertPositiveInteger(params.length, 'EvpKDF length');\n if (params.iterations !== undefined) {\n assertPositiveInteger(params.iterations, 'EvpKDF iterations');\n }\n\n const options: EvpKdfCryptoJsOptions = {\n keySize: params.length / 4,\n iterations: params.iterations ?? 1,\n };\n const hasher = getHasher(params.hash);\n if (hasher) {\n options.hasher = hasher;\n }\n\n const derived = CryptoJS.EvpKDF(toCryptoJsInput(params.passphrase), toCryptoJsInput(params.salt), options);\n return wordArrayToBytes(derived);\n}\n\ninterface EvpKdfCryptoJsOptions {\n keySize: number;\n iterations: number;\n hasher?: typeof CryptoJS.algo.MD5;\n}\n\nfunction toCryptoJsInput(input: Uint8Array | string): CryptoJS.lib.WordArray | string {\n return typeof input === 'string' ? input : bytesToWordArray(input);\n}\n\nfunction getHasher(hash: string | undefined): typeof CryptoJS.algo.MD5 | undefined {\n if (!hash) {\n return undefined;\n }\n\n const hasher = (CryptoJS.algo as Record<string, unknown>)[normalizeHashName(hash)];\n if (!hasher) {\n throw new Error(`Unsupported EvpKDF hash: ${hash}`);\n }\n return hasher as typeof CryptoJS.algo.MD5;\n}\n\nfunction normalizeHashName(hash: string): string {\n return hash.replaceAll('-', '').toUpperCase();\n}\n\nfunction assertPositiveInteger(value: number, label: string): void {\n if (!Number.isInteger(value) || value <= 0) {\n throw new RangeError(`${label} must be a positive integer.`);\n }\n}\n", "import { bytesToWordArray, CryptoJS, wordArrayToBytes } from '../adapter/crypto-js.js';\nimport type { KdfComponent } from '@jscrypto/core';\n\nexport interface Pbkdf2Params {\n passphrase: Uint8Array | string;\n salt: Uint8Array | string;\n iterations: number;\n length: number;\n hash?: string;\n}\n\nexport const pbkdf2: KdfComponent<'PBKDF2'> = {\n kind: 'kdf',\n name: 'PBKDF2',\n derive(params) {\n return derivePbkdf2(params as Pbkdf2Params);\n },\n};\n\nexport function derivePbkdf2(params: Pbkdf2Params): Uint8Array {\n assertPositiveInteger(params.iterations, 'PBKDF2 iterations');\n assertPositiveInteger(params.length, 'PBKDF2 length');\n\n const options: Pbkdf2CryptoJsOptions = {\n keySize: params.length / 4,\n iterations: params.iterations,\n };\n const hasher = getHasher(params.hash);\n if (hasher) {\n options.hasher = hasher;\n }\n\n const derived = CryptoJS.PBKDF2(toCryptoJsInput(params.passphrase), toCryptoJsInput(params.salt), options);\n return wordArrayToBytes(derived);\n}\n\ninterface Pbkdf2CryptoJsOptions {\n keySize: number;\n iterations: number;\n hasher?: typeof CryptoJS.algo.SHA256;\n}\n\nfunction toCryptoJsInput(input: Uint8Array | string): CryptoJS.lib.WordArray | string {\n return typeof input === 'string' ? input : bytesToWordArray(input);\n}\n\nfunction getHasher(hash: string | undefined): typeof CryptoJS.algo.SHA256 | undefined {\n if (!hash) {\n return undefined;\n }\n\n const hasher = (CryptoJS.algo as Record<string, unknown>)[normalizeHashName(hash)];\n if (!hasher) {\n throw new Error(`Unsupported PBKDF2 hash: ${hash}`);\n }\n return hasher as typeof CryptoJS.algo.SHA256;\n}\n\nfunction normalizeHashName(hash: string): string {\n return hash.replaceAll('-', '').toUpperCase();\n}\n\nfunction assertPositiveInteger(value: number, label: string): void {\n if (!Number.isInteger(value) || value <= 0) {\n throw new RangeError(`${label} must be a positive integer.`);\n }\n}\n", "import {\n assertBlockMultiple as assertCoreBlockMultiple,\n assertIv,\n xorBytes,\n type BlockCipher,\n type ModeComponent,\n type Transform,\n} from '@jscrypto/core';\n\nexport const cbc: ModeComponent<'CBC'> = {\n kind: 'mode',\n name: 'CBC',\n requiresPadding: true,\n createEncryptor({ cipher, iv }) {\n assertIv(cipher.blockSize, iv, 'CBC');\n return createCbcEncryptor(cipher, iv);\n },\n createDecryptor({ cipher, iv }) {\n assertIv(cipher.blockSize, iv, 'CBC');\n return createCbcDecryptor(cipher, iv);\n },\n};\n\nfunction createCbcEncryptor(cipher: BlockCipher, iv: Uint8Array): Transform {\n let previous = iv;\n\n return {\n process(input) {\n assertBlockMultiple(cipher.blockSize, input);\n const output = new Uint8Array(input.length);\n\n for (let offset = 0; offset < input.length; offset += cipher.blockSize) {\n const block = xorBytes(input.subarray(offset, offset + cipher.blockSize), previous);\n const encrypted = cipher.encryptBlock(block);\n output.set(encrypted, offset);\n previous = encrypted;\n }\n\n return output;\n },\n\n finalize(input = new Uint8Array()) {\n return input.length === 0 ? new Uint8Array() : this.process(input);\n },\n };\n}\n\nfunction createCbcDecryptor(cipher: BlockCipher, iv: Uint8Array): Transform {\n let previous = iv;\n\n return {\n process(input) {\n assertBlockMultiple(cipher.blockSize, input);\n const output = new Uint8Array(input.length);\n\n for (let offset = 0; offset < input.length; offset += cipher.blockSize) {\n const block = input.subarray(offset, offset + cipher.blockSize);\n const decrypted = cipher.decryptBlock(block);\n output.set(xorBytes(decrypted, previous), offset);\n previous = block.slice();\n }\n\n return output;\n },\n\n finalize(input = new Uint8Array()) {\n return input.length === 0 ? new Uint8Array() : this.process(input);\n },\n };\n}\n\nfunction assertBlockMultiple(blockSize: number, input: Uint8Array): void {\n assertCoreBlockMultiple(input, blockSize, 'CBC');\n}\n", "import { assertIv, type BlockCipher, type ModeComponent, type Transform } from '@jscrypto/core';\n\nexport const cfb: ModeComponent<'CFB'> = {\n kind: 'mode',\n name: 'CFB',\n requiresPadding: false,\n createEncryptor({ cipher, iv }) {\n assertIv(cipher.blockSize, iv, 'CFB');\n return createCfbEncryptor(cipher, iv);\n },\n createDecryptor({ cipher, iv }) {\n assertIv(cipher.blockSize, iv, 'CFB');\n return createCfbDecryptor(cipher, iv);\n },\n};\n\nfunction createCfbEncryptor(cipher: BlockCipher, iv: Uint8Array): Transform {\n return createCfbTransform(cipher, iv, true);\n}\n\nfunction createCfbDecryptor(cipher: BlockCipher, iv: Uint8Array): Transform {\n return createCfbTransform(cipher, iv, false);\n}\n\nfunction createCfbTransform(cipher: BlockCipher, iv: Uint8Array, encrypting: boolean): Transform {\n let feedback: Uint8Array = iv.slice();\n let nextFeedback: Uint8Array = new Uint8Array(cipher.blockSize);\n let keystream: Uint8Array = new Uint8Array(cipher.blockSize);\n let position = 0;\n\n return {\n process(input) {\n const output = new Uint8Array(input.length);\n\n for (let i = 0; i < input.length; i++) {\n if (position === 0) {\n keystream = cipher.encryptBlock(feedback);\n }\n\n const inputByte = input[i];\n const outputByte = inputByte ^ keystream[position];\n output[i] = outputByte;\n nextFeedback[position] = encrypting ? outputByte : inputByte;\n position++;\n\n if (position === cipher.blockSize) {\n feedback = nextFeedback;\n nextFeedback = new Uint8Array(cipher.blockSize);\n position = 0;\n }\n }\n\n return output;\n },\n\n finalize(input = new Uint8Array()) {\n return input.length === 0 ? new Uint8Array() : this.process(input);\n },\n };\n}\n", "import { assertIv, type BlockCipher, type ModeComponent, type Transform } from '@jscrypto/core';\n\nexport const ctr: ModeComponent<'CTR'> = {\n kind: 'mode',\n name: 'CTR',\n requiresPadding: false,\n createEncryptor({ cipher, iv }) {\n assertIv(cipher.blockSize, iv, 'CTR');\n return createCtrTransform(cipher, iv);\n },\n createDecryptor({ cipher, iv }) {\n assertIv(cipher.blockSize, iv, 'CTR');\n return createCtrTransform(cipher, iv);\n },\n};\n\nfunction createCtrTransform(cipher: BlockCipher, iv: Uint8Array): Transform {\n const counter = iv.slice();\n let keystream: Uint8Array = new Uint8Array(cipher.blockSize);\n let position = cipher.blockSize;\n\n return {\n process(input) {\n const output = new Uint8Array(input.length);\n\n for (let i = 0; i < input.length; i++) {\n if (position === cipher.blockSize) {\n keystream = cipher.encryptBlock(counter);\n incrementCounter(counter);\n position = 0;\n }\n\n output[i] = input[i] ^ keystream[position];\n position++;\n }\n\n return output;\n },\n\n finalize(input = new Uint8Array()) {\n return input.length === 0 ? new Uint8Array() : this.process(input);\n },\n };\n}\n\nfunction incrementCounter(counter: Uint8Array): void {\n for (let i = counter.length - 1; i >= 0; i--) {\n counter[i] = (counter[i] + 1) & 0xff;\n if (counter[i] !== 0) {\n return;\n }\n }\n}\n", "import { assertBlockMultiple as assertCoreBlockMultiple, type BlockCipher, type ModeComponent, type Transform } from '@jscrypto/core';\n\nexport const ecb: ModeComponent<'ECB'> = {\n kind: 'mode',\n name: 'ECB',\n requiresPadding: true,\n createEncryptor({ cipher }) {\n return createEcbEncryptor(cipher);\n },\n createDecryptor({ cipher }) {\n return createEcbDecryptor(cipher);\n },\n};\n\nfunction createEcbEncryptor(cipher: BlockCipher): Transform {\n return {\n process(input) {\n assertBlockMultiple(cipher.blockSize, input);\n const output = new Uint8Array(input.length);\n\n for (let offset = 0; offset < input.length; offset += cipher.blockSize) {\n output.set(cipher.encryptBlock(input.subarray(offset, offset + cipher.blockSize)), offset);\n }\n\n return output;\n },\n\n finalize(input = new Uint8Array()) {\n return input.length === 0 ? new Uint8Array() : this.process(input);\n },\n };\n}\n\nfunction createEcbDecryptor(cipher: BlockCipher): Transform {\n return {\n process(input) {\n assertBlockMultiple(cipher.blockSize, input);\n const output = new Uint8Array(input.length);\n\n for (let offset = 0; offset < input.length; offset += cipher.blockSize) {\n output.set(cipher.decryptBlock(input.subarray(offset, offset + cipher.blockSize)), offset);\n }\n\n return output;\n },\n\n finalize(input = new Uint8Array()) {\n return input.length === 0 ? new Uint8Array() : this.process(input);\n },\n };\n}\n\nfunction assertBlockMultiple(blockSize: number, input: Uint8Array): void {\n assertCoreBlockMultiple(input, blockSize, 'ECB');\n}\n", "import type { ModeComponent } from '@jscrypto/core';\n\nexport const gcm: ModeComponent<'GCM'> = {\n kind: 'mode',\n name: 'GCM',\n aead: true,\n requiredBlockSize: 16,\n requiresPadding: false,\n createEncryptor() {\n throw new Error('GCM mode is not implemented yet.');\n },\n createDecryptor() {\n throw new Error('GCM mode is not implemented yet.');\n },\n};\n", "import { assertIv, type BlockCipher, type ModeComponent, type Transform } from '@jscrypto/core';\n\nexport const ofb: ModeComponent<'OFB'> = {\n kind: 'mode',\n name: 'OFB',\n requiresPadding: false,\n createEncryptor({ cipher, iv }) {\n assertIv(cipher.blockSize, iv, 'OFB');\n return createOfbTransform(cipher, iv);\n },\n createDecryptor({ cipher, iv }) {\n assertIv(cipher.blockSize, iv, 'OFB');\n return createOfbTransform(cipher, iv);\n },\n};\n\nfunction createOfbTransform(cipher: BlockCipher, iv: Uint8Array): Transform {\n let feedback: Uint8Array = iv.slice();\n let keystream: Uint8Array = new Uint8Array(cipher.blockSize);\n let position = cipher.blockSize;\n\n return {\n process(input) {\n const output = new Uint8Array(input.length);\n\n for (let i = 0; i < input.length; i++) {\n if (position === cipher.blockSize) {\n feedback = cipher.encryptBlock(feedback);\n keystream = feedback;\n position = 0;\n }\n\n output[i] = input[i] ^ keystream[position];\n position++;\n }\n\n return output;\n },\n\n finalize(input = new Uint8Array()) {\n return input.length === 0 ? new Uint8Array() : this.process(input);\n },\n };\n}\n", "import {\n assertBlockSize as assertCoreBlockSize,\n assertPaddedInput as assertCorePaddedInput,\n getBlockPaddingLength,\n type PaddingComponent,\n} from '@jscrypto/core';\n\nexport const ansiX923: PaddingComponent<'AnsiX923'> = {\n kind: 'padding',\n name: 'AnsiX923',\n\n pad(input, blockSize) {\n assertBlockSize(blockSize);\n const paddingLength = getPaddingLength(input.length, blockSize);\n const output = new Uint8Array(input.length + paddingLength);\n output.set(input);\n output[output.length - 1] = paddingLength;\n return output;\n },\n\n unpad(input, blockSize) {\n assertPaddedInput(input, blockSize);\n const paddingLength = input[input.length - 1];\n if (paddingLength === 0 || paddingLength > blockSize || paddingLength > input.length) {\n throw new Error('Invalid ANSI X9.23 padding.');\n }\n\n for (let i = input.length - paddingLength; i < input.length - 1; i++) {\n if (input[i] !== 0) {\n throw new Error('Invalid ANSI X9.23 padding.');\n }\n }\n\n return input.slice(0, input.length - paddingLength);\n },\n};\n\nfunction assertBlockSize(blockSize: number): void {\n assertCoreBlockSize(blockSize, { max: 255 });\n}\n\nfunction assertPaddedInput(input: Uint8Array, blockSize: number): void {\n assertCorePaddedInput(input, blockSize, 'ANSI X9.23', { max: 255 });\n}\n\nfunction getPaddingLength(inputLength: number, blockSize: number): number {\n return getBlockPaddingLength(inputLength, blockSize);\n}\n", "import {\n assertBlockSize as assertCoreBlockSize,\n assertPaddedInput as assertCorePaddedInput,\n getBlockPaddingLength,\n type PaddingComponent,\n} from '@jscrypto/core';\n\nexport const iso10126: PaddingComponent<'Iso10126'> = {\n kind: 'padding',\n name: 'Iso10126',\n\n pad(input, blockSize) {\n assertBlockSize(blockSize);\n const paddingLength = getPaddingLength(input.length, blockSize);\n const output = new Uint8Array(input.length + paddingLength);\n output.set(input);\n fillRandom(output.subarray(input.length, output.length - 1));\n output[output.length - 1] = paddingLength;\n return output;\n },\n\n unpad(input, blockSize) {\n assertPaddedInput(input, blockSize);\n const paddingLength = input[input.length - 1];\n if (paddingLength === 0 || paddingLength > blockSize || paddingLength > input.length) {\n throw new Error('Invalid ISO 10126 padding.');\n }\n return input.slice(0, input.length - paddingLength);\n },\n};\n\nfunction assertBlockSize(blockSize: number): void {\n assertCoreBlockSize(blockSize, { max: 255 });\n}\n\nfunction assertPaddedInput(input: Uint8Array, blockSize: number): void {\n assertCorePaddedInput(input, blockSize, 'ISO 10126', { max: 255 });\n}\n\nfunction getPaddingLength(inputLength: number, blockSize: number): number {\n return getBlockPaddingLength(inputLength, blockSize);\n}\n\nfunction fillRandom(bytes: Uint8Array): void {\n if (bytes.length === 0) {\n return;\n }\n\n const crypto = globalThis as typeof globalThis & {\n crypto?: {\n getRandomValues<T extends Uint8Array>(array: T): T;\n };\n };\n crypto.crypto?.getRandomValues(bytes);\n if (bytes.some((byte) => byte !== 0)) {\n return;\n }\n\n for (let i = 0; i < bytes.length; i++) {\n bytes[i] = Math.floor(Math.random() * 256);\n }\n}\n", "import {\n assertBlockSize as assertCoreBlockSize,\n assertPaddedInput as assertCorePaddedInput,\n type PaddingComponent,\n} from '@jscrypto/core';\n\nexport const iso97971: PaddingComponent<'Iso97971'> = {\n kind: 'padding',\n name: 'Iso97971',\n\n pad(input, blockSize) {\n assertBlockSize(blockSize);\n const paddingLength = getPaddingLength(input.length, blockSize);\n const output = new Uint8Array(input.length + paddingLength);\n output.set(input);\n output[input.length] = 0x80;\n return output;\n },\n\n unpad(input, blockSize) {\n assertPaddedInput(input, blockSize);\n\n let index = input.length - 1;\n while (index >= 0 && input[index] === 0) {\n index--;\n }\n\n if (index < 0 || input[index] !== 0x80) {\n throw new Error('Invalid ISO/IEC 9797-1 padding.');\n }\n\n return input.slice(0, index);\n },\n};\n\nfunction assertBlockSize(blockSize: number): void {\n assertCoreBlockSize(blockSize);\n}\n\nfunction assertPaddedInput(input: Uint8Array, blockSize: number): void {\n assertCorePaddedInput(input, blockSize, 'ISO/IEC 9797-1');\n}\n\nfunction getPaddingLength(inputLength: number, blockSize: number): number {\n const remainder = (inputLength + 1) % blockSize;\n return 1 + (remainder === 0 ? 0 : blockSize - remainder);\n}\n", "import { assertBlockMultiple, type PaddingComponent } from '@jscrypto/core';\n\nexport const noPadding: PaddingComponent<'NoPadding'> = {\n kind: 'padding',\n name: 'NoPadding',\n\n pad(input, blockSize) {\n assertMultiple(input, blockSize);\n return input.slice();\n },\n\n unpad(input, blockSize) {\n assertMultiple(input, blockSize);\n return input.slice();\n },\n};\n\nfunction assertMultiple(input: Uint8Array, blockSize: number): void {\n assertBlockMultiple(input, blockSize, 'NoPadding');\n}\n", "import { assertBlockSize, assertPaddedInput, getBlockPaddingLength, type PaddingComponent } from '@jscrypto/core';\n\nexport const pkcs7: PaddingComponent<'Pkcs7'> = {\n kind: 'padding',\n name: 'Pkcs7',\n\n pad(input, blockSize) {\n assertBlockSize(blockSize, { max: 255 });\n const paddingLength = getBlockPaddingLength(input.length, blockSize);\n const output = new Uint8Array(input.length + paddingLength);\n output.set(input);\n output.fill(paddingLength, input.length);\n return output;\n },\n\n unpad(input, blockSize) {\n assertPaddedInput(input, blockSize, 'PKCS#7', { max: 255 });\n\n const paddingLength = input[input.length - 1];\n if (paddingLength === 0 || paddingLength > blockSize || paddingLength > input.length) {\n throw new Error('Invalid PKCS#7 padding.');\n }\n\n for (let i = input.length - paddingLength; i < input.length; i++) {\n if (input[i] !== paddingLength) {\n throw new Error('Invalid PKCS#7 padding.');\n }\n }\n\n return input.slice(0, input.length - paddingLength);\n },\n};\n", "import type { PaddingComponent } from '@jscrypto/core';\n\nexport const zeroPadding: PaddingComponent<'ZeroPadding'> = {\n kind: 'padding',\n name: 'ZeroPadding',\n\n pad(input, blockSize) {\n if (!Number.isInteger(blockSize) || blockSize <= 0) {\n throw new RangeError('blockSize must be a positive integer.');\n }\n\n const remainder = input.length % blockSize;\n if (remainder === 0) {\n return input.slice();\n }\n\n const output = new Uint8Array(input.length + blockSize - remainder);\n output.set(input);\n return output;\n },\n\n unpad(input) {\n let end = input.length;\n while (end > 0 && input[end - 1] === 0) {\n end--;\n }\n return input.slice(0, end);\n },\n};\n", "import { createRegistry, type PresetComponent, type Registry } from '@jscrypto/core';\nimport { aes } from './ciphers/aes.js';\nimport { des } from './ciphers/des.js';\nimport { rc4, rc4Drop } from './ciphers/rc4.js';\nimport { tripleDes } from './ciphers/triple-des.js';\nimport { opensslFormat } from './formats/openssl.js';\nimport { evpKdf } from './kdfs/evpkdf.js';\nimport { pbkdf2 } from './kdfs/pbkdf2.js';\nimport { cbc } from './modes/cbc.js';\nimport { cfb } from './modes/cfb.js';\nimport { ctr } from './modes/ctr.js';\nimport { ecb } from './modes/ecb.js';\nimport { gcm } from './modes/gcm.js';\nimport { ofb } from './modes/ofb.js';\nimport { ansiX923 } from './paddings/ansi-x923.js';\nimport { iso10126 } from './paddings/iso10126.js';\nimport { iso97971 } from './paddings/iso97971.js';\nimport { noPadding } from './paddings/none.js';\nimport { pkcs7 } from './paddings/pkcs7.js';\nimport { zeroPadding } from './paddings/zero.js';\n\nexport function classicPreset(): PresetComponent<'classic'> {\n return {\n kind: 'preset',\n name: 'classic',\n components() {\n return [\n aes,\n des,\n rc4,\n rc4Drop,\n tripleDes,\n cbc,\n cfb,\n ctr,\n ecb,\n gcm,\n ofb,\n pkcs7,\n noPadding,\n ansiX923,\n iso10126,\n iso97971,\n zeroPadding,\n pbkdf2,\n evpKdf,\n opensslFormat,\n ];\n },\n };\n}\n\nexport function createClassicRegistry(): Registry {\n return createRegistry().use(classicPreset());\n}\n\nexport const registry: Registry = createClassicRegistry();\n"],
|
|
5
|
+
"mappings": ";;;;;;;AACA,OAAO,cAAc;AAmBd,SAAS,0BAA0B,SAAkD;AAC1F,QAAM,EAAE,MAAM,KAAK,WAAW,UAAU,IAAI;AAC5C,QAAM,WAAW,iBAAiB,GAAG;AACrC,QAAM,YAAY,UAAU,gBAAgB,QAAQ;AACpD,QAAM,YAAY,UAAU,gBAAgB,QAAQ;AAEpD,SAAO;AAAA,IACL;AAAA,IAEA,aAAa,OAAO;AAClB,kBAAY,OAAO,WAAW,IAAI;AAClC,YAAM,QAAQ,aAAa,KAAK;AAChC,gBAAU,aAAa,OAAO,CAAC;AAC/B,aAAO,aAAa,OAAO,SAAS;AAAA,IACtC;AAAA,IAEA,aAAa,OAAO;AAClB,kBAAY,OAAO,WAAW,IAAI;AAClC,YAAM,QAAQ,aAAa,KAAK;AAChC,gBAAU,aAAa,OAAO,CAAC;AAC/B,aAAO,aAAa,OAAO,SAAS;AAAA,IACtC;AAAA,EACF;AACF;AAIA,SAAS,YAAY,OAAmB,WAAmB,MAAoB;AAC7E,MAAI,MAAM,WAAW,WAAW;AAC9B,UAAM,IAAI,MAAM,GAAG,IAAI,kBAAkB,YAAY,CAAC,QAAQ;AAAA,EAChE;AACF;AAEO,SAAS,iBAAiB,OAA2C;AAC1E,SAAO,SAAS,IAAI,UAAU,OAAO,aAAa,KAAK,GAAG,MAAM,MAAM;AACxE;AAEO,SAAS,aAAa,OAA6B;AACxD,QAAM,QAAkB,CAAC;AACzB,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,UAAM,MAAM,CAAC,KAAK,MAAM,CAAC,KAAM,KAAM,IAAI,IAAK;AAAA,EAChD;AACA,SAAO;AACT;AAEO,SAAS,iBAAiB,WAA+C;AAC9E,SAAO,aAAa,UAAU,OAAO,UAAU,QAAQ;AACzD;AAEO,SAAS,aAAa,OAAiB,QAA4B;AACxE,QAAM,QAAQ,IAAI,WAAW,MAAM;AACnC,WAAS,IAAI,GAAG,IAAI,QAAQ,KAAK;AAC/B,UAAM,CAAC,IAAK,MAAM,MAAM,CAAC,MAAO,KAAM,IAAI,IAAK,IAAM;AAAA,EACvD;AACA,SAAO;AACT;;;ACxEO,IAAM,MAA8B;AAAA,EACzC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,WAAW;AAAA,EACX,UAAU,CAAC,IAAI,IAAI,EAAE;AAAA,EACrB,OAAO,KAAK;AACV,WAAO,gBAAgB,GAAG;AAAA,EAC5B;AACF;AAEO,SAAS,gBAAgB,KAA8B;AAC5D,MAAI,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,SAAS,IAAI,MAAM,GAAG;AACtC,UAAM,IAAI,MAAM,wCAAwC;AAAA,EAC1D;AAEA,SAAO,0BAA0B;AAAA,IAC/B,MAAM;AAAA,IACN;AAAA,IACA,WAAW;AAAA,IACX,WAAW,SAAS,KAAK;AAAA,EAC3B,CAAC;AACH;;;ACtBO,IAAM,MAA8B;AAAA,EACzC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,WAAW;AAAA,EACX,UAAU,CAAC,CAAC;AAAA,EACZ,OAAO,KAAK;AACV,WAAO,gBAAgB,GAAG;AAAA,EAC5B;AACF;AAEO,SAAS,gBAAgB,KAA8B;AAC5D,MAAI,IAAI,WAAW,GAAG;AACpB,UAAM,IAAI,MAAM,0BAA0B;AAAA,EAC5C;AAEA,SAAO,0BAA0B;AAAA,IAC/B,MAAM;AAAA,IACN;AAAA,IACA,WAAW;AAAA,IACX,WAAW,SAAS,KAAK;AAAA,EAC3B,CAAC;AACH;;;ACnBO,IAAM,MAAoC;AAAA,EAC/C,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,gBAAgB,EAAE,KAAK,QAAQ,GAAG;AAChC,WAAO,mBAAmB,KAAK,QAAQ,SAAS,CAAC,CAAC;AAAA,EACpD;AAAA,EACA,gBAAgB,EAAE,KAAK,QAAQ,GAAG;AAChC,WAAO,mBAAmB,KAAK,QAAQ,SAAS,CAAC,CAAC;AAAA,EACpD;AACF;AAEO,IAAM,UAA4C;AAAA,EACvD,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,gBAAgB,EAAE,KAAK,QAAQ,GAAG;AAChC,WAAO,mBAAmB,KAAK,QAAQ,SAAS,GAAG,CAAC;AAAA,EACtD;AAAA,EACA,gBAAgB,EAAE,KAAK,QAAQ,GAAG;AAChC,WAAO,mBAAmB,KAAK,QAAQ,SAAS,GAAG,CAAC;AAAA,EACtD;AACF;AAEO,SAAS,mBAAmB,KAAiB,OAAO,GAAc;AACvE,YAAU,GAAG;AACb,aAAW,IAAI;AAEf,QAAM,QAAQ,mBAAmB,GAAG;AACpC,WAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AAC7B,aAAS,KAAK;AAAA,EAChB;AAEA,MAAI,YAAY;AAEhB,QAAM,eAAe,CAAC,UAAkC;AACpD,UAAM,SAAS,IAAI,WAAW,MAAM,MAAM;AAC1C,aAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,aAAO,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,KAAK;AAAA,IACvC;AACA,WAAO;AAAA,EACX;AAEA,SAAO;AAAA,IACL,QAAQ,OAAO;AACb,yBAAmB,SAAS;AAC5B,aAAO,aAAa,KAAK;AAAA,IAC3B;AAAA,IAEA,SAAS,QAAQ,IAAI,WAAW,GAAG;AACjC,yBAAmB,SAAS;AAC5B,kBAAY;AACZ,aAAO,MAAM,WAAW,IAAI,IAAI,WAAW,IAAI,aAAa,KAAK;AAAA,IACnE;AAAA,EACF;AACF;AAQA,SAAS,mBAAmB,KAA2B;AACrD,QAAM,IAAI,IAAI,WAAW,GAAG;AAC5B,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,MAAE,CAAC,IAAI;AAAA,EACT;AAEA,MAAI,IAAI;AACR,WAAS,IAAI,GAAG,IAAI,EAAE,QAAQ,KAAK;AACjC,QAAK,IAAI,EAAE,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,IAAK;AACvC,SAAK,GAAG,GAAG,CAAC;AAAA,EACd;AAEA,SAAO,EAAE,GAAG,GAAG,GAAG,GAAG,EAAE;AACzB;AAEA,SAAS,SAAS,OAAyB;AACzC,QAAM,EAAE,EAAE,IAAI;AACd,QAAM,IAAK,MAAM,IAAI,IAAK;AAC1B,QAAM,IAAK,MAAM,IAAI,EAAE,MAAM,CAAC,IAAK;AACnC,OAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AACxB,SAAO,EAAG,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAK,GAAI;AAC3C;AAEA,SAAS,KAAK,OAAmB,GAAW,GAAiB;AAC3D,QAAM,QAAQ,MAAM,CAAC;AACrB,QAAM,CAAC,IAAI,MAAM,CAAC;AAClB,QAAM,CAAC,IAAI;AACb;AAEA,SAAS,QAAQ,SAAkB,aAA6B;AAC9D,MAAI,CAAC,aAAa,OAAO,KAAK,QAAQ,SAAS,QAAW;AACxD,WAAO;AAAA,EACT;AACA,SAAO,QAAQ;AACjB;AAEA,SAAS,aAAa,SAAyC;AAC7D,SAAO,OAAO,YAAY,YAAY,YAAY;AACpD;AAEA,SAAS,UAAU,KAAuB;AACxC,MAAI,IAAI,SAAS,GAAG;AAClB,UAAM,IAAI,MAAM,kDAAkD;AAAA,EACpE;AACF;AAEA,SAAS,WAAW,MAAoB;AACtC,MAAI,CAAC,OAAO,UAAU,IAAI,KAAK,OAAO,GAAG;AACvC,UAAM,IAAI,WAAW,0CAA0C;AAAA,EACjE;AACF;AAEA,SAAS,mBAAmB,WAA0B;AACpD,MAAI,WAAW;AACb,UAAM,IAAI,MAAM,iCAAiC;AAAA,EACnD;AACF;;;AC1HO,IAAM,YAA0C;AAAA,EACrD,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,WAAW;AAAA,EACX,UAAU,CAAC,IAAI,EAAE;AAAA,EACjB,OAAO,KAAK;AACV,WAAO,sBAAsB,GAAG;AAAA,EAClC;AACF;AAEO,SAAS,sBAAsB,KAA8B;AAClE,MAAI,CAAC,CAAC,IAAI,EAAE,EAAE,SAAS,IAAI,MAAM,GAAG;AAClC,UAAM,IAAI,MAAM,yCAAyC;AAAA,EAC3D;AAEA,SAAO,0BAA0B;AAAA,IAC/B,MAAM;AAAA,IACN;AAAA,IACA,WAAW;AAAA,IACX,WAAW,SAAS,KAAK;AAAA,EAC3B,CAAC;AACH;;;ACxBA,SAAS,aAAa,kBAAkB;AAEjC,IAAM,uBAAuB,IAAI,WAAW;AAAA,EACjD;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAAA,EAAM;AAC5C,CAAC;AAEM,IAAM,gBAA4C;AAAA,EACvD,MAAM;AAAA,EACN,MAAM;AAAA,EACN,WAAW;AAAA,EACX,UAAU,EAAE,YAAY,KAAK,GAAG;AAC9B,QAAI,CAAC,MAAM;AACT,aAAO,WAAW,MAAM;AAAA,IAC1B;AACA,eAAW,IAAI;AACf,WAAO,YAAY,sBAAsB,MAAM,UAAU;AAAA,EAC3D;AAAA,EACA,MAAM,OAAO;AACX,QAAI,CAAC,cAAc,KAAK,GAAG;AACzB,aAAO,EAAE,YAAY,MAAM,MAAM,EAAE;AAAA,IACrC;AAEA,WAAO;AAAA,MACL,MAAM,MAAM,MAAM,qBAAqB,QAAQ,qBAAqB,SAAS,CAAC;AAAA,MAC9E,YAAY,MAAM,MAAM,qBAAqB,SAAS,CAAC;AAAA,IACzD;AAAA,EACF;AACF;AAEA,SAAS,cAAc,OAA4B;AACjD,SAAO,MAAM,UAAU,MAAM,WAAW,MAAM,SAAS,GAAG,qBAAqB,MAAM,GAAG,oBAAoB;AAC9G;AAEA,SAAS,WAAW,MAAwB;AAC1C,MAAI,KAAK,WAAW,GAAG;AACrB,UAAM,IAAI,MAAM,+BAA+B;AAAA,EACjD;AACF;;;AC3BO,IAAM,SAAiC;AAAA,EAC5C,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO,QAAQ;AACb,WAAO,aAAa,MAAsB;AAAA,EAC5C;AACF;AAEO,SAAS,aAAa,QAAkC;AAC7D,wBAAsB,OAAO,QAAQ,eAAe;AACpD,MAAI,OAAO,eAAe,QAAW;AACnC,0BAAsB,OAAO,YAAY,mBAAmB;AAAA,EAC9D;AAEA,QAAM,UAAiC;AAAA,IACrC,SAAS,OAAO,SAAS;AAAA,IACzB,YAAY,OAAO,cAAc;AAAA,EACnC;AACA,QAAM,SAAS,UAAU,OAAO,IAAI;AACpC,MAAI,QAAQ;AACV,YAAQ,SAAS;AAAA,EACnB;AAEA,QAAM,UAAU,SAAS,OAAO,gBAAgB,OAAO,UAAU,GAAG,gBAAgB,OAAO,IAAI,GAAG,OAAO;AACzG,SAAO,iBAAiB,OAAO;AACjC;AAQA,SAAS,gBAAgB,OAA6D;AACpF,SAAO,OAAO,UAAU,WAAW,QAAQ,iBAAiB,KAAK;AACnE;AAEA,SAAS,UAAU,MAAgE;AACjF,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,SAAU,SAAS,KAAiC,kBAAkB,IAAI,CAAC;AACjF,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,4BAA4B,IAAI,EAAE;AAAA,EACpD;AACA,SAAO;AACT;AAEA,SAAS,kBAAkB,MAAsB;AAC/C,SAAO,KAAK,WAAW,KAAK,EAAE,EAAE,YAAY;AAC9C;AAEA,SAAS,sBAAsB,OAAe,OAAqB;AACjE,MAAI,CAAC,OAAO,UAAU,KAAK,KAAK,SAAS,GAAG;AAC1C,UAAM,IAAI,WAAW,GAAG,KAAK,8BAA8B;AAAA,EAC7D;AACF;;;ACzDO,IAAM,SAAiC;AAAA,EAC5C,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO,QAAQ;AACb,WAAO,aAAa,MAAsB;AAAA,EAC5C;AACF;AAEO,SAAS,aAAa,QAAkC;AAC7D,EAAAA,uBAAsB,OAAO,YAAY,mBAAmB;AAC5D,EAAAA,uBAAsB,OAAO,QAAQ,eAAe;AAEpD,QAAM,UAAiC;AAAA,IACrC,SAAS,OAAO,SAAS;AAAA,IACzB,YAAY,OAAO;AAAA,EACrB;AACA,QAAM,SAASC,WAAU,OAAO,IAAI;AACpC,MAAI,QAAQ;AACV,YAAQ,SAAS;AAAA,EACnB;AAEA,QAAM,UAAU,SAAS,OAAOC,iBAAgB,OAAO,UAAU,GAAGA,iBAAgB,OAAO,IAAI,GAAG,OAAO;AACzG,SAAO,iBAAiB,OAAO;AACjC;AAQA,SAASA,iBAAgB,OAA6D;AACpF,SAAO,OAAO,UAAU,WAAW,QAAQ,iBAAiB,KAAK;AACnE;AAEA,SAASD,WAAU,MAAmE;AACpF,MAAI,CAAC,MAAM;AACT,WAAO;AAAA,EACT;AAEA,QAAM,SAAU,SAAS,KAAiCE,mBAAkB,IAAI,CAAC;AACjF,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,4BAA4B,IAAI,EAAE;AAAA,EACpD;AACA,SAAO;AACT;AAEA,SAASA,mBAAkB,MAAsB;AAC/C,SAAO,KAAK,WAAW,KAAK,EAAE,EAAE,YAAY;AAC9C;AAEA,SAASH,uBAAsB,OAAe,OAAqB;AACjE,MAAI,CAAC,OAAO,UAAU,KAAK,KAAK,SAAS,GAAG;AAC1C,UAAM,IAAI,WAAW,GAAG,KAAK,8BAA8B;AAAA,EAC7D;AACF;;;AClEA;AAAA,EACE,uBAAuB;AAAA,EACvB;AAAA,EACA;AAAA,OAIK;AAEA,IAAM,MAA4B;AAAA,EACvC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,gBAAgB,EAAE,QAAQ,GAAG,GAAG;AAC9B,aAAS,OAAO,WAAW,IAAI,KAAK;AACpC,WAAO,mBAAmB,QAAQ,EAAE;AAAA,EACtC;AAAA,EACA,gBAAgB,EAAE,QAAQ,GAAG,GAAG;AAC9B,aAAS,OAAO,WAAW,IAAI,KAAK;AACpC,WAAO,mBAAmB,QAAQ,EAAE;AAAA,EACtC;AACF;AAEA,SAAS,mBAAmB,QAAqB,IAA2B;AAC1E,MAAI,WAAW;AAEf,SAAO;AAAA,IACL,QAAQ,OAAO;AACb,0BAAoB,OAAO,WAAW,KAAK;AAC3C,YAAM,SAAS,IAAI,WAAW,MAAM,MAAM;AAE1C,eAAS,SAAS,GAAG,SAAS,MAAM,QAAQ,UAAU,OAAO,WAAW;AACtE,cAAM,QAAQ,SAAS,MAAM,SAAS,QAAQ,SAAS,OAAO,SAAS,GAAG,QAAQ;AAClF,cAAM,YAAY,OAAO,aAAa,KAAK;AAC3C,eAAO,IAAI,WAAW,MAAM;AAC5B,mBAAW;AAAA,MACb;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,SAAS,QAAQ,IAAI,WAAW,GAAG;AACjC,aAAO,MAAM,WAAW,IAAI,IAAI,WAAW,IAAI,KAAK,QAAQ,KAAK;AAAA,IACnE;AAAA,EACF;AACF;AAEA,SAAS,mBAAmB,QAAqB,IAA2B;AAC1E,MAAI,WAAW;AAEf,SAAO;AAAA,IACL,QAAQ,OAAO;AACb,0BAAoB,OAAO,WAAW,KAAK;AAC3C,YAAM,SAAS,IAAI,WAAW,MAAM,MAAM;AAE1C,eAAS,SAAS,GAAG,SAAS,MAAM,QAAQ,UAAU,OAAO,WAAW;AACtE,cAAM,QAAQ,MAAM,SAAS,QAAQ,SAAS,OAAO,SAAS;AAC9D,cAAM,YAAY,OAAO,aAAa,KAAK;AAC3C,eAAO,IAAI,SAAS,WAAW,QAAQ,GAAG,MAAM;AAChD,mBAAW,MAAM,MAAM;AAAA,MACzB;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,SAAS,QAAQ,IAAI,WAAW,GAAG;AACjC,aAAO,MAAM,WAAW,IAAI,IAAI,WAAW,IAAI,KAAK,QAAQ,KAAK;AAAA,IACnE;AAAA,EACF;AACF;AAEA,SAAS,oBAAoB,WAAmB,OAAyB;AACvE,0BAAwB,OAAO,WAAW,KAAK;AACjD;;;ACzEA,SAAS,YAAAI,iBAAsE;AAExE,IAAM,MAA4B;AAAA,EACvC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,gBAAgB,EAAE,QAAQ,GAAG,GAAG;AAC9B,IAAAA,UAAS,OAAO,WAAW,IAAI,KAAK;AACpC,WAAO,mBAAmB,QAAQ,EAAE;AAAA,EACtC;AAAA,EACA,gBAAgB,EAAE,QAAQ,GAAG,GAAG;AAC9B,IAAAA,UAAS,OAAO,WAAW,IAAI,KAAK;AACpC,WAAO,mBAAmB,QAAQ,EAAE;AAAA,EACtC;AACF;AAEA,SAAS,mBAAmB,QAAqB,IAA2B;AAC1E,SAAO,mBAAmB,QAAQ,IAAI,IAAI;AAC5C;AAEA,SAAS,mBAAmB,QAAqB,IAA2B;AAC1E,SAAO,mBAAmB,QAAQ,IAAI,KAAK;AAC7C;AAEA,SAAS,mBAAmB,QAAqB,IAAgB,YAAgC;AAC/F,MAAI,WAAuB,GAAG,MAAM;AACpC,MAAI,eAA2B,IAAI,WAAW,OAAO,SAAS;AAC9D,MAAI,YAAwB,IAAI,WAAW,OAAO,SAAS;AAC3D,MAAI,WAAW;AAEf,SAAO;AAAA,IACL,QAAQ,OAAO;AACb,YAAM,SAAS,IAAI,WAAW,MAAM,MAAM;AAE1C,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAI,aAAa,GAAG;AAClB,sBAAY,OAAO,aAAa,QAAQ;AAAA,QAC1C;AAEA,cAAM,YAAY,MAAM,CAAC;AACzB,cAAM,aAAa,YAAY,UAAU,QAAQ;AACjD,eAAO,CAAC,IAAI;AACZ,qBAAa,QAAQ,IAAI,aAAa,aAAa;AACnD;AAEA,YAAI,aAAa,OAAO,WAAW;AACjC,qBAAW;AACX,yBAAe,IAAI,WAAW,OAAO,SAAS;AAC9C,qBAAW;AAAA,QACb;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,SAAS,QAAQ,IAAI,WAAW,GAAG;AACjC,aAAO,MAAM,WAAW,IAAI,IAAI,WAAW,IAAI,KAAK,QAAQ,KAAK;AAAA,IACnE;AAAA,EACF;AACF;;;AC3DA,SAAS,YAAAC,iBAAsE;AAExE,IAAM,MAA4B;AAAA,EACvC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,gBAAgB,EAAE,QAAQ,GAAG,GAAG;AAC9B,IAAAA,UAAS,OAAO,WAAW,IAAI,KAAK;AACpC,WAAO,mBAAmB,QAAQ,EAAE;AAAA,EACtC;AAAA,EACA,gBAAgB,EAAE,QAAQ,GAAG,GAAG;AAC9B,IAAAA,UAAS,OAAO,WAAW,IAAI,KAAK;AACpC,WAAO,mBAAmB,QAAQ,EAAE;AAAA,EACtC;AACF;AAEA,SAAS,mBAAmB,QAAqB,IAA2B;AAC1E,QAAM,UAAU,GAAG,MAAM;AACzB,MAAI,YAAwB,IAAI,WAAW,OAAO,SAAS;AAC3D,MAAI,WAAW,OAAO;AAEtB,SAAO;AAAA,IACL,QAAQ,OAAO;AACb,YAAM,SAAS,IAAI,WAAW,MAAM,MAAM;AAE1C,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAI,aAAa,OAAO,WAAW;AACjC,sBAAY,OAAO,aAAa,OAAO;AACvC,2BAAiB,OAAO;AACxB,qBAAW;AAAA,QACb;AAEA,eAAO,CAAC,IAAI,MAAM,CAAC,IAAI,UAAU,QAAQ;AACzC;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,SAAS,QAAQ,IAAI,WAAW,GAAG;AACjC,aAAO,MAAM,WAAW,IAAI,IAAI,WAAW,IAAI,KAAK,QAAQ,KAAK;AAAA,IACnE;AAAA,EACF;AACF;AAEA,SAAS,iBAAiB,SAA2B;AACnD,WAAS,IAAI,QAAQ,SAAS,GAAG,KAAK,GAAG,KAAK;AAC5C,YAAQ,CAAC,IAAK,QAAQ,CAAC,IAAI,IAAK;AAChC,QAAI,QAAQ,CAAC,MAAM,GAAG;AACpB;AAAA,IACF;AAAA,EACF;AACF;;;ACpDA,SAAS,uBAAuBC,gCAAqF;AAE9G,IAAM,MAA4B;AAAA,EACvC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,gBAAgB,EAAE,OAAO,GAAG;AAC1B,WAAO,mBAAmB,MAAM;AAAA,EAClC;AAAA,EACA,gBAAgB,EAAE,OAAO,GAAG;AAC1B,WAAO,mBAAmB,MAAM;AAAA,EAClC;AACF;AAEA,SAAS,mBAAmB,QAAgC;AAC1D,SAAO;AAAA,IACL,QAAQ,OAAO;AACb,MAAAC,qBAAoB,OAAO,WAAW,KAAK;AAC3C,YAAM,SAAS,IAAI,WAAW,MAAM,MAAM;AAE1C,eAAS,SAAS,GAAG,SAAS,MAAM,QAAQ,UAAU,OAAO,WAAW;AACtE,eAAO,IAAI,OAAO,aAAa,MAAM,SAAS,QAAQ,SAAS,OAAO,SAAS,CAAC,GAAG,MAAM;AAAA,MAC3F;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,SAAS,QAAQ,IAAI,WAAW,GAAG;AACjC,aAAO,MAAM,WAAW,IAAI,IAAI,WAAW,IAAI,KAAK,QAAQ,KAAK;AAAA,IACnE;AAAA,EACF;AACF;AAEA,SAAS,mBAAmB,QAAgC;AAC1D,SAAO;AAAA,IACL,QAAQ,OAAO;AACb,MAAAA,qBAAoB,OAAO,WAAW,KAAK;AAC3C,YAAM,SAAS,IAAI,WAAW,MAAM,MAAM;AAE1C,eAAS,SAAS,GAAG,SAAS,MAAM,QAAQ,UAAU,OAAO,WAAW;AACtE,eAAO,IAAI,OAAO,aAAa,MAAM,SAAS,QAAQ,SAAS,OAAO,SAAS,CAAC,GAAG,MAAM;AAAA,MAC3F;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,SAAS,QAAQ,IAAI,WAAW,GAAG;AACjC,aAAO,MAAM,WAAW,IAAI,IAAI,WAAW,IAAI,KAAK,QAAQ,KAAK;AAAA,IACnE;AAAA,EACF;AACF;AAEA,SAASA,qBAAoB,WAAmB,OAAyB;AACvE,EAAAD,yBAAwB,OAAO,WAAW,KAAK;AACjD;;;ACpDO,IAAM,MAA4B;AAAA,EACvC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,kBAAkB;AAChB,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AAAA,EACA,kBAAkB;AAChB,UAAM,IAAI,MAAM,kCAAkC;AAAA,EACpD;AACF;;;ACdA,SAAS,YAAAE,iBAAsE;AAExE,IAAM,MAA4B;AAAA,EACvC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,gBAAgB,EAAE,QAAQ,GAAG,GAAG;AAC9B,IAAAA,UAAS,OAAO,WAAW,IAAI,KAAK;AACpC,WAAO,mBAAmB,QAAQ,EAAE;AAAA,EACtC;AAAA,EACA,gBAAgB,EAAE,QAAQ,GAAG,GAAG;AAC9B,IAAAA,UAAS,OAAO,WAAW,IAAI,KAAK;AACpC,WAAO,mBAAmB,QAAQ,EAAE;AAAA,EACtC;AACF;AAEA,SAAS,mBAAmB,QAAqB,IAA2B;AAC1E,MAAI,WAAuB,GAAG,MAAM;AACpC,MAAI,YAAwB,IAAI,WAAW,OAAO,SAAS;AAC3D,MAAI,WAAW,OAAO;AAEtB,SAAO;AAAA,IACL,QAAQ,OAAO;AACb,YAAM,SAAS,IAAI,WAAW,MAAM,MAAM;AAE1C,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,YAAI,aAAa,OAAO,WAAW;AACjC,qBAAW,OAAO,aAAa,QAAQ;AACvC,sBAAY;AACZ,qBAAW;AAAA,QACb;AAEA,eAAO,CAAC,IAAI,MAAM,CAAC,IAAI,UAAU,QAAQ;AACzC;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEA,SAAS,QAAQ,IAAI,WAAW,GAAG;AACjC,aAAO,MAAM,WAAW,IAAI,IAAI,WAAW,IAAI,KAAK,QAAQ,KAAK;AAAA,IACnE;AAAA,EACF;AACF;;;AC3CA;AAAA,EACE,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB;AAAA,OAEK;AAEA,IAAM,WAAyC;AAAA,EACpD,MAAM;AAAA,EACN,MAAM;AAAA,EAEN,IAAI,OAAO,WAAW;AACpB,oBAAgB,SAAS;AACzB,UAAM,gBAAgB,iBAAiB,MAAM,QAAQ,SAAS;AAC9D,UAAM,SAAS,IAAI,WAAW,MAAM,SAAS,aAAa;AAC1D,WAAO,IAAI,KAAK;AAChB,WAAO,OAAO,SAAS,CAAC,IAAI;AAC5B,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,WAAW;AACtB,sBAAkB,OAAO,SAAS;AAClC,UAAM,gBAAgB,MAAM,MAAM,SAAS,CAAC;AAC5C,QAAI,kBAAkB,KAAK,gBAAgB,aAAa,gBAAgB,MAAM,QAAQ;AACpF,YAAM,IAAI,MAAM,6BAA6B;AAAA,IAC/C;AAEA,aAAS,IAAI,MAAM,SAAS,eAAe,IAAI,MAAM,SAAS,GAAG,KAAK;AACpE,UAAI,MAAM,CAAC,MAAM,GAAG;AAClB,cAAM,IAAI,MAAM,6BAA6B;AAAA,MAC/C;AAAA,IACF;AAEA,WAAO,MAAM,MAAM,GAAG,MAAM,SAAS,aAAa;AAAA,EACpD;AACF;AAEA,SAAS,gBAAgB,WAAyB;AAChD,sBAAoB,WAAW,EAAE,KAAK,IAAI,CAAC;AAC7C;AAEA,SAAS,kBAAkB,OAAmB,WAAyB;AACrE,wBAAsB,OAAO,WAAW,cAAc,EAAE,KAAK,IAAI,CAAC;AACpE;AAEA,SAAS,iBAAiB,aAAqB,WAA2B;AACxE,SAAO,sBAAsB,aAAa,SAAS;AACrD;;;AC/CA;AAAA,EACE,mBAAmBC;AAAA,EACnB,qBAAqBC;AAAA,EACrB,yBAAAC;AAAA,OAEK;AAEA,IAAM,WAAyC;AAAA,EACpD,MAAM;AAAA,EACN,MAAM;AAAA,EAEN,IAAI,OAAO,WAAW;AACpB,IAAAC,iBAAgB,SAAS;AACzB,UAAM,gBAAgBC,kBAAiB,MAAM,QAAQ,SAAS;AAC9D,UAAM,SAAS,IAAI,WAAW,MAAM,SAAS,aAAa;AAC1D,WAAO,IAAI,KAAK;AAChB,eAAW,OAAO,SAAS,MAAM,QAAQ,OAAO,SAAS,CAAC,CAAC;AAC3D,WAAO,OAAO,SAAS,CAAC,IAAI;AAC5B,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,WAAW;AACtB,IAAAC,mBAAkB,OAAO,SAAS;AAClC,UAAM,gBAAgB,MAAM,MAAM,SAAS,CAAC;AAC5C,QAAI,kBAAkB,KAAK,gBAAgB,aAAa,gBAAgB,MAAM,QAAQ;AACpF,YAAM,IAAI,MAAM,4BAA4B;AAAA,IAC9C;AACA,WAAO,MAAM,MAAM,GAAG,MAAM,SAAS,aAAa;AAAA,EACpD;AACF;AAEA,SAASF,iBAAgB,WAAyB;AAChD,EAAAH,qBAAoB,WAAW,EAAE,KAAK,IAAI,CAAC;AAC7C;AAEA,SAASK,mBAAkB,OAAmB,WAAyB;AACrE,EAAAJ,uBAAsB,OAAO,WAAW,aAAa,EAAE,KAAK,IAAI,CAAC;AACnE;AAEA,SAASG,kBAAiB,aAAqB,WAA2B;AACxE,SAAOF,uBAAsB,aAAa,SAAS;AACrD;AAEA,SAAS,WAAW,OAAyB;AAC3C,MAAI,MAAM,WAAW,GAAG;AACtB;AAAA,EACF;AAEA,QAAM,SAAS;AAKf,SAAO,QAAQ,gBAAgB,KAAK;AACpC,MAAI,MAAM,KAAK,CAAC,SAAS,SAAS,CAAC,GAAG;AACpC;AAAA,EACF;AAEA,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,UAAM,CAAC,IAAI,KAAK,MAAM,KAAK,OAAO,IAAI,GAAG;AAAA,EAC3C;AACF;;;AC7DA;AAAA,EACE,mBAAmBI;AAAA,EACnB,qBAAqBC;AAAA,OAEhB;AAEA,IAAM,WAAyC;AAAA,EACpD,MAAM;AAAA,EACN,MAAM;AAAA,EAEN,IAAI,OAAO,WAAW;AACpB,IAAAC,iBAAgB,SAAS;AACzB,UAAM,gBAAgBC,kBAAiB,MAAM,QAAQ,SAAS;AAC9D,UAAM,SAAS,IAAI,WAAW,MAAM,SAAS,aAAa;AAC1D,WAAO,IAAI,KAAK;AAChB,WAAO,MAAM,MAAM,IAAI;AACvB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,WAAW;AACtB,IAAAC,mBAAkB,OAAO,SAAS;AAElC,QAAI,QAAQ,MAAM,SAAS;AAC3B,WAAO,SAAS,KAAK,MAAM,KAAK,MAAM,GAAG;AACvC;AAAA,IACF;AAEA,QAAI,QAAQ,KAAK,MAAM,KAAK,MAAM,KAAM;AACtC,YAAM,IAAI,MAAM,iCAAiC;AAAA,IACnD;AAEA,WAAO,MAAM,MAAM,GAAG,KAAK;AAAA,EAC7B;AACF;AAEA,SAASF,iBAAgB,WAAyB;AAChD,EAAAF,qBAAoB,SAAS;AAC/B;AAEA,SAASI,mBAAkB,OAAmB,WAAyB;AACrE,EAAAH,uBAAsB,OAAO,WAAW,gBAAgB;AAC1D;AAEA,SAASE,kBAAiB,aAAqB,WAA2B;AACxE,QAAM,aAAa,cAAc,KAAK;AACtC,SAAO,KAAK,cAAc,IAAI,IAAI,YAAY;AAChD;;;AC9CA,SAAS,uBAAAE,4BAAkD;AAEpD,IAAM,YAA2C;AAAA,EACtD,MAAM;AAAA,EACN,MAAM;AAAA,EAEN,IAAI,OAAO,WAAW;AACpB,mBAAe,OAAO,SAAS;AAC/B,WAAO,MAAM,MAAM;AAAA,EACrB;AAAA,EAEA,MAAM,OAAO,WAAW;AACtB,mBAAe,OAAO,SAAS;AAC/B,WAAO,MAAM,MAAM;AAAA,EACrB;AACF;AAEA,SAAS,eAAe,OAAmB,WAAyB;AAClE,EAAAA,qBAAoB,OAAO,WAAW,WAAW;AACnD;;;ACnBA,SAAS,mBAAAC,kBAAiB,qBAAAC,oBAAmB,yBAAAC,8BAAoD;AAE1F,IAAM,QAAmC;AAAA,EAC9C,MAAM;AAAA,EACN,MAAM;AAAA,EAEN,IAAI,OAAO,WAAW;AACpB,IAAAF,iBAAgB,WAAW,EAAE,KAAK,IAAI,CAAC;AACvC,UAAM,gBAAgBE,uBAAsB,MAAM,QAAQ,SAAS;AACnE,UAAM,SAAS,IAAI,WAAW,MAAM,SAAS,aAAa;AAC1D,WAAO,IAAI,KAAK;AAChB,WAAO,KAAK,eAAe,MAAM,MAAM;AACvC,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO,WAAW;AACtB,IAAAD,mBAAkB,OAAO,WAAW,UAAU,EAAE,KAAK,IAAI,CAAC;AAE1D,UAAM,gBAAgB,MAAM,MAAM,SAAS,CAAC;AAC5C,QAAI,kBAAkB,KAAK,gBAAgB,aAAa,gBAAgB,MAAM,QAAQ;AACpF,YAAM,IAAI,MAAM,yBAAyB;AAAA,IAC3C;AAEA,aAAS,IAAI,MAAM,SAAS,eAAe,IAAI,MAAM,QAAQ,KAAK;AAChE,UAAI,MAAM,CAAC,MAAM,eAAe;AAC9B,cAAM,IAAI,MAAM,yBAAyB;AAAA,MAC3C;AAAA,IACF;AAEA,WAAO,MAAM,MAAM,GAAG,MAAM,SAAS,aAAa;AAAA,EACpD;AACF;;;AC7BO,IAAM,cAA+C;AAAA,EAC1D,MAAM;AAAA,EACN,MAAM;AAAA,EAEN,IAAI,OAAO,WAAW;AACpB,QAAI,CAAC,OAAO,UAAU,SAAS,KAAK,aAAa,GAAG;AAClD,YAAM,IAAI,WAAW,uCAAuC;AAAA,IAC9D;AAEA,UAAM,YAAY,MAAM,SAAS;AACjC,QAAI,cAAc,GAAG;AACnB,aAAO,MAAM,MAAM;AAAA,IACrB;AAEA,UAAM,SAAS,IAAI,WAAW,MAAM,SAAS,YAAY,SAAS;AAClE,WAAO,IAAI,KAAK;AAChB,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAO;AACX,QAAI,MAAM,MAAM;AAChB,WAAO,MAAM,KAAK,MAAM,MAAM,CAAC,MAAM,GAAG;AACtC;AAAA,IACF;AACA,WAAO,MAAM,MAAM,GAAG,GAAG;AAAA,EAC3B;AACF;;;AC5BA,SAAS,sBAA2D;AAqB7D,SAAS,gBAA4C;AAC1D,SAAO;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,aAAa;AACX,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,wBAAkC;AAChD,SAAO,eAAe,EAAE,IAAI,cAAc,CAAC;AAC7C;AAEO,IAAM,WAAqB,sBAAsB;",
|
|
6
|
+
"names": ["assertPositiveInteger", "getHasher", "toCryptoJsInput", "normalizeHashName", "assertIv", "assertIv", "assertCoreBlockMultiple", "assertBlockMultiple", "assertIv", "assertCoreBlockSize", "assertCorePaddedInput", "getBlockPaddingLength", "assertBlockSize", "getPaddingLength", "assertPaddedInput", "assertCoreBlockSize", "assertCorePaddedInput", "assertBlockSize", "getPaddingLength", "assertPaddedInput", "assertBlockMultiple", "assertBlockSize", "assertPaddedInput", "getBlockPaddingLength"]
|
|
7
|
+
}
|