@fireproof/core 0.10.0-dev → 0.10.2-dev

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. package/dist/fireproof.browser.js +2 -3
  2. package/dist/fireproof.browser.js.map +2 -2
  3. package/dist/fireproof.cjs.js +2 -3
  4. package/dist/fireproof.cjs.js.map +2 -2
  5. package/dist/fireproof.esm.js +2 -3
  6. package/dist/fireproof.esm.js.map +2 -2
  7. package/package.json +5 -1
  8. package/.eslintrc.cjs +0 -37
  9. package/.vscode/launch.json +0 -12
  10. package/dist/crdt-helpers.browser.js +0 -4961
  11. package/dist/crdt-helpers.browser.js.map +0 -7
  12. package/dist/crdt-helpers.cjs.js +0 -4823
  13. package/dist/crdt-helpers.cjs.js.map +0 -7
  14. package/dist/crdt-helpers.esm.js +0 -4788
  15. package/dist/crdt-helpers.esm.js.map +0 -7
  16. package/dist/crdt.browser.js +0 -18214
  17. package/dist/crdt.browser.js.map +0 -7
  18. package/dist/crdt.cjs.js +0 -8692
  19. package/dist/crdt.cjs.js.map +0 -7
  20. package/dist/crdt.esm.js +0 -8682
  21. package/dist/crdt.esm.js.map +0 -7
  22. package/dist/database.browser.js +0 -18867
  23. package/dist/database.browser.js.map +0 -7
  24. package/dist/database.cjs.js +0 -9296
  25. package/dist/database.cjs.js.map +0 -7
  26. package/dist/database.esm.js +0 -9288
  27. package/dist/database.esm.js.map +0 -7
  28. package/dist/loader-helpers.browser.js +0 -6943
  29. package/dist/loader-helpers.browser.js.map +0 -7
  30. package/dist/loader-helpers.cjs.js +0 -4419
  31. package/dist/loader-helpers.cjs.js.map +0 -7
  32. package/dist/loader-helpers.esm.js +0 -4408
  33. package/dist/loader-helpers.esm.js.map +0 -7
  34. package/dist/loader.browser.js +0 -15968
  35. package/dist/loader.browser.js.map +0 -7
  36. package/dist/loader.cjs.js +0 -6667
  37. package/dist/loader.cjs.js.map +0 -7
  38. package/dist/loader.esm.js +0 -6657
  39. package/dist/loader.esm.js.map +0 -7
  40. package/dist/store-browser.browser.js +0 -1414
  41. package/dist/store-browser.browser.js.map +0 -7
  42. package/dist/store-browser.cjs.js +0 -1387
  43. package/dist/store-browser.cjs.js.map +0 -7
  44. package/dist/store-browser.esm.js +0 -1358
  45. package/dist/store-browser.esm.js.map +0 -7
  46. package/dist/store-fs.browser.js +0 -16142
  47. package/dist/store-fs.browser.js.map +0 -7
  48. package/dist/store-fs.cjs.js +0 -1171
  49. package/dist/store-fs.cjs.js.map +0 -7
  50. package/dist/store-fs.esm.js +0 -1143
  51. package/dist/store-fs.esm.js.map +0 -7
  52. package/dist/store.browser.js +0 -1113
  53. package/dist/store.browser.js.map +0 -7
  54. package/dist/store.cjs.js +0 -1126
  55. package/dist/store.cjs.js.map +0 -7
  56. package/dist/store.esm.js +0 -1097
  57. package/dist/store.esm.js.map +0 -7
  58. package/dist/transaction.browser.js +0 -17241
  59. package/dist/transaction.browser.js.map +0 -7
  60. package/dist/transaction.cjs.js +0 -7842
  61. package/dist/transaction.cjs.js.map +0 -7
  62. package/dist/transaction.esm.js +0 -7831
  63. package/dist/transaction.esm.js.map +0 -7
  64. package/dist/types.d.browser.js +0 -4
  65. package/dist/types.d.browser.js.map +0 -7
  66. package/dist/types.d.cjs.js +0 -19
  67. package/dist/types.d.cjs.js.map +0 -7
  68. package/dist/types.d.esm.js +0 -1
  69. package/dist/types.d.esm.js.map +0 -7
  70. package/scripts/analyze.js +0 -31
  71. package/scripts/build.js +0 -20
  72. package/scripts/serve.js +0 -20
  73. package/scripts/settings.js +0 -65
  74. package/scripts/test.js +0 -14
  75. package/src/crdt-helpers.ts +0 -89
  76. package/src/crdt.ts +0 -45
  77. package/src/database.ts +0 -61
  78. package/src/fireproof.ts +0 -6
  79. package/src/loader-helpers.ts +0 -53
  80. package/src/loader.ts +0 -66
  81. package/src/store-browser.ts +0 -76
  82. package/src/store-fs.ts +0 -51
  83. package/src/store.ts +0 -32
  84. package/src/transaction.ts +0 -68
  85. package/src/types.d.ts +0 -38
  86. package/test/crdt.test.js +0 -142
  87. package/test/database.test.js +0 -144
  88. package/test/fireproof.test.js +0 -50
  89. package/test/globals.d.ts +0 -4
  90. package/test/hello.test.js +0 -9
  91. package/test/helpers.js +0 -34
  92. package/test/loader.test.js +0 -112
  93. package/test/store-fs.test.js +0 -105
  94. package/test/transaction.test.js +0 -90
  95. package/tsconfig.json +0 -18
  96. package/webpack.config.cjs +0 -17
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../node_modules/varint/encode.js", "../node_modules/varint/decode.js", "../node_modules/varint/length.js", "../node_modules/varint/index.js", "../node_modules/multiformats/vendor/varint.js", "../node_modules/multiformats/src/varint.js", "../node_modules/multiformats/src/bytes.js", "../node_modules/multiformats/src/hashes/digest.js", "../node_modules/multiformats/vendor/base-x.js", "../node_modules/multiformats/src/bases/base.js", "../node_modules/multiformats/src/bases/base58.js", "../node_modules/multiformats/src/bases/base32.js", "../node_modules/multiformats/src/cid.js", "../node_modules/multiformats/src/hashes/hasher.js", "../node_modules/multiformats/src/block.js", "../node_modules/multiformats/src/hashes/sha2.js", "../node_modules/multiformats/src/codecs/raw.js", "../node_modules/@ipld/car/src/buffer-writer.js", "../node_modules/cborg/esm/lib/is.js", "../node_modules/cborg/esm/lib/token.js", "../node_modules/cborg/esm/lib/byte-utils.js", "../node_modules/cborg/esm/lib/bl.js", "../node_modules/cborg/esm/lib/common.js", "../node_modules/cborg/esm/lib/0uint.js", "../node_modules/cborg/esm/lib/1negint.js", "../node_modules/cborg/esm/lib/2bytes.js", "../node_modules/cborg/esm/lib/3string.js", "../node_modules/cborg/esm/lib/4array.js", "../node_modules/cborg/esm/lib/5map.js", "../node_modules/cborg/esm/lib/6tag.js", "../node_modules/cborg/esm/lib/7float.js", "../node_modules/cborg/esm/lib/jump.js", "../node_modules/cborg/esm/lib/encode.js", "../node_modules/cborg/esm/lib/decode.js", "../node_modules/cborg/esm/lib/length.js", "../node_modules/@ipld/dag-cbor/src/index.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/is.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/token.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/byte-utils.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/bl.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/common.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/0uint.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/1negint.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/2bytes.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/3string.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/4array.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/5map.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/6tag.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/7float.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/jump.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/encode.js", "../node_modules/@ipld/dag-cbor/node_modules/cborg/esm/lib/decode.js", "../src/loader-helpers.ts"],
4
- "sourcesContent": ["module.exports = encode\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31)\n\nfunction encode(num, out, offset) {\n if (Number.MAX_SAFE_INTEGER && num > Number.MAX_SAFE_INTEGER) {\n encode.bytes = 0\n throw new RangeError('Could not encode varint')\n }\n out = out || []\n offset = offset || 0\n var oldOffset = offset\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB\n num /= 128\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB\n num >>>= 7\n }\n out[offset] = num | 0\n \n encode.bytes = offset - oldOffset + 1\n \n return out\n}\n", "module.exports = read\n\nvar MSB = 0x80\n , REST = 0x7F\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length\n\n do {\n if (counter >= l || shift > 49) {\n read.bytes = 0\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++]\n res += shift < 28\n ? (b & REST) << shift\n : (b & REST) * Math.pow(2, shift)\n shift += 7\n } while (b >= MSB)\n\n read.bytes = counter - offset\n\n return res\n}\n", "\nvar N1 = Math.pow(2, 7)\nvar N2 = Math.pow(2, 14)\nvar N3 = Math.pow(2, 21)\nvar N4 = Math.pow(2, 28)\nvar N5 = Math.pow(2, 35)\nvar N6 = Math.pow(2, 42)\nvar N7 = Math.pow(2, 49)\nvar N8 = Math.pow(2, 56)\nvar N9 = Math.pow(2, 63)\n\nmodule.exports = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n}\n", "module.exports = {\n encode: require('./encode.js')\n , decode: require('./decode.js')\n , encodingLength: require('./length.js')\n}\n", "var encode_1 = encode;\n\nvar MSB = 0x80\n , REST = 0x7F\n , MSBALL = ~REST\n , INT = Math.pow(2, 31);\n\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\n\n while(num >= INT) {\n out[offset++] = (num & 0xFF) | MSB;\n num /= 128;\n }\n while(num & MSBALL) {\n out[offset++] = (num & 0xFF) | MSB;\n num >>>= 7;\n }\n out[offset] = num | 0;\n \n encode.bytes = offset - oldOffset + 1;\n \n return out\n}\n\nvar decode = read;\n\nvar MSB$1 = 0x80\n , REST$1 = 0x7F;\n\nfunction read(buf, offset) {\n var res = 0\n , offset = offset || 0\n , shift = 0\n , counter = offset\n , b\n , l = buf.length;\n\n do {\n if (counter >= l) {\n read.bytes = 0;\n throw new RangeError('Could not decode varint')\n }\n b = buf[counter++];\n res += shift < 28\n ? (b & REST$1) << shift\n : (b & REST$1) * Math.pow(2, shift);\n shift += 7;\n } while (b >= MSB$1)\n\n read.bytes = counter - offset;\n\n return res\n}\n\nvar N1 = Math.pow(2, 7);\nvar N2 = Math.pow(2, 14);\nvar N3 = Math.pow(2, 21);\nvar N4 = Math.pow(2, 28);\nvar N5 = Math.pow(2, 35);\nvar N6 = Math.pow(2, 42);\nvar N7 = Math.pow(2, 49);\nvar N8 = Math.pow(2, 56);\nvar N9 = Math.pow(2, 63);\n\nvar length = function (value) {\n return (\n value < N1 ? 1\n : value < N2 ? 2\n : value < N3 ? 3\n : value < N4 ? 4\n : value < N5 ? 5\n : value < N6 ? 6\n : value < N7 ? 7\n : value < N8 ? 8\n : value < N9 ? 9\n : 10\n )\n};\n\nvar varint = {\n encode: encode_1\n , decode: decode\n , encodingLength: length\n};\n\nvar _brrp_varint = varint;\n\nexport default _brrp_varint;\n", "import varint from '../vendor/varint.js'\n\n/**\n * @param {Uint8Array} data\n * @param {number} [offset=0]\n * @returns {[number, number]}\n */\nexport const decode = (data, offset = 0) => {\n const code = varint.decode(data, offset)\n return [code, varint.decode.bytes]\n}\n\n/**\n * @param {number} int\n * @param {Uint8Array} target\n * @param {number} [offset=0]\n */\nexport const encodeTo = (int, target, offset = 0) => {\n varint.encode(int, target, offset)\n return target\n}\n\n/**\n * @param {number} int\n * @returns {number}\n */\nexport const encodingLength = (int) => {\n return varint.encodingLength(int)\n}\n", "const empty = new Uint8Array(0)\n\n/**\n * @param {Uint8Array} d\n */\nconst toHex = d => d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '')\n\n/**\n * @param {string} hex\n */\nconst fromHex = hex => {\n const hexes = hex.match(/../g)\n return hexes ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty\n}\n\n/**\n * @param {Uint8Array} aa\n * @param {Uint8Array} bb\n */\nconst equals = (aa, bb) => {\n if (aa === bb) return true\n if (aa.byteLength !== bb.byteLength) {\n return false\n }\n\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @param {ArrayBufferView|ArrayBuffer|Uint8Array} o\n * @returns {Uint8Array}\n */\nconst coerce = o => {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array') return o\n if (o instanceof ArrayBuffer) return new Uint8Array(o)\n if (ArrayBuffer.isView(o)) {\n return new Uint8Array(o.buffer, o.byteOffset, o.byteLength)\n }\n throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {any} o\n * @returns {o is ArrayBuffer|ArrayBufferView}\n */\nconst isBinary = o =>\n o instanceof ArrayBuffer || ArrayBuffer.isView(o)\n\n/**\n * @param {string} str\n * @returns {Uint8Array}\n */\nconst fromString = str => (new TextEncoder()).encode(str)\n\n/**\n * @param {Uint8Array} b\n * @returns {string}\n */\nconst toString = b => (new TextDecoder()).decode(b)\n\nexport { equals, coerce, isBinary, fromHex, toHex, fromString, toString, empty }\n", "import { coerce, equals as equalBytes } from '../bytes.js'\nimport * as varint from '../varint.js'\n\n/**\n * Creates a multihash digest.\n *\n * @template {number} Code\n * @param {Code} code\n * @param {Uint8Array} digest\n */\nexport const create = (code, digest) => {\n const size = digest.byteLength\n const sizeOffset = varint.encodingLength(code)\n const digestOffset = sizeOffset + varint.encodingLength(size)\n\n const bytes = new Uint8Array(digestOffset + size)\n varint.encodeTo(code, bytes, 0)\n varint.encodeTo(size, bytes, sizeOffset)\n bytes.set(digest, digestOffset)\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * Turns bytes representation of multihash digest into an instance.\n *\n * @param {Uint8Array} multihash\n * @returns {MultihashDigest}\n */\nexport const decode = (multihash) => {\n const bytes = coerce(multihash)\n const [code, sizeOffset] = varint.decode(bytes)\n const [size, digestOffset] = varint.decode(bytes.subarray(sizeOffset))\n const digest = bytes.subarray(sizeOffset + digestOffset)\n\n if (digest.byteLength !== size) {\n throw new Error('Incorrect length')\n }\n\n return new Digest(code, size, digest, bytes)\n}\n\n/**\n * @param {MultihashDigest} a\n * @param {unknown} b\n * @returns {b is MultihashDigest}\n */\nexport const equals = (a, b) => {\n if (a === b) {\n return true\n } else {\n const data = /** @type {{code?:unknown, size?:unknown, bytes?:unknown}} */(b)\n\n return (\n a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes)\n )\n }\n}\n\n/**\n * @typedef {import('./interface.js').MultihashDigest} MultihashDigest\n */\n\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n *\n * @template {number} Code\n * @template {number} Size\n * @class\n * @implements {MultihashDigest}\n */\nexport class Digest {\n /**\n * Creates a multihash digest.\n *\n * @param {Code} code\n * @param {Size} size\n * @param {Uint8Array} digest\n * @param {Uint8Array} bytes\n */\n constructor (code, size, digest, bytes) {\n this.code = code\n this.size = size\n this.digest = digest\n this.bytes = bytes\n }\n}\n", "// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET, name) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256);\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255;\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i);\n var xc = x.charCodeAt(0);\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i;\n }\n var BASE = ALPHABET.length;\n var LEADER = ALPHABET.charAt(0);\n var FACTOR = Math.log(BASE) / Math.log(256); // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE); // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) ; else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0;\n var length = 0;\n var pbegin = 0;\n var pend = source.length;\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++;\n zeroes++;\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0;\n var b58 = new Uint8Array(size);\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin];\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0;\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0;\n b58[it1] = (carry % BASE) >>> 0;\n carry = (carry / BASE) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n pbegin++;\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length;\n while (it2 !== size && b58[it2] === 0) {\n it2++;\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes);\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]); }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') { return }\n // Skip and count leading '1's.\n var zeroes = 0;\n var length = 0;\n while (source[psz] === LEADER) {\n zeroes++;\n psz++;\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0; // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size);\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)];\n // Invalid character\n if (carry === 255) { return }\n var i = 0;\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0;\n b256[it3] = (carry % 256) >>> 0;\n carry = (carry / 256) >>> 0;\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') { return }\n // Skip leading zeroes in b256.\n var it4 = size - length;\n while (it4 !== size && b256[it4] === 0) {\n it4++;\n }\n var vch = new Uint8Array(zeroes + (size - it4));\n var j = zeroes;\n while (it4 !== size) {\n vch[j++] = b256[it4++];\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string);\n if (buffer) { return buffer }\n throw new Error(`Non-${name} character`)\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nvar src = base;\n\nvar _brrp__multiformats_scope_baseX = src;\n\nexport default _brrp__multiformats_scope_baseX;\n", "import basex from '../../vendor/base-x.js'\nimport { coerce } from '../bytes.js'\n// Linter can't see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\n/**\n * Class represents both BaseEncoder and MultibaseEncoder meaning it\n * can be used to encode to multibase or base encode without multibase\n * prefix.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.BaseEncoder}\n */\nclass Encoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n */\n constructor (name, prefix, baseEncode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n }\n\n /**\n * @param {Uint8Array} bytes\n * @returns {API.Multibase<Prefix>}\n */\n encode (bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`\n } else {\n throw Error('Unknown type, must be binary type')\n }\n }\n}\n\n/**\n * @template {string} Prefix\n */\n/**\n * Class represents both BaseDecoder and MultibaseDecoder so it could be used\n * to decode multibases (with matching prefix) or just base decode strings\n * with corresponding base encoding.\n *\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.UnibaseDecoder<Prefix>}\n * @implements {API.BaseDecoder}\n */\nclass Decoder {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseDecode) {\n this.name = name\n this.prefix = prefix\n /* c8 ignore next 3 */\n if (prefix.codePointAt(0) === undefined) {\n throw new Error('Invalid prefix character')\n }\n /** @private */\n this.prefixCodePoint = /** @type {number} */ (prefix.codePointAt(0))\n this.baseDecode = baseDecode\n }\n\n /**\n * @param {string} text\n */\n decode (text) {\n if (typeof text === 'string') {\n if (text.codePointAt(0) !== this.prefixCodePoint) {\n throw Error(`Unable to decode multibase string ${JSON.stringify(text)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`)\n }\n return this.baseDecode(text.slice(this.prefix.length))\n } else {\n throw Error('Can only multibase decode strings')\n }\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n */\n or (decoder) {\n return or(this, decoder)\n }\n}\n\n/**\n * @template {string} Prefix\n * @typedef {Record<Prefix, API.UnibaseDecoder<Prefix>>} Decoders\n */\n\n/**\n * @template {string} Prefix\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.CombobaseDecoder<Prefix>}\n */\nclass ComposedDecoder {\n /**\n * @param {Decoders<Prefix>} decoders\n */\n constructor (decoders) {\n this.decoders = decoders\n }\n\n /**\n * @template {string} OtherPrefix\n * @param {API.UnibaseDecoder<OtherPrefix>|ComposedDecoder<OtherPrefix>} decoder\n * @returns {ComposedDecoder<Prefix|OtherPrefix>}\n */\n or (decoder) {\n return or(this, decoder)\n }\n\n /**\n * @param {string} input\n * @returns {Uint8Array}\n */\n decode (input) {\n const prefix = /** @type {Prefix} */ (input[0])\n const decoder = this.decoders[prefix]\n if (decoder) {\n return decoder.decode(input)\n } else {\n throw RangeError(`Unable to decode multibase string ${JSON.stringify(input)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)\n }\n }\n}\n\n/**\n * @template {string} L\n * @template {string} R\n * @param {API.UnibaseDecoder<L>|API.CombobaseDecoder<L>} left\n * @param {API.UnibaseDecoder<R>|API.CombobaseDecoder<R>} right\n * @returns {ComposedDecoder<L|R>}\n */\nexport const or = (left, right) => new ComposedDecoder(/** @type {Decoders<L|R>} */({\n ...(left.decoders || { [/** @type API.UnibaseDecoder<L> */(left).prefix]: left }),\n ...(right.decoders || { [/** @type API.UnibaseDecoder<R> */(right).prefix]: right })\n}))\n\n/**\n * @class\n * @template {string} Base\n * @template {string} Prefix\n * @implements {API.MultibaseCodec<Prefix>}\n * @implements {API.MultibaseEncoder<Prefix>}\n * @implements {API.MultibaseDecoder<Prefix>}\n * @implements {API.BaseCodec}\n * @implements {API.BaseEncoder}\n * @implements {API.BaseDecoder}\n */\nexport class Codec {\n /**\n * @param {Base} name\n * @param {Prefix} prefix\n * @param {(bytes:Uint8Array) => string} baseEncode\n * @param {(text:string) => Uint8Array} baseDecode\n */\n constructor (name, prefix, baseEncode, baseDecode) {\n this.name = name\n this.prefix = prefix\n this.baseEncode = baseEncode\n this.baseDecode = baseDecode\n this.encoder = new Encoder(name, prefix, baseEncode)\n this.decoder = new Decoder(name, prefix, baseDecode)\n }\n\n /**\n * @param {Uint8Array} input\n */\n encode (input) {\n return this.encoder.encode(input)\n }\n\n /**\n * @param {string} input\n */\n decode (input) {\n return this.decoder.decode(input)\n }\n}\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {(bytes:Uint8Array) => string} options.encode\n * @param {(input:string) => Uint8Array} options.decode\n * @returns {Codec<Base, Prefix>}\n */\nexport const from = ({ name, prefix, encode, decode }) =>\n new Codec(name, prefix, encode, decode)\n\n/**\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @returns {Codec<Base, Prefix>}\n */\nexport const baseX = ({ prefix, name, alphabet }) => {\n const { encode, decode } = basex(alphabet, name)\n return from({\n prefix,\n name,\n encode,\n /**\n * @param {string} text\n */\n decode: text => coerce(decode(text))\n })\n}\n\n/**\n * @param {string} string\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @param {string} name\n * @returns {Uint8Array}\n */\nconst decode = (string, alphabet, bitsPerChar, name) => {\n // Build the character lookup table:\n /** @type {Record<string, number>} */\n const codes = {}\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i\n }\n\n // Count the padding bytes:\n let end = string.length\n while (string[end - 1] === '=') {\n --end\n }\n\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0)\n\n // Parse the data:\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n let written = 0 // Next byte to write\n for (let i = 0; i < end; ++i) {\n // Read one character from the string:\n const value = codes[string[i]]\n if (value === undefined) {\n throw new SyntaxError(`Non-${name} character`)\n }\n\n // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value\n bits += bitsPerChar\n\n // Write out some bits if the buffer has a byte's worth:\n if (bits >= 8) {\n bits -= 8\n out[written++] = 0xff & (buffer >> bits)\n }\n }\n\n // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || 0xff & (buffer << (8 - bits))) {\n throw new SyntaxError('Unexpected end of data')\n }\n\n return out\n}\n\n/**\n * @param {Uint8Array} data\n * @param {string} alphabet\n * @param {number} bitsPerChar\n * @returns {string}\n */\nconst encode = (data, alphabet, bitsPerChar) => {\n const pad = alphabet[alphabet.length - 1] === '='\n const mask = (1 << bitsPerChar) - 1\n let out = ''\n\n let bits = 0 // Number of bits currently in the buffer\n let buffer = 0 // Bits waiting to be written out, MSB first\n for (let i = 0; i < data.length; ++i) {\n // Slurp data into the buffer:\n buffer = (buffer << 8) | data[i]\n bits += 8\n\n // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar\n out += alphabet[mask & (buffer >> bits)]\n }\n }\n\n // Partial character:\n if (bits) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))]\n }\n\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while ((out.length * bitsPerChar) & 7) {\n out += '='\n }\n }\n\n return out\n}\n\n/**\n * RFC4648 Factory\n *\n * @template {string} Base\n * @template {string} Prefix\n * @param {object} options\n * @param {Base} options.name\n * @param {Prefix} options.prefix\n * @param {string} options.alphabet\n * @param {number} options.bitsPerChar\n */\nexport const rfc4648 = ({ name, prefix, bitsPerChar, alphabet }) => {\n return from({\n prefix,\n name,\n encode (input) {\n return encode(input, alphabet, bitsPerChar)\n },\n decode (input) {\n return decode(input, alphabet, bitsPerChar, name)\n }\n })\n}\n", "import { baseX } from './base.js'\n\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n})\n\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n})\n", "import { rfc4648 } from './base.js'\n\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n})\n\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n})\n\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n})\n\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n})\n\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n})\n\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n})\n\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n})\n\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n})\n\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n})\n", "import * as varint from './varint.js'\nimport * as Digest from './hashes/digest.js'\nimport { base58btc } from './bases/base58.js'\nimport { base32 } from './bases/base32.js'\nimport { coerce } from './bytes.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from \"./link/interface.js\"\n\n// This way TS will also expose all the types from module\nexport * from './link/interface.js'\n\n/**\n * @template {API.Link<unknown, number, number, API.Version>} T\n * @template {string} Prefix\n * @param {T} link\n * @param {API.MultibaseEncoder<Prefix>} [base]\n * @returns {API.ToString<T, Prefix>}\n */\nexport const format = (link, base) => {\n const { bytes, version } = link\n switch (version) {\n case 0:\n return toStringV0(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<\"z\">} */ (base) || base58btc.encoder\n )\n default:\n return toStringV1(\n bytes,\n baseCache(link),\n /** @type {API.MultibaseEncoder<Prefix>} */ (base || base32.encoder)\n )\n }\n}\n\n/**\n * @template {API.UnknownLink} Link\n * @param {Link} link\n * @returns {API.LinkJSON<Link>}\n */\nexport const toJSON = (link) => ({\n '/': format(link)\n})\n\n/**\n * @template {API.UnknownLink} Link\n * @param {API.LinkJSON<Link>} json\n */\nexport const fromJSON = (json) =>\n CID.parse(json['/'])\n\n/** @type {WeakMap<API.UnknownLink, Map<string, string>>} */\nconst cache = new WeakMap()\n\n/**\n * @param {API.UnknownLink} cid\n * @returns {Map<string, string>}\n */\nconst baseCache = cid => {\n const baseCache = cache.get(cid)\n if (baseCache == null) {\n const baseCache = new Map()\n cache.set(cid, baseCache)\n return baseCache\n }\n return baseCache\n}\n\n/**\n * @template {unknown} [Data=unknown]\n * @template {number} [Format=number]\n * @template {number} [Alg=number]\n * @template {API.Version} [Version=API.Version]\n * @implements {API.Link<Data, Format, Alg, Version>}\n */\n\nexport class CID {\n /**\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest<Alg>} multihash - (Multi)hash of the of the content.\n * @param {Uint8Array} bytes\n *\n */\n constructor (version, code, multihash, bytes) {\n /** @readonly */\n this.code = code\n /** @readonly */\n this.version = version\n /** @readonly */\n this.multihash = multihash\n /** @readonly */\n this.bytes = bytes\n\n // flag to serializers that this is a CID and\n // should be treated specially\n /** @readonly */\n this['/'] = bytes\n }\n\n /**\n * Signalling `cid.asCID === cid` has been replaced with `cid['/'] === cid.bytes`\n * please either use `CID.asCID(cid)` or switch to new signalling mechanism\n *\n * @deprecated\n */\n get asCID () {\n return this\n }\n\n // ArrayBufferView\n get byteOffset () {\n return this.bytes.byteOffset\n }\n\n // ArrayBufferView\n get byteLength () {\n return this.bytes.byteLength\n }\n\n /**\n * @returns {CID<Data, API.DAG_PB, API.SHA_256, 0>}\n */\n toV0 () {\n switch (this.version) {\n case 0: {\n return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (this)\n }\n case 1: {\n const { code, multihash } = this\n\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n // sha2-256\n if (multihash.code !== SHA_256_CODE) {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n return /** @type {CID<Data, API.DAG_PB, API.SHA_256, 0>} */ (\n CID.createV0(\n /** @type {API.MultihashDigest<API.SHA_256>} */ (multihash)\n )\n )\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 0. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @returns {CID<Data, Format, Alg, 1>}\n */\n toV1 () {\n switch (this.version) {\n case 0: {\n const { code, digest } = this.multihash\n const multihash = Digest.create(code, digest)\n return /** @type {CID<Data, Format, Alg, 1>} */ (\n CID.createV1(this.code, multihash)\n )\n }\n case 1: {\n return /** @type {CID<Data, Format, Alg, 1>} */ (this)\n }\n default: {\n throw Error(\n `Can not convert CID version ${this.version} to version 1. This is a bug please report`\n )\n }\n }\n }\n\n /**\n * @param {unknown} other\n * @returns {other is CID<Data, Format, Alg, Version>}\n */\n equals (other) {\n return CID.equals(this, other)\n }\n\n /**\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {API.Link<Data, Format, Alg, Version>} self\n * @param {unknown} other\n * @returns {other is CID}\n */\n static equals (self, other) {\n const unknown =\n /** @type {{code?:unknown, version?:unknown, multihash?:unknown}} */ (\n other\n )\n return (\n unknown &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash)\n )\n }\n\n /**\n * @param {API.MultibaseEncoder<string>} [base]\n * @returns {string}\n */\n toString (base) {\n return format(this, base)\n }\n\n toJSON () {\n return { '/': format(this) }\n }\n\n link () {\n return this\n }\n\n get [Symbol.toStringTag] () {\n return 'CID'\n }\n\n // Legacy\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return `CID(${this.toString()})`\n }\n\n /**\n * Takes any input `value` and returns a `CID` instance if it was\n * a `CID` otherwise returns `null`. If `value` is instanceof `CID`\n * it will return value back. If `value` is not instance of this CID\n * class, but is compatible CID it will return new instance of this\n * `CID` class. Otherwise returns null.\n *\n * This allows two different incompatible versions of CID library to\n * co-exist and interop as long as binary interface is compatible.\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @template {unknown} U\n * @param {API.Link<Data, Format, Alg, Version>|U} input\n * @returns {CID<Data, Format, Alg, Version>|null}\n */\n static asCID (input) {\n if (input == null) {\n return null\n }\n\n const value = /** @type {any} */ (input)\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value\n } else if ((value['/'] != null && value['/'] === value.bytes) || value.asCID === value) {\n // If value isn't instance of this CID class but `this.asCID === this` or\n // `value['/'] === value.bytes` is true it is CID instance coming from a\n // different implementation (diff version or duplicate). In that case we\n // rebase it to this `CID` implementation so caller is guaranteed to get\n // instance with expected API.\n const { version, code, multihash, bytes } = value\n return new CID(\n version,\n code,\n /** @type {API.MultihashDigest<Alg>} */ (multihash),\n bytes || encodeCID(version, code, multihash.bytes)\n )\n } else if (value[cidSymbol] === true) {\n // If value is a CID from older implementation that used to be tagged via\n // symbol we still rebase it to the this `CID` implementation by\n // delegating that to a constructor.\n const { version, multihash, code } = value\n const digest =\n /** @type {API.MultihashDigest<Alg>} */\n (Digest.decode(multihash))\n return CID.create(version, code, digest)\n } else {\n // Otherwise value is not a CID (or an incompatible version of it) in\n // which case we return `null`.\n return null\n }\n }\n\n /**\n *\n * @template {unknown} Data\n * @template {number} Format\n * @template {number} Alg\n * @template {API.Version} Version\n * @param {Version} version - Version of the CID\n * @param {Format} code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param {API.MultihashDigest<Alg>} digest - (Multi)hash of the of the content.\n * @returns {CID<Data, Format, Alg, Version>}\n */\n static create (version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported')\n }\n\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest')\n }\n\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(\n `Version 0 CID must use dag-pb (code: ${DAG_PB_CODE}) block encoding`\n )\n } else {\n return new CID(version, code, digest, digest.bytes)\n }\n }\n case 1: {\n const bytes = encodeCID(version, code, digest.bytes)\n return new CID(version, code, digest, bytes)\n }\n default: {\n throw new Error('Invalid version')\n }\n }\n }\n\n /**\n * Simplified version of `create` for CIDv0.\n *\n * @template {unknown} [T=unknown]\n * @param {API.MultihashDigest<typeof SHA_256_CODE>} digest - Multihash.\n * @returns {CID<T, typeof DAG_PB_CODE, typeof SHA_256_CODE, 0>}\n */\n static createV0 (digest) {\n return CID.create(0, DAG_PB_CODE, digest)\n }\n\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @param {Code} code - Content encoding format code.\n * @param {API.MultihashDigest<Alg>} digest - Miltihash of the content.\n * @returns {CID<Data, Code, Alg, 1>}\n */\n static createV1 (code, digest) {\n return CID.create(1, code, digest)\n }\n\n /**\n * Decoded a CID from its binary representation. The byte array must contain\n * only the CID with no additional bytes.\n *\n * An error will be thrown if the bytes provided do not contain a valid\n * binary representation of a CID.\n *\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ByteView<API.Link<Data, Code, Alg, Ver>>} bytes\n * @returns {CID<Data, Code, Alg, Ver>}\n */\n static decode (bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes)\n if (remainder.length) {\n throw new Error('Incorrect length')\n }\n return cid\n }\n\n /**\n * Decoded a CID from its binary representation at the beginning of a byte\n * array.\n *\n * Returns an array with the first element containing the CID and the second\n * element containing the remainder of the original byte array. The remainder\n * will be a zero-length byte array if the provided bytes only contained a\n * binary CID representation.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView<API.Link<T, C, A, V>>} bytes\n * @returns {[CID<T, C, A, V>, Uint8Array]}\n */\n static decodeFirst (bytes) {\n const specs = CID.inspectBytes(bytes)\n const prefixSize = specs.size - specs.multihashSize\n const multihashBytes = coerce(\n bytes.subarray(prefixSize, prefixSize + specs.multihashSize)\n )\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length')\n }\n const digestBytes = multihashBytes.subarray(\n specs.multihashSize - specs.digestSize\n )\n const digest = new Digest.Digest(\n specs.multihashCode,\n specs.digestSize,\n digestBytes,\n multihashBytes\n )\n const cid =\n specs.version === 0\n ? CID.createV0(/** @type {API.MultihashDigest<API.SHA_256>} */ (digest))\n : CID.createV1(specs.codec, digest)\n return [/** @type {CID<T, C, A, V>} */(cid), bytes.subarray(specs.size)]\n }\n\n /**\n * Inspect the initial bytes of a CID to determine its properties.\n *\n * Involves decoding up to 4 varints. Typically this will require only 4 to 6\n * bytes but for larger multicodec code values and larger multihash digest\n * lengths these varints can be quite large. It is recommended that at least\n * 10 bytes be made available in the `initialBytes` argument for a complete\n * inspection.\n *\n * @template {unknown} T\n * @template {number} C\n * @template {number} A\n * @template {API.Version} V\n * @param {API.ByteView<API.Link<T, C, A, V>>} initialBytes\n * @returns {{ version:V, codec:C, multihashCode:A, digestSize:number, multihashSize:number, size:number }}\n */\n static inspectBytes (initialBytes) {\n let offset = 0\n const next = () => {\n const [i, length] = varint.decode(initialBytes.subarray(offset))\n offset += length\n return i\n }\n\n let version = /** @type {V} */ (next())\n let codec = /** @type {C} */ (DAG_PB_CODE)\n if (/** @type {number} */(version) === 18) {\n // CIDv0\n version = /** @type {V} */ (0)\n offset = 0\n } else {\n codec = /** @type {C} */ (next())\n }\n\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`)\n }\n\n const prefixSize = offset\n const multihashCode = /** @type {A} */ (next()) // multihash code\n const digestSize = next() // multihash length\n const size = offset + digestSize\n const multihashSize = size - prefixSize\n\n return { version, codec, multihashCode, digestSize, multihashSize, size }\n }\n\n /**\n * Takes cid in a string representation and creates an instance. If `base`\n * decoder is not provided will use a default from the configuration. It will\n * throw an error if encoding of the CID is not compatible with supplied (or\n * a default decoder).\n *\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {CID<Data, Code, Alg, Ver>}\n */\n static parse (source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base)\n\n const cid = CID.decode(bytes)\n\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix')\n }\n\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source)\n\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @template {unknown} Data\n * @template {number} Code\n * @template {number} Alg\n * @template {API.Version} Ver\n * @param {API.ToString<API.Link<Data, Code, Alg, Ver>, Prefix>} source\n * @param {API.MultibaseDecoder<Prefix>} [base]\n * @returns {[Prefix, API.ByteView<API.Link<Data, Code, Alg, Ver>>]}\n */\nconst parseCIDtoBytes = (source, base) => {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base || base58btc\n return [\n /** @type {Prefix} */ (base58btc.prefix),\n decoder.decode(`${base58btc.prefix}${source}`)\n ]\n }\n case base58btc.prefix: {\n const decoder = base || base58btc\n return [/** @type {Prefix} */(base58btc.prefix), decoder.decode(source)]\n }\n case base32.prefix: {\n const decoder = base || base32\n return [/** @type {Prefix} */(base32.prefix), decoder.decode(source)]\n }\n default: {\n if (base == null) {\n throw Error(\n 'To parse non base32 or base58btc encoded CID multibase decoder must be provided'\n )\n }\n return [/** @type {Prefix} */(source[0]), base.decode(source)]\n }\n }\n}\n\n/**\n *\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<'z'>} base\n */\nconst toStringV0 = (bytes, cache, base) => {\n const { prefix } = base\n if (prefix !== base58btc.prefix) {\n throw Error(`Cannot string encode V0 in ${base.name} encoding`)\n }\n\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes).slice(1)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\n/**\n * @template {string} Prefix\n * @param {Uint8Array} bytes\n * @param {Map<string, string>} cache\n * @param {API.MultibaseEncoder<Prefix>} base\n */\nconst toStringV1 = (bytes, cache, base) => {\n const { prefix } = base\n const cid = cache.get(prefix)\n if (cid == null) {\n const cid = base.encode(bytes)\n cache.set(prefix, cid)\n return cid\n } else {\n return cid\n }\n}\n\nconst DAG_PB_CODE = 0x70\nconst SHA_256_CODE = 0x12\n\n/**\n * @param {API.Version} version\n * @param {number} code\n * @param {Uint8Array} multihash\n * @returns {Uint8Array}\n */\nconst encodeCID = (version, code, multihash) => {\n const codeOffset = varint.encodingLength(version)\n const hashOffset = codeOffset + varint.encodingLength(code)\n const bytes = new Uint8Array(hashOffset + multihash.byteLength)\n varint.encodeTo(version, bytes, 0)\n varint.encodeTo(code, bytes, codeOffset)\n bytes.set(multihash, hashOffset)\n return bytes\n}\n\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID')\n", "import * as Digest from './digest.js'\n\n/**\n * @template {string} Name\n * @template {number} Code\n * @param {object} options\n * @param {Name} options.name\n * @param {Code} options.code\n * @param {(input: Uint8Array) => Await<Uint8Array>} options.encode\n */\nexport const from = ({ name, code, encode }) => new Hasher(name, code, encode)\n\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n *\n * @template {string} Name\n * @template {number} Code\n * @class\n * @implements {MultihashHasher<Code>}\n */\nexport class Hasher {\n /**\n *\n * @param {Name} name\n * @param {Code} code\n * @param {(input: Uint8Array) => Await<Uint8Array>} encode\n */\n constructor (name, code, encode) {\n this.name = name\n this.code = code\n this.encode = encode\n }\n\n /**\n * @param {Uint8Array} input\n * @returns {Await<Digest.Digest<Code, number>>}\n */\n digest (input) {\n if (input instanceof Uint8Array) {\n const result = this.encode(input)\n return result instanceof Uint8Array\n ? Digest.create(this.code, result)\n /* c8 ignore next 1 */\n : result.then(digest => Digest.create(this.code, digest))\n } else {\n throw Error('Unknown type, must be binary type')\n /* c8 ignore next 1 */\n }\n }\n}\n\n/**\n * @template {number} Alg\n * @typedef {import('./interface.js').MultihashHasher} MultihashHasher\n */\n\n/**\n * @template T\n * @typedef {Promise<T>|T} Await\n */\n", "import { bytes as binary, CID } from './index.js'\n// Linter can see that API is used in types.\n// eslint-disable-next-line\nimport * as API from './interface.js'\n\nfunction readonly ({ enumerable = true, configurable = false } = {}) {\n return { enumerable, configurable, writable: false }\n}\n\n/**\n * @param {[string|number, string]} path\n * @param {any} value\n * @returns {Iterable<[string, CID]>}\n */\nfunction * linksWithin (path, value) {\n if (value != null && typeof value === 'object') {\n if (Array.isArray(value)) {\n for (const [index, element] of value.entries()) {\n const elementPath = [...path, index]\n const cid = CID.asCID(element)\n if (cid) {\n yield [elementPath.join('/'), cid]\n } else if (typeof element === 'object') {\n yield * links(element, elementPath)\n }\n }\n } else {\n const cid = CID.asCID(value)\n if (cid) {\n yield [path.join('/'), cid]\n } else {\n yield * links(value, path)\n }\n }\n }\n}\n\n/**\n * @template T\n * @param {T} source\n * @param {Array<string|number>} base\n * @returns {Iterable<[string, CID]>}\n */\nfunction * links (source, base) {\n if (source == null || source instanceof Uint8Array) {\n return\n }\n const cid = CID.asCID(source)\n if (cid) {\n yield [base.join('/'), cid]\n }\n for (const [key, value] of Object.entries(source)) {\n const path = /** @type {[string|number, string]} */ ([...base, key])\n yield * linksWithin(path, value)\n }\n}\n\n/**\n * @param {[string|number, string]} path\n * @param {any} value\n * @returns {Iterable<string>}\n */\nfunction * treeWithin (path, value) {\n if (Array.isArray(value)) {\n for (const [index, element] of value.entries()) {\n const elementPath = [...path, index]\n yield elementPath.join('/')\n if (typeof element === 'object' && !CID.asCID(element)) {\n yield * tree(element, elementPath)\n }\n }\n } else {\n yield * tree(value, path)\n }\n}\n\n/**\n * @template T\n * @param {T} source\n * @param {Array<string|number>} base\n * @returns {Iterable<string>}\n */\nfunction * tree (source, base) {\n if (source == null || typeof source !== 'object') {\n return\n }\n for (const [key, value] of Object.entries(source)) {\n const path = /** @type {[string|number, string]} */ ([...base, key])\n yield path.join('/')\n if (value != null && !(value instanceof Uint8Array) && typeof value === 'object' && !CID.asCID(value)) {\n yield * treeWithin(path, value)\n }\n }\n}\n\n/**\n *\n * @template T\n * @param {T} source\n * @param {string[]} path\n * @returns {API.BlockCursorView<unknown>}\n */\nfunction get (source, path) {\n let node = /** @type {Record<string, any>} */(source)\n for (const [index, key] of path.entries()) {\n node = node[key]\n if (node == null) {\n throw new Error(`Object has no property at ${path.slice(0, index + 1).map(part => `[${JSON.stringify(part)}]`).join('')}`)\n }\n const cid = CID.asCID(node)\n if (cid) {\n return { value: cid, remaining: path.slice(index + 1).join('/') }\n }\n }\n return { value: node }\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} C - multicodec code corresponding to codec used to encode the block\n * @template {number} A - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @implements {API.BlockView<T, C, A, V>}\n */\nclass Block {\n /**\n * @param {object} options\n * @param {CID<T, C, A, V>} options.cid\n * @param {API.ByteView<T>} options.bytes\n * @param {T} options.value\n */\n constructor ({ cid, bytes, value }) {\n if (!cid || !bytes || typeof value === 'undefined') { throw new Error('Missing required argument') }\n\n this.cid = cid\n this.bytes = bytes\n this.value = value\n this.asBlock = this\n\n // Mark all the properties immutable\n Object.defineProperties(this, {\n cid: readonly(),\n bytes: readonly(),\n value: readonly(),\n asBlock: readonly()\n })\n }\n\n links () {\n return links(this.value, [])\n }\n\n tree () {\n return tree(this.value, [])\n }\n\n /**\n *\n * @param {string} [path]\n * @returns {API.BlockCursorView<unknown>}\n */\n get (path = '/') {\n return get(this.value, path.split('/').filter(Boolean))\n }\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @param {object} options\n * @param {T} options.value\n * @param {API.BlockEncoder<Code, T>} options.codec\n * @param {API.MultihashHasher<Alg>} options.hasher\n * @returns {Promise<API.BlockView<T, Code, Alg>>}\n */\nasync function encode ({ value, codec, hasher }) {\n if (typeof value === 'undefined') throw new Error('Missing required argument \"value\"')\n if (!codec || !hasher) throw new Error('Missing required argument: codec or hasher')\n\n const bytes = codec.encode(value)\n const hash = await hasher.digest(bytes)\n /** @type {CID<T, Code, Alg, 1>} */\n const cid = CID.create(\n 1,\n codec.code,\n hash\n )\n\n return new Block({ value, bytes, cid })\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @param {object} options\n * @param {API.ByteView<T>} options.bytes\n * @param {API.BlockDecoder<Code, T>} options.codec\n * @param {API.MultihashHasher<Alg>} options.hasher\n * @returns {Promise<API.BlockView<T, Code, Alg>>}\n */\nasync function decode ({ bytes, codec, hasher }) {\n if (!bytes) throw new Error('Missing required argument \"bytes\"')\n if (!codec || !hasher) throw new Error('Missing required argument: codec or hasher')\n\n const value = codec.decode(bytes)\n const hash = await hasher.digest(bytes)\n /** @type {CID<T, Code, Alg, 1>} */\n const cid = CID.create(1, codec.code, hash)\n\n return new Block({ value, bytes, cid })\n}\n\n/**\n * @typedef {object} RequiredCreateOptions\n * @property {CID} options.cid\n */\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @param {{ cid: API.Link<T, Code, Alg, V>, value:T, codec?: API.BlockDecoder<Code, T>, bytes: API.ByteView<T> }|{cid:API.Link<T, Code, Alg, V>, bytes:API.ByteView<T>, value?:void, codec:API.BlockDecoder<Code, T>}} options\n * @returns {API.BlockView<T, Code, Alg, V>}\n */\nfunction createUnsafe ({ bytes, cid, value: maybeValue, codec }) {\n const value = maybeValue !== undefined\n ? maybeValue\n : (codec && codec.decode(bytes))\n\n if (value === undefined) throw new Error('Missing required argument, must either provide \"value\" or \"codec\"')\n\n return new Block({\n // eslint-disable-next-line object-shorthand\n cid: /** @type {CID<T, Code, Alg, V>} */ (cid),\n bytes,\n value\n })\n}\n\n/**\n * @template {unknown} T - Logical type of the data encoded in the block\n * @template {number} Code - multicodec code corresponding to codec used to encode the block\n * @template {number} Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template {API.Version} V - CID version\n * @param {object} options\n * @param {API.Link<T, Code, Alg, V>} options.cid\n * @param {API.ByteView<T>} options.bytes\n * @param {API.BlockDecoder<Code, T>} options.codec\n * @param {API.MultihashHasher<Alg>} options.hasher\n * @returns {Promise<API.BlockView<T, Code, Alg, V>>}\n */\nasync function create ({ bytes, cid, hasher, codec }) {\n if (!bytes) throw new Error('Missing required argument \"bytes\"')\n if (!hasher) throw new Error('Missing required argument \"hasher\"')\n const value = codec.decode(bytes)\n const hash = await hasher.digest(bytes)\n if (!binary.equals(cid.multihash.bytes, hash.bytes)) {\n throw new Error('CID hash does not match bytes')\n }\n\n return createUnsafe({\n bytes,\n cid,\n value,\n codec\n })\n}\n\nexport { encode, decode, create, createUnsafe, Block }\n", "// @ts-check\n\nimport crypto from 'crypto'\nimport { from } from './hasher.js'\nimport { coerce } from '../bytes.js'\n\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: (input) => coerce(crypto.createHash('sha256').update(input).digest())\n})\n\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: input => coerce(crypto.createHash('sha512').update(input).digest())\n})\n", "// @ts-check\n\nimport { coerce } from '../bytes.js'\n\n/**\n * @template T\n * @typedef {import('./interface.js').ByteView<T>} ByteView\n */\n\nexport const name = 'raw'\nexport const code = 0x55\n\n/**\n * @param {Uint8Array} node\n * @returns {ByteView<Uint8Array>}\n */\nexport const encode = (node) => coerce(node)\n\n/**\n * @param {ByteView<Uint8Array>} data\n * @returns {Uint8Array}\n */\nexport const decode = (data) => coerce(data)\n", "import varint from 'varint'\nimport { Token, Type } from 'cborg'\nimport { tokensToLength } from 'cborg/length'\nimport * as CBOR from '@ipld/dag-cbor'\n\n/**\n * @typedef {import('./api').CID} CID\n * @typedef {import('./api').Block} Block\n * @typedef {import('./api').CarBufferWriter} Writer\n * @typedef {import('./api').CarBufferWriterOptions} Options\n * @typedef {import('./coding').CarEncoder} CarEncoder\n */\n\n/**\n * A simple CAR writer that writes to a pre-allocated buffer.\n *\n * @class\n * @name CarBufferWriter\n * @implements {Writer}\n */\nclass CarBufferWriter {\n /**\n * @param {Uint8Array} bytes\n * @param {number} headerSize\n */\n constructor (bytes, headerSize) {\n /** @readonly */\n this.bytes = bytes\n this.byteOffset = headerSize\n\n /**\n * @readonly\n * @type {CID[]}\n */\n this.roots = []\n this.headerSize = headerSize\n }\n\n /**\n * Add a root to this writer, to be used to create a header when the CAR is\n * finalized with {@link CarBufferWriter.close `close()`}\n *\n * @param {CID} root\n * @param {{resize?:boolean}} [options]\n * @returns {CarBufferWriter}\n */\n addRoot (root, options) {\n addRoot(this, root, options)\n return this\n }\n\n /**\n * Write a `Block` (a `{ cid:CID, bytes:Uint8Array }` pair) to the archive.\n * Throws if there is not enough capacity.\n *\n * @param {Block} block - A `{ cid:CID, bytes:Uint8Array }` pair.\n * @returns {CarBufferWriter}\n */\n write (block) {\n addBlock(this, block)\n return this\n }\n\n /**\n * Finalize the CAR and return it as a `Uint8Array`.\n *\n * @param {object} [options]\n * @param {boolean} [options.resize]\n * @returns {Uint8Array}\n */\n close (options) {\n return close(this, options)\n }\n}\n\n/**\n * @param {CarBufferWriter} writer\n * @param {CID} root\n * @param {{resize?:boolean}} [options]\n */\nexport const addRoot = (writer, root, options = {}) => {\n const { resize = false } = options\n const { bytes, headerSize, byteOffset, roots } = writer\n writer.roots.push(root)\n const size = headerLength(writer)\n // If there is not enough space for the new root\n if (size > headerSize) {\n // Check if we root would fit if we were to resize the head.\n if (size - headerSize + byteOffset < bytes.byteLength) {\n // If resize is enabled resize head\n if (resize) {\n resizeHeader(writer, size)\n // otherwise remove head and throw an error suggesting to resize\n } else {\n roots.pop()\n throw new RangeError(`Header of size ${headerSize} has no capacity for new root ${root}.\n However there is a space in the buffer and you could call addRoot(root, { resize: root }) to resize header to make a space for this root.`)\n }\n // If head would not fit even with resize pop new root and throw error\n } else {\n roots.pop()\n throw new RangeError(`Buffer has no capacity for a new root ${root}`)\n }\n }\n}\n\n/**\n * Calculates number of bytes required for storing given block in CAR. Useful in\n * estimating size of an `ArrayBuffer` for the `CarBufferWriter`.\n *\n * @name CarBufferWriter.blockLength(Block)\n * @param {Block} block\n * @returns {number}\n */\nexport const blockLength = ({ cid, bytes }) => {\n const size = cid.bytes.byteLength + bytes.byteLength\n return varint.encodingLength(size) + size\n}\n\n/**\n * @param {CarBufferWriter} writer\n * @param {Block} block\n */\nexport const addBlock = (writer, { cid, bytes }) => {\n const byteLength = cid.bytes.byteLength + bytes.byteLength\n const size = varint.encode(byteLength)\n if (writer.byteOffset + size.length + byteLength > writer.bytes.byteLength) {\n throw new RangeError('Buffer has no capacity for this block')\n } else {\n writeBytes(writer, size)\n writeBytes(writer, cid.bytes)\n writeBytes(writer, bytes)\n }\n}\n\n/**\n * @param {CarBufferWriter} writer\n * @param {object} [options]\n * @param {boolean} [options.resize]\n */\nexport const close = (writer, options = {}) => {\n const { resize = false } = options\n const { roots, bytes, byteOffset, headerSize } = writer\n\n const headerBytes = CBOR.encode({ version: 1, roots })\n const varintBytes = varint.encode(headerBytes.length)\n\n const size = varintBytes.length + headerBytes.byteLength\n const offset = headerSize - size\n\n // If header size estimate was accurate we just write header and return\n // view into buffer.\n if (offset === 0) {\n writeHeader(writer, varintBytes, headerBytes)\n return bytes.subarray(0, byteOffset)\n // If header was overestimated and `{resize: true}` is passed resize header\n } else if (resize) {\n resizeHeader(writer, size)\n writeHeader(writer, varintBytes, headerBytes)\n return bytes.subarray(0, writer.byteOffset)\n } else {\n throw new RangeError(`Header size was overestimated.\nYou can use close({ resize: true }) to resize header`)\n }\n}\n\n/**\n * @param {CarBufferWriter} writer\n * @param {number} byteLength\n */\nexport const resizeHeader = (writer, byteLength) => {\n const { bytes, headerSize } = writer\n // Move data section to a new offset\n bytes.set(bytes.subarray(headerSize, writer.byteOffset), byteLength)\n // Update header size & byteOffset\n writer.byteOffset += byteLength - headerSize\n writer.headerSize = byteLength\n}\n\n/**\n * @param {CarBufferWriter} writer\n * @param {number[]|Uint8Array} bytes\n */\n\nconst writeBytes = (writer, bytes) => {\n writer.bytes.set(bytes, writer.byteOffset)\n writer.byteOffset += bytes.length\n}\n/**\n * @param {{bytes:Uint8Array}} writer\n * @param {number[]} varint\n * @param {Uint8Array} header\n */\nconst writeHeader = ({ bytes }, varint, header) => {\n bytes.set(varint)\n bytes.set(header, varint.length)\n}\n\nconst headerPreludeTokens = [\n new Token(Type.map, 2),\n new Token(Type.string, 'version'),\n new Token(Type.uint, 1),\n new Token(Type.string, 'roots')\n]\n\nconst CID_TAG = new Token(Type.tag, 42)\n\n/**\n * Calculates header size given the array of byteLength for roots.\n *\n * @name CarBufferWriter.calculateHeaderLength(rootLengths)\n * @param {number[]} rootLengths\n * @returns {number}\n */\nexport const calculateHeaderLength = (rootLengths) => {\n const tokens = [...headerPreludeTokens]\n tokens.push(new Token(Type.array, rootLengths.length))\n for (const rootLength of rootLengths) {\n tokens.push(CID_TAG)\n tokens.push(new Token(Type.bytes, { length: rootLength + 1 }))\n }\n const length = tokensToLength(tokens) // no options needed here because we have simple tokens\n return varint.encodingLength(length) + length\n}\n\n/**\n * Calculates header size given the array of roots.\n *\n * @name CarBufferWriter.headerLength({ roots })\n * @param {object} options\n * @param {CID[]} options.roots\n * @returns {number}\n */\nexport const headerLength = ({ roots }) =>\n calculateHeaderLength(roots.map(cid => cid.bytes.byteLength))\n\n/**\n * Estimates header size given a count of the roots and the expected byte length\n * of the root CIDs. The default length works for a standard CIDv1 with a\n * single-byte multihash code, such as SHA2-256 (i.e. the most common CIDv1).\n *\n * @name CarBufferWriter.estimateHeaderLength(rootCount[, rootByteLength])\n * @param {number} rootCount\n * @param {number} [rootByteLength]\n * @returns {number}\n */\nexport const estimateHeaderLength = (rootCount, rootByteLength = 36) =>\n calculateHeaderLength(new Array(rootCount).fill(rootByteLength))\n\n/**\n * Creates synchronous CAR writer that can be used to encode blocks into a given\n * buffer. Optionally you could pass `byteOffset` and `byteLength` to specify a\n * range inside buffer to write into. If car file is going to have `roots` you\n * need to either pass them under `options.roots` (from which header size will\n * be calculated) or provide `options.headerSize` to allocate required space\n * in the buffer. You may also provide known `roots` and `headerSize` to\n * allocate space for the roots that may not be known ahead of time.\n *\n * Note: Incorrect `headerSize` may lead to copying bytes inside a buffer\n * which will have a negative impact on performance.\n *\n * @name CarBufferWriter.createWriter(buffer[, options])\n * @param {ArrayBuffer} buffer\n * @param {object} [options]\n * @param {CID[]} [options.roots]\n * @param {number} [options.byteOffset]\n * @param {number} [options.byteLength]\n * @param {number} [options.headerSize]\n * @returns {CarBufferWriter}\n */\nexport const createWriter = (buffer, options = {}) => {\n const {\n roots = [],\n byteOffset = 0,\n byteLength = buffer.byteLength,\n headerSize = headerLength({ roots })\n } = options\n const bytes = new Uint8Array(buffer, byteOffset, byteLength)\n\n const writer = new CarBufferWriter(bytes, headerSize)\n for (const root of roots) {\n writer.addRoot(root)\n }\n\n return writer\n}\n", "const typeofs = [\n 'string',\n 'number',\n 'bigint',\n 'symbol'\n];\nconst objectTypeNames = [\n 'Function',\n 'Generator',\n 'AsyncGenerator',\n 'GeneratorFunction',\n 'AsyncGeneratorFunction',\n 'AsyncFunction',\n 'Observable',\n 'Array',\n 'Buffer',\n 'Object',\n 'RegExp',\n 'Date',\n 'Error',\n 'Map',\n 'Set',\n 'WeakMap',\n 'WeakSet',\n 'ArrayBuffer',\n 'SharedArrayBuffer',\n 'DataView',\n 'Promise',\n 'URL',\n 'HTMLElement',\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array',\n 'BigInt64Array',\n 'BigUint64Array'\n];\nexport function is(value) {\n if (value === null) {\n return 'null';\n }\n if (value === undefined) {\n return 'undefined';\n }\n if (value === true || value === false) {\n return 'boolean';\n }\n const typeOf = typeof value;\n if (typeofs.includes(typeOf)) {\n return typeOf;\n }\n if (typeOf === 'function') {\n return 'Function';\n }\n if (Array.isArray(value)) {\n return 'Array';\n }\n if (isBuffer(value)) {\n return 'Buffer';\n }\n const objectType = getObjectType(value);\n if (objectType) {\n return objectType;\n }\n return 'Object';\n}\nfunction isBuffer(value) {\n return value && value.constructor && value.constructor.isBuffer && value.constructor.isBuffer.call(null, value);\n}\nfunction getObjectType(value) {\n const objectTypeName = Object.prototype.toString.call(value).slice(8, -1);\n if (objectTypeNames.includes(objectTypeName)) {\n return objectTypeName;\n }\n return undefined;\n}", "class Type {\n constructor(major, name, terminal) {\n this.major = major;\n this.majorEncoded = major << 5;\n this.name = name;\n this.terminal = terminal;\n }\n toString() {\n return `Type[${ this.major }].${ this.name }`;\n }\n compare(typ) {\n return this.major < typ.major ? -1 : this.major > typ.major ? 1 : 0;\n }\n}\nType.uint = new Type(0, 'uint', true);\nType.negint = new Type(1, 'negint', true);\nType.bytes = new Type(2, 'bytes', true);\nType.string = new Type(3, 'string', true);\nType.array = new Type(4, 'array', false);\nType.map = new Type(5, 'map', false);\nType.tag = new Type(6, 'tag', false);\nType.float = new Type(7, 'float', true);\nType.false = new Type(7, 'false', true);\nType.true = new Type(7, 'true', true);\nType.null = new Type(7, 'null', true);\nType.undefined = new Type(7, 'undefined', true);\nType.break = new Type(7, 'break', true);\nclass Token {\n constructor(type, value, encodedLength) {\n this.type = type;\n this.value = value;\n this.encodedLength = encodedLength;\n this.encodedBytes = undefined;\n this.byteValue = undefined;\n }\n toString() {\n return `Token[${ this.type }].${ this.value }`;\n }\n}\nexport {\n Type,\n Token\n};", "export const useBuffer = globalThis.process && !globalThis.process.browser && globalThis.Buffer && typeof globalThis.Buffer.isBuffer === 'function';\nconst textDecoder = new TextDecoder();\nconst textEncoder = new TextEncoder();\nfunction isBuffer(buf) {\n return useBuffer && globalThis.Buffer.isBuffer(buf);\n}\nexport function asU8A(buf) {\n if (!(buf instanceof Uint8Array)) {\n return Uint8Array.from(buf);\n }\n return isBuffer(buf) ? new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength) : buf;\n}\nexport const toString = useBuffer ? (bytes, start, end) => {\n return end - start > 64 ? globalThis.Buffer.from(bytes.subarray(start, end)).toString('utf8') : utf8Slice(bytes, start, end);\n} : (bytes, start, end) => {\n return end - start > 64 ? textDecoder.decode(bytes.subarray(start, end)) : utf8Slice(bytes, start, end);\n};\nexport const fromString = useBuffer ? string => {\n return string.length > 64 ? globalThis.Buffer.from(string) : utf8ToBytes(string);\n} : string => {\n return string.length > 64 ? textEncoder.encode(string) : utf8ToBytes(string);\n};\nexport const fromArray = arr => {\n return Uint8Array.from(arr);\n};\nexport const slice = useBuffer ? (bytes, start, end) => {\n if (isBuffer(bytes)) {\n return new Uint8Array(bytes.subarray(start, end));\n }\n return bytes.slice(start, end);\n} : (bytes, start, end) => {\n return bytes.slice(start, end);\n};\nexport const concat = useBuffer ? (chunks, length) => {\n chunks = chunks.map(c => c instanceof Uint8Array ? c : globalThis.Buffer.from(c));\n return asU8A(globalThis.Buffer.concat(chunks, length));\n} : (chunks, length) => {\n const out = new Uint8Array(length);\n let off = 0;\n for (let b of chunks) {\n if (off + b.length > out.length) {\n b = b.subarray(0, out.length - off);\n }\n out.set(b, off);\n off += b.length;\n }\n return out;\n};\nexport const alloc = useBuffer ? size => {\n return globalThis.Buffer.allocUnsafe(size);\n} : size => {\n return new Uint8Array(size);\n};\nexport const toHex = useBuffer ? d => {\n if (typeof d === 'string') {\n return d;\n }\n return globalThis.Buffer.from(toBytes(d)).toString('hex');\n} : d => {\n if (typeof d === 'string') {\n return d;\n }\n return Array.prototype.reduce.call(toBytes(d), (p, c) => `${ p }${ c.toString(16).padStart(2, '0') }`, '');\n};\nexport const fromHex = useBuffer ? hex => {\n if (hex instanceof Uint8Array) {\n return hex;\n }\n return globalThis.Buffer.from(hex, 'hex');\n} : hex => {\n if (hex instanceof Uint8Array) {\n return hex;\n }\n if (!hex.length) {\n return new Uint8Array(0);\n }\n return new Uint8Array(hex.split('').map((c, i, d) => i % 2 === 0 ? `0x${ c }${ d[i + 1] }` : '').filter(Boolean).map(e => parseInt(e, 16)));\n};\nfunction toBytes(obj) {\n if (obj instanceof Uint8Array && obj.constructor.name === 'Uint8Array') {\n return obj;\n }\n if (obj instanceof ArrayBuffer) {\n return new Uint8Array(obj);\n }\n if (ArrayBuffer.isView(obj)) {\n return new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function compare(b1, b2) {\n if (isBuffer(b1) && isBuffer(b2)) {\n return b1.compare(b2);\n }\n for (let i = 0; i < b1.length; i++) {\n if (b1[i] === b2[i]) {\n continue;\n }\n return b1[i] < b2[i] ? -1 : 1;\n }\n return 0;\n}\nfunction utf8ToBytes(string, units = Infinity) {\n let codePoint;\n const length = string.length;\n let leadSurrogate = null;\n const bytes = [];\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n if (codePoint > 55295 && codePoint < 57344) {\n if (!leadSurrogate) {\n if (codePoint > 56319) {\n if ((units -= 3) > -1)\n bytes.push(239, 191, 189);\n continue;\n } else if (i + 1 === length) {\n if ((units -= 3) > -1)\n bytes.push(239, 191, 189);\n continue;\n }\n leadSurrogate = codePoint;\n continue;\n }\n if (codePoint < 56320) {\n if ((units -= 3) > -1)\n bytes.push(239, 191, 189);\n leadSurrogate = codePoint;\n continue;\n }\n codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n } else if (leadSurrogate) {\n if ((units -= 3) > -1)\n bytes.push(239, 191, 189);\n }\n leadSurrogate = null;\n if (codePoint < 128) {\n if ((units -= 1) < 0)\n break;\n bytes.push(codePoint);\n } else if (codePoint < 2048) {\n if ((units -= 2) < 0)\n break;\n bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n } else if (codePoint < 65536) {\n if ((units -= 3) < 0)\n break;\n bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n } else if (codePoint < 1114112) {\n if ((units -= 4) < 0)\n break;\n bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n } else {\n throw new Error('Invalid code point');\n }\n }\n return bytes;\n}\nfunction utf8Slice(buf, offset, end) {\n const res = [];\n while (offset < end) {\n const firstByte = buf[offset];\n let codePoint = null;\n let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n if (offset + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint;\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 128) {\n codePoint = firstByte;\n }\n break;\n case 2:\n secondByte = buf[offset + 1];\n if ((secondByte & 192) === 128) {\n tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n if (tempCodePoint > 127) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 3:\n secondByte = buf[offset + 1];\n thirdByte = buf[offset + 2];\n if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 4:\n secondByte = buf[offset + 1];\n thirdByte = buf[offset + 2];\n fourthByte = buf[offset + 3];\n if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n if (codePoint === null) {\n codePoint = 65533;\n bytesPerSequence = 1;\n } else if (codePoint > 65535) {\n codePoint -= 65536;\n res.push(codePoint >>> 10 & 1023 | 55296);\n codePoint = 56320 | codePoint & 1023;\n }\n res.push(codePoint);\n offset += bytesPerSequence;\n }\n return decodeCodePointsArray(res);\n}\nconst MAX_ARGUMENTS_LENGTH = 4096;\nexport function decodeCodePointsArray(codePoints) {\n const len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints);\n }\n let res = '';\n let i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n return res;\n}", "import {\n alloc,\n concat,\n slice\n} from './byte-utils.js';\nconst defaultChunkSize = 256;\nexport class Bl {\n constructor(chunkSize = defaultChunkSize) {\n this.chunkSize = chunkSize;\n this.cursor = 0;\n this.maxCursor = -1;\n this.chunks = [];\n this._initReuseChunk = null;\n }\n reset() {\n this.cursor = 0;\n this.maxCursor = -1;\n if (this.chunks.length) {\n this.chunks = [];\n }\n if (this._initReuseChunk !== null) {\n this.chunks.push(this._initReuseChunk);\n this.maxCursor = this._initReuseChunk.length - 1;\n }\n }\n push(bytes) {\n let topChunk = this.chunks[this.chunks.length - 1];\n const newMax = this.cursor + bytes.length;\n if (newMax <= this.maxCursor + 1) {\n const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1;\n topChunk.set(bytes, chunkPos);\n } else {\n if (topChunk) {\n const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1;\n if (chunkPos < topChunk.length) {\n this.chunks[this.chunks.length - 1] = topChunk.subarray(0, chunkPos);\n this.maxCursor = this.cursor - 1;\n }\n }\n if (bytes.length < 64 && bytes.length < this.chunkSize) {\n topChunk = alloc(this.chunkSize);\n this.chunks.push(topChunk);\n this.maxCursor += topChunk.length;\n if (this._initReuseChunk === null) {\n this._initReuseChunk = topChunk;\n }\n topChunk.set(bytes, 0);\n } else {\n this.chunks.push(bytes);\n this.maxCursor += bytes.length;\n }\n }\n this.cursor += bytes.length;\n }\n toBytes(reset = false) {\n let byts;\n if (this.chunks.length === 1) {\n const chunk = this.chunks[0];\n if (reset && this.cursor > chunk.length / 2) {\n byts = this.cursor === chunk.length ? chunk : chunk.subarray(0, this.cursor);\n this._initReuseChunk = null;\n this.chunks = [];\n } else {\n byts = slice(chunk, 0, this.cursor);\n }\n } else {\n byts = concat(this.chunks, this.cursor);\n }\n if (reset) {\n this.reset();\n }\n return byts;\n }\n}", "const decodeErrPrefix = 'CBOR decode error:';\nconst encodeErrPrefix = 'CBOR encode error:';\nconst uintMinorPrefixBytes = [];\nuintMinorPrefixBytes[23] = 1;\nuintMinorPrefixBytes[24] = 2;\nuintMinorPrefixBytes[25] = 3;\nuintMinorPrefixBytes[26] = 5;\nuintMinorPrefixBytes[27] = 9;\nfunction assertEnoughData(data, pos, need) {\n if (data.length - pos < need) {\n throw new Error(`${ decodeErrPrefix } not enough data for type`);\n }\n}\nexport {\n decodeErrPrefix,\n encodeErrPrefix,\n uintMinorPrefixBytes,\n assertEnoughData\n};", "import {\n Token,\n Type\n} from './token.js';\nimport {\n decodeErrPrefix,\n assertEnoughData\n} from './common.js';\nexport const uintBoundaries = [\n 24,\n 256,\n 65536,\n 4294967296,\n BigInt('18446744073709551616')\n];\nexport function readUint8(data, offset, options) {\n assertEnoughData(data, offset, 1);\n const value = data[offset];\n if (options.strict === true && value < uintBoundaries[0]) {\n throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n }\n return value;\n}\nexport function readUint16(data, offset, options) {\n assertEnoughData(data, offset, 2);\n const value = data[offset] << 8 | data[offset + 1];\n if (options.strict === true && value < uintBoundaries[1]) {\n throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n }\n return value;\n}\nexport function readUint32(data, offset, options) {\n assertEnoughData(data, offset, 4);\n const value = data[offset] * 16777216 + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3];\n if (options.strict === true && value < uintBoundaries[2]) {\n throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n }\n return value;\n}\nexport function readUint64(data, offset, options) {\n assertEnoughData(data, offset, 8);\n const hi = data[offset] * 16777216 + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3];\n const lo = data[offset + 4] * 16777216 + (data[offset + 5] << 16) + (data[offset + 6] << 8) + data[offset + 7];\n const value = (BigInt(hi) << BigInt(32)) + BigInt(lo);\n if (options.strict === true && value < uintBoundaries[3]) {\n throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n }\n if (value <= Number.MAX_SAFE_INTEGER) {\n return Number(value);\n }\n if (options.allowBigInt === true) {\n return value;\n }\n throw new Error(`${ decodeErrPrefix } integers outside of the safe integer range are not supported`);\n}\nexport function decodeUint8(data, pos, _minor, options) {\n return new Token(Type.uint, readUint8(data, pos + 1, options), 2);\n}\nexport function decodeUint16(data, pos, _minor, options) {\n return new Token(Type.uint, readUint16(data, pos + 1, options), 3);\n}\nexport function decodeUint32(data, pos, _minor, options) {\n return new Token(Type.uint, readUint32(data, pos + 1, options), 5);\n}\nexport function decodeUint64(data, pos, _minor, options) {\n return new Token(Type.uint, readUint64(data, pos + 1, options), 9);\n}\nexport function encodeUint(buf, token) {\n return encodeUintValue(buf, 0, token.value);\n}\nexport function encodeUintValue(buf, major, uint) {\n if (uint < uintBoundaries[0]) {\n const nuint = Number(uint);\n buf.push([major | nuint]);\n } else if (uint < uintBoundaries[1]) {\n const nuint = Number(uint);\n buf.push([\n major | 24,\n nuint\n ]);\n } else if (uint < uintBoundaries[2]) {\n const nuint = Number(uint);\n buf.push([\n major | 25,\n nuint >>> 8,\n nuint & 255\n ]);\n } else if (uint < uintBoundaries[3]) {\n const nuint = Number(uint);\n buf.push([\n major | 26,\n nuint >>> 24 & 255,\n nuint >>> 16 & 255,\n nuint >>> 8 & 255,\n nuint & 255\n ]);\n } else {\n const buint = BigInt(uint);\n if (buint < uintBoundaries[4]) {\n const set = [\n major | 27,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n let lo = Number(buint & BigInt(4294967295));\n let hi = Number(buint >> BigInt(32) & BigInt(4294967295));\n set[8] = lo & 255;\n lo = lo >> 8;\n set[7] = lo & 255;\n lo = lo >> 8;\n set[6] = lo & 255;\n lo = lo >> 8;\n set[5] = lo & 255;\n set[4] = hi & 255;\n hi = hi >> 8;\n set[3] = hi & 255;\n hi = hi >> 8;\n set[2] = hi & 255;\n hi = hi >> 8;\n set[1] = hi & 255;\n buf.push(set);\n } else {\n throw new Error(`${ decodeErrPrefix } encountered BigInt larger than allowable range`);\n }\n }\n}\nencodeUint.encodedSize = function encodedSize(token) {\n return encodeUintValue.encodedSize(token.value);\n};\nencodeUintValue.encodedSize = function encodedSize(uint) {\n if (uint < uintBoundaries[0]) {\n return 1;\n }\n if (uint < uintBoundaries[1]) {\n return 2;\n }\n if (uint < uintBoundaries[2]) {\n return 3;\n }\n if (uint < uintBoundaries[3]) {\n return 5;\n }\n return 9;\n};\nencodeUint.compareTokens = function compareTokens(tok1, tok2) {\n return tok1.value < tok2.value ? -1 : tok1.value > tok2.value ? 1 : 0;\n};", "import {\n Token,\n Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nexport function decodeNegint8(data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint8(data, pos + 1, options), 2);\n}\nexport function decodeNegint16(data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint16(data, pos + 1, options), 3);\n}\nexport function decodeNegint32(data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint32(data, pos + 1, options), 5);\n}\nconst neg1b = BigInt(-1);\nconst pos1b = BigInt(1);\nexport function decodeNegint64(data, pos, _minor, options) {\n const int = uint.readUint64(data, pos + 1, options);\n if (typeof int !== 'bigint') {\n const value = -1 - int;\n if (value >= Number.MIN_SAFE_INTEGER) {\n return new Token(Type.negint, value, 9);\n }\n }\n if (options.allowBigInt !== true) {\n throw new Error(`${ decodeErrPrefix } integers outside of the safe integer range are not supported`);\n }\n return new Token(Type.negint, neg1b - BigInt(int), 9);\n}\nexport function encodeNegint(buf, token) {\n const negint = token.value;\n const unsigned = typeof negint === 'bigint' ? negint * neg1b - pos1b : negint * -1 - 1;\n uint.encodeUintValue(buf, token.type.majorEncoded, unsigned);\n}\nencodeNegint.encodedSize = function encodedSize(token) {\n const negint = token.value;\n const unsigned = typeof negint === 'bigint' ? negint * neg1b - pos1b : negint * -1 - 1;\n if (unsigned < uint.uintBoundaries[0]) {\n return 1;\n }\n if (unsigned < uint.uintBoundaries[1]) {\n return 2;\n }\n if (unsigned < uint.uintBoundaries[2]) {\n return 3;\n }\n if (unsigned < uint.uintBoundaries[3]) {\n return 5;\n }\n return 9;\n};\nencodeNegint.compareTokens = function compareTokens(tok1, tok2) {\n return tok1.value < tok2.value ? 1 : tok1.value > tok2.value ? -1 : 0;\n};", "import {\n Token,\n Type\n} from './token.js';\nimport {\n assertEnoughData,\n decodeErrPrefix\n} from './common.js';\nimport * as uint from './0uint.js';\nimport {\n compare,\n fromString,\n slice\n} from './byte-utils.js';\nfunction toToken(data, pos, prefix, length) {\n assertEnoughData(data, pos, prefix + length);\n const buf = slice(data, pos + prefix, pos + prefix + length);\n return new Token(Type.bytes, buf, prefix + length);\n}\nexport function decodeBytesCompact(data, pos, minor, _options) {\n return toToken(data, pos, 1, minor);\n}\nexport function decodeBytes8(data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeBytes16(data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeBytes32(data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeBytes64(data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options);\n if (typeof l === 'bigint') {\n throw new Error(`${ decodeErrPrefix } 64-bit integer bytes lengths not supported`);\n }\n return toToken(data, pos, 9, l);\n}\nfunction tokenBytes(token) {\n if (token.encodedBytes === undefined) {\n token.encodedBytes = token.type === Type.string ? fromString(token.value) : token.value;\n }\n return token.encodedBytes;\n}\nexport function encodeBytes(buf, token) {\n const bytes = tokenBytes(token);\n uint.encodeUintValue(buf, token.type.majorEncoded, bytes.length);\n buf.push(bytes);\n}\nencodeBytes.encodedSize = function encodedSize(token) {\n const bytes = tokenBytes(token);\n return uint.encodeUintValue.encodedSize(bytes.length) + bytes.length;\n};\nencodeBytes.compareTokens = function compareTokens(tok1, tok2) {\n return compareBytes(tokenBytes(tok1), tokenBytes(tok2));\n};\nexport function compareBytes(b1, b2) {\n return b1.length < b2.length ? -1 : b1.length > b2.length ? 1 : compare(b1, b2);\n}", "import {\n Token,\n Type\n} from './token.js';\nimport {\n assertEnoughData,\n decodeErrPrefix\n} from './common.js';\nimport * as uint from './0uint.js';\nimport { encodeBytes } from './2bytes.js';\nimport {\n toString,\n slice\n} from './byte-utils.js';\nfunction toToken(data, pos, prefix, length, options) {\n const totLength = prefix + length;\n assertEnoughData(data, pos, totLength);\n const tok = new Token(Type.string, toString(data, pos + prefix, pos + totLength), totLength);\n if (options.retainStringBytes === true) {\n tok.byteValue = slice(data, pos + prefix, pos + totLength);\n }\n return tok;\n}\nexport function decodeStringCompact(data, pos, minor, options) {\n return toToken(data, pos, 1, minor, options);\n}\nexport function decodeString8(data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options), options);\n}\nexport function decodeString16(data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options), options);\n}\nexport function decodeString32(data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options), options);\n}\nexport function decodeString64(data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options);\n if (typeof l === 'bigint') {\n throw new Error(`${ decodeErrPrefix } 64-bit integer string lengths not supported`);\n }\n return toToken(data, pos, 9, l, options);\n}\nexport const encodeString = encodeBytes;", "import {\n Token,\n Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nfunction toToken(_data, _pos, prefix, length) {\n return new Token(Type.array, length, prefix);\n}\nexport function decodeArrayCompact(data, pos, minor, _options) {\n return toToken(data, pos, 1, minor);\n}\nexport function decodeArray8(data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeArray16(data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeArray32(data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeArray64(data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options);\n if (typeof l === 'bigint') {\n throw new Error(`${ decodeErrPrefix } 64-bit integer array lengths not supported`);\n }\n return toToken(data, pos, 9, l);\n}\nexport function decodeArrayIndefinite(data, pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n }\n return toToken(data, pos, 1, Infinity);\n}\nexport function encodeArray(buf, token) {\n uint.encodeUintValue(buf, Type.array.majorEncoded, token.value);\n}\nencodeArray.compareTokens = uint.encodeUint.compareTokens;\nencodeArray.encodedSize = function encodedSize(token) {\n return uint.encodeUintValue.encodedSize(token.value);\n};", "import {\n Token,\n Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nfunction toToken(_data, _pos, prefix, length) {\n return new Token(Type.map, length, prefix);\n}\nexport function decodeMapCompact(data, pos, minor, _options) {\n return toToken(data, pos, 1, minor);\n}\nexport function decodeMap8(data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeMap16(data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeMap32(data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeMap64(data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options);\n if (typeof l === 'bigint') {\n throw new Error(`${ decodeErrPrefix } 64-bit integer map lengths not supported`);\n }\n return toToken(data, pos, 9, l);\n}\nexport function decodeMapIndefinite(data, pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n }\n return toToken(data, pos, 1, Infinity);\n}\nexport function encodeMap(buf, token) {\n uint.encodeUintValue(buf, Type.map.majorEncoded, token.value);\n}\nencodeMap.compareTokens = uint.encodeUint.compareTokens;\nencodeMap.encodedSize = function encodedSize(token) {\n return uint.encodeUintValue.encodedSize(token.value);\n};", "import {\n Token,\n Type\n} from './token.js';\nimport * as uint from './0uint.js';\nexport function decodeTagCompact(_data, _pos, minor, _options) {\n return new Token(Type.tag, minor, 1);\n}\nexport function decodeTag8(data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint8(data, pos + 1, options), 2);\n}\nexport function decodeTag16(data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint16(data, pos + 1, options), 3);\n}\nexport function decodeTag32(data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint32(data, pos + 1, options), 5);\n}\nexport function decodeTag64(data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint64(data, pos + 1, options), 9);\n}\nexport function encodeTag(buf, token) {\n uint.encodeUintValue(buf, Type.tag.majorEncoded, token.value);\n}\nencodeTag.compareTokens = uint.encodeUint.compareTokens;\nencodeTag.encodedSize = function encodedSize(token) {\n return uint.encodeUintValue.encodedSize(token.value);\n};", "import {\n Token,\n Type\n} from './token.js';\nimport { decodeErrPrefix } from './common.js';\nimport { encodeUint } from './0uint.js';\nconst MINOR_FALSE = 20;\nconst MINOR_TRUE = 21;\nconst MINOR_NULL = 22;\nconst MINOR_UNDEFINED = 23;\nexport function decodeUndefined(_data, _pos, _minor, options) {\n if (options.allowUndefined === false) {\n throw new Error(`${ decodeErrPrefix } undefined values are not supported`);\n } else if (options.coerceUndefinedToNull === true) {\n return new Token(Type.null, null, 1);\n }\n return new Token(Type.undefined, undefined, 1);\n}\nexport function decodeBreak(_data, _pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n }\n return new Token(Type.break, undefined, 1);\n}\nfunction createToken(value, bytes, options) {\n if (options) {\n if (options.allowNaN === false && Number.isNaN(value)) {\n throw new Error(`${ decodeErrPrefix } NaN values are not supported`);\n }\n if (options.allowInfinity === false && (value === Infinity || value === -Infinity)) {\n throw new Error(`${ decodeErrPrefix } Infinity values are not supported`);\n }\n }\n return new Token(Type.float, value, bytes);\n}\nexport function decodeFloat16(data, pos, _minor, options) {\n return createToken(readFloat16(data, pos + 1), 3, options);\n}\nexport function decodeFloat32(data, pos, _minor, options) {\n return createToken(readFloat32(data, pos + 1), 5, options);\n}\nexport function decodeFloat64(data, pos, _minor, options) {\n return createToken(readFloat64(data, pos + 1), 9, options);\n}\nexport function encodeFloat(buf, token, options) {\n const float = token.value;\n if (float === false) {\n buf.push([Type.float.majorEncoded | MINOR_FALSE]);\n } else if (float === true) {\n buf.push([Type.float.majorEncoded | MINOR_TRUE]);\n } else if (float === null) {\n buf.push([Type.float.majorEncoded | MINOR_NULL]);\n } else if (float === undefined) {\n buf.push([Type.float.majorEncoded | MINOR_UNDEFINED]);\n } else {\n let decoded;\n let success = false;\n if (!options || options.float64 !== true) {\n encodeFloat16(float);\n decoded = readFloat16(ui8a, 1);\n if (float === decoded || Number.isNaN(float)) {\n ui8a[0] = 249;\n buf.push(ui8a.slice(0, 3));\n success = true;\n } else {\n encodeFloat32(float);\n decoded = readFloat32(ui8a, 1);\n if (float === decoded) {\n ui8a[0] = 250;\n buf.push(ui8a.slice(0, 5));\n success = true;\n }\n }\n }\n if (!success) {\n encodeFloat64(float);\n decoded = readFloat64(ui8a, 1);\n ui8a[0] = 251;\n buf.push(ui8a.slice(0, 9));\n }\n }\n}\nencodeFloat.encodedSize = function encodedSize(token, options) {\n const float = token.value;\n if (float === false || float === true || float === null || float === undefined) {\n return 1;\n }\n if (!options || options.float64 !== true) {\n encodeFloat16(float);\n let decoded = readFloat16(ui8a, 1);\n if (float === decoded || Number.isNaN(float)) {\n return 3;\n }\n encodeFloat32(float);\n decoded = readFloat32(ui8a, 1);\n if (float === decoded) {\n return 5;\n }\n }\n return 9;\n};\nconst buffer = new ArrayBuffer(9);\nconst dataView = new DataView(buffer, 1);\nconst ui8a = new Uint8Array(buffer, 0);\nfunction encodeFloat16(inp) {\n if (inp === Infinity) {\n dataView.setUint16(0, 31744, false);\n } else if (inp === -Infinity) {\n dataView.setUint16(0, 64512, false);\n } else if (Number.isNaN(inp)) {\n dataView.setUint16(0, 32256, false);\n } else {\n dataView.setFloat32(0, inp);\n const valu32 = dataView.getUint32(0);\n const exponent = (valu32 & 2139095040) >> 23;\n const mantissa = valu32 & 8388607;\n if (exponent === 255) {\n dataView.setUint16(0, 31744, false);\n } else if (exponent === 0) {\n dataView.setUint16(0, (inp & 2147483648) >> 16 | mantissa >> 13, false);\n } else {\n const logicalExponent = exponent - 127;\n if (logicalExponent < -24) {\n dataView.setUint16(0, 0);\n } else if (logicalExponent < -14) {\n dataView.setUint16(0, (valu32 & 2147483648) >> 16 | 1 << 24 + logicalExponent, false);\n } else {\n dataView.setUint16(0, (valu32 & 2147483648) >> 16 | logicalExponent + 15 << 10 | mantissa >> 13, false);\n }\n }\n }\n}\nfunction readFloat16(ui8a, pos) {\n if (ui8a.length - pos < 2) {\n throw new Error(`${ decodeErrPrefix } not enough data for float16`);\n }\n const half = (ui8a[pos] << 8) + ui8a[pos + 1];\n if (half === 31744) {\n return Infinity;\n }\n if (half === 64512) {\n return -Infinity;\n }\n if (half === 32256) {\n return NaN;\n }\n const exp = half >> 10 & 31;\n const mant = half & 1023;\n let val;\n if (exp === 0) {\n val = mant * 2 ** -24;\n } else if (exp !== 31) {\n val = (mant + 1024) * 2 ** (exp - 25);\n } else {\n val = mant === 0 ? Infinity : NaN;\n }\n return half & 32768 ? -val : val;\n}\nfunction encodeFloat32(inp) {\n dataView.setFloat32(0, inp, false);\n}\nfunction readFloat32(ui8a, pos) {\n if (ui8a.length - pos < 4) {\n throw new Error(`${ decodeErrPrefix } not enough data for float32`);\n }\n const offset = (ui8a.byteOffset || 0) + pos;\n return new DataView(ui8a.buffer, offset, 4).getFloat32(0, false);\n}\nfunction encodeFloat64(inp) {\n dataView.setFloat64(0, inp, false);\n}\nfunction readFloat64(ui8a, pos) {\n if (ui8a.length - pos < 8) {\n throw new Error(`${ decodeErrPrefix } not enough data for float64`);\n }\n const offset = (ui8a.byteOffset || 0) + pos;\n return new DataView(ui8a.buffer, offset, 8).getFloat64(0, false);\n}\nencodeFloat.compareTokens = encodeUint.compareTokens;", "import {\n Token,\n Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport * as negint from './1negint.js';\nimport * as bytes from './2bytes.js';\nimport * as string from './3string.js';\nimport * as array from './4array.js';\nimport * as map from './5map.js';\nimport * as tag from './6tag.js';\nimport * as float from './7float.js';\nimport { decodeErrPrefix } from './common.js';\nimport { fromArray } from './byte-utils.js';\nfunction invalidMinor(data, pos, minor) {\n throw new Error(`${ decodeErrPrefix } encountered invalid minor (${ minor }) for major ${ data[pos] >>> 5 }`);\n}\nfunction errorer(msg) {\n return () => {\n throw new Error(`${ decodeErrPrefix } ${ msg }`);\n };\n}\nexport const jump = [];\nfor (let i = 0; i <= 23; i++) {\n jump[i] = invalidMinor;\n}\njump[24] = uint.decodeUint8;\njump[25] = uint.decodeUint16;\njump[26] = uint.decodeUint32;\njump[27] = uint.decodeUint64;\njump[28] = invalidMinor;\njump[29] = invalidMinor;\njump[30] = invalidMinor;\njump[31] = invalidMinor;\nfor (let i = 32; i <= 55; i++) {\n jump[i] = invalidMinor;\n}\njump[56] = negint.decodeNegint8;\njump[57] = negint.decodeNegint16;\njump[58] = negint.decodeNegint32;\njump[59] = negint.decodeNegint64;\njump[60] = invalidMinor;\njump[61] = invalidMinor;\njump[62] = invalidMinor;\njump[63] = invalidMinor;\nfor (let i = 64; i <= 87; i++) {\n jump[i] = bytes.decodeBytesCompact;\n}\njump[88] = bytes.decodeBytes8;\njump[89] = bytes.decodeBytes16;\njump[90] = bytes.decodeBytes32;\njump[91] = bytes.decodeBytes64;\njump[92] = invalidMinor;\njump[93] = invalidMinor;\njump[94] = invalidMinor;\njump[95] = errorer('indefinite length bytes/strings are not supported');\nfor (let i = 96; i <= 119; i++) {\n jump[i] = string.decodeStringCompact;\n}\njump[120] = string.decodeString8;\njump[121] = string.decodeString16;\njump[122] = string.decodeString32;\njump[123] = string.decodeString64;\njump[124] = invalidMinor;\njump[125] = invalidMinor;\njump[126] = invalidMinor;\njump[127] = errorer('indefinite length bytes/strings are not supported');\nfor (let i = 128; i <= 151; i++) {\n jump[i] = array.decodeArrayCompact;\n}\njump[152] = array.decodeArray8;\njump[153] = array.decodeArray16;\njump[154] = array.decodeArray32;\njump[155] = array.decodeArray64;\njump[156] = invalidMinor;\njump[157] = invalidMinor;\njump[158] = invalidMinor;\njump[159] = array.decodeArrayIndefinite;\nfor (let i = 160; i <= 183; i++) {\n jump[i] = map.decodeMapCompact;\n}\njump[184] = map.decodeMap8;\njump[185] = map.decodeMap16;\njump[186] = map.decodeMap32;\njump[187] = map.decodeMap64;\njump[188] = invalidMinor;\njump[189] = invalidMinor;\njump[190] = invalidMinor;\njump[191] = map.decodeMapIndefinite;\nfor (let i = 192; i <= 215; i++) {\n jump[i] = tag.decodeTagCompact;\n}\njump[216] = tag.decodeTag8;\njump[217] = tag.decodeTag16;\njump[218] = tag.decodeTag32;\njump[219] = tag.decodeTag64;\njump[220] = invalidMinor;\njump[221] = invalidMinor;\njump[222] = invalidMinor;\njump[223] = invalidMinor;\nfor (let i = 224; i <= 243; i++) {\n jump[i] = errorer('simple values are not supported');\n}\njump[244] = invalidMinor;\njump[245] = invalidMinor;\njump[246] = invalidMinor;\njump[247] = float.decodeUndefined;\njump[248] = errorer('simple values are not supported');\njump[249] = float.decodeFloat16;\njump[250] = float.decodeFloat32;\njump[251] = float.decodeFloat64;\njump[252] = invalidMinor;\njump[253] = invalidMinor;\njump[254] = invalidMinor;\njump[255] = float.decodeBreak;\nexport const quick = [];\nfor (let i = 0; i < 24; i++) {\n quick[i] = new Token(Type.uint, i, 1);\n}\nfor (let i = -1; i >= -24; i--) {\n quick[31 - i] = new Token(Type.negint, i, 1);\n}\nquick[64] = new Token(Type.bytes, new Uint8Array(0), 1);\nquick[96] = new Token(Type.string, '', 1);\nquick[128] = new Token(Type.array, 0, 1);\nquick[160] = new Token(Type.map, 0, 1);\nquick[244] = new Token(Type.false, false, 1);\nquick[245] = new Token(Type.true, true, 1);\nquick[246] = new Token(Type.null, null, 1);\nexport function quickEncodeToken(token) {\n switch (token.type) {\n case Type.false:\n return fromArray([244]);\n case Type.true:\n return fromArray([245]);\n case Type.null:\n return fromArray([246]);\n case Type.bytes:\n if (!token.value.length) {\n return fromArray([64]);\n }\n return;\n case Type.string:\n if (token.value === '') {\n return fromArray([96]);\n }\n return;\n case Type.array:\n if (token.value === 0) {\n return fromArray([128]);\n }\n return;\n case Type.map:\n if (token.value === 0) {\n return fromArray([160]);\n }\n return;\n case Type.uint:\n if (token.value < 24) {\n return fromArray([Number(token.value)]);\n }\n return;\n case Type.negint:\n if (token.value >= -24) {\n return fromArray([31 - Number(token.value)]);\n }\n }\n}", "import { is } from './is.js';\nimport {\n Token,\n Type\n} from './token.js';\nimport { Bl } from './bl.js';\nimport { encodeErrPrefix } from './common.js';\nimport { quickEncodeToken } from './jump.js';\nimport { asU8A } from './byte-utils.js';\nimport { encodeUint } from './0uint.js';\nimport { encodeNegint } from './1negint.js';\nimport { encodeBytes } from './2bytes.js';\nimport { encodeString } from './3string.js';\nimport { encodeArray } from './4array.js';\nimport { encodeMap } from './5map.js';\nimport { encodeTag } from './6tag.js';\nimport { encodeFloat } from './7float.js';\nconst defaultEncodeOptions = {\n float64: false,\n mapSorter,\n quickEncodeToken\n};\nexport function makeCborEncoders() {\n const encoders = [];\n encoders[Type.uint.major] = encodeUint;\n encoders[Type.negint.major] = encodeNegint;\n encoders[Type.bytes.major] = encodeBytes;\n encoders[Type.string.major] = encodeString;\n encoders[Type.array.major] = encodeArray;\n encoders[Type.map.major] = encodeMap;\n encoders[Type.tag.major] = encodeTag;\n encoders[Type.float.major] = encodeFloat;\n return encoders;\n}\nconst cborEncoders = makeCborEncoders();\nconst buf = new Bl();\nclass Ref {\n constructor(obj, parent) {\n this.obj = obj;\n this.parent = parent;\n }\n includes(obj) {\n let p = this;\n do {\n if (p.obj === obj) {\n return true;\n }\n } while (p = p.parent);\n return false;\n }\n static createCheck(stack, obj) {\n if (stack && stack.includes(obj)) {\n throw new Error(`${ encodeErrPrefix } object contains circular references`);\n }\n return new Ref(obj, stack);\n }\n}\nconst simpleTokens = {\n null: new Token(Type.null, null),\n undefined: new Token(Type.undefined, undefined),\n true: new Token(Type.true, true),\n false: new Token(Type.false, false),\n emptyArray: new Token(Type.array, 0),\n emptyMap: new Token(Type.map, 0)\n};\nconst typeEncoders = {\n number(obj, _typ, _options, _refStack) {\n if (!Number.isInteger(obj) || !Number.isSafeInteger(obj)) {\n return new Token(Type.float, obj);\n } else if (obj >= 0) {\n return new Token(Type.uint, obj);\n } else {\n return new Token(Type.negint, obj);\n }\n },\n bigint(obj, _typ, _options, _refStack) {\n if (obj >= BigInt(0)) {\n return new Token(Type.uint, obj);\n } else {\n return new Token(Type.negint, obj);\n }\n },\n Uint8Array(obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, obj);\n },\n string(obj, _typ, _options, _refStack) {\n return new Token(Type.string, obj);\n },\n boolean(obj, _typ, _options, _refStack) {\n return obj ? simpleTokens.true : simpleTokens.false;\n },\n null(_obj, _typ, _options, _refStack) {\n return simpleTokens.null;\n },\n undefined(_obj, _typ, _options, _refStack) {\n return simpleTokens.undefined;\n },\n ArrayBuffer(obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, new Uint8Array(obj));\n },\n DataView(obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength));\n },\n Array(obj, _typ, options, refStack) {\n if (!obj.length) {\n if (options.addBreakTokens === true) {\n return [\n simpleTokens.emptyArray,\n new Token(Type.break)\n ];\n }\n return simpleTokens.emptyArray;\n }\n refStack = Ref.createCheck(refStack, obj);\n const entries = [];\n let i = 0;\n for (const e of obj) {\n entries[i++] = objectToTokens(e, options, refStack);\n }\n if (options.addBreakTokens) {\n return [\n new Token(Type.array, obj.length),\n entries,\n new Token(Type.break)\n ];\n }\n return [\n new Token(Type.array, obj.length),\n entries\n ];\n },\n Object(obj, typ, options, refStack) {\n const isMap = typ !== 'Object';\n const keys = isMap ? obj.keys() : Object.keys(obj);\n const length = isMap ? obj.size : keys.length;\n if (!length) {\n if (options.addBreakTokens === true) {\n return [\n simpleTokens.emptyMap,\n new Token(Type.break)\n ];\n }\n return simpleTokens.emptyMap;\n }\n refStack = Ref.createCheck(refStack, obj);\n const entries = [];\n let i = 0;\n for (const key of keys) {\n entries[i++] = [\n objectToTokens(key, options, refStack),\n objectToTokens(isMap ? obj.get(key) : obj[key], options, refStack)\n ];\n }\n sortMapEntries(entries, options);\n if (options.addBreakTokens) {\n return [\n new Token(Type.map, length),\n entries,\n new Token(Type.break)\n ];\n }\n return [\n new Token(Type.map, length),\n entries\n ];\n }\n};\ntypeEncoders.Map = typeEncoders.Object;\ntypeEncoders.Buffer = typeEncoders.Uint8Array;\nfor (const typ of 'Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64'.split(' ')) {\n typeEncoders[`${ typ }Array`] = typeEncoders.DataView;\n}\nfunction objectToTokens(obj, options = {}, refStack) {\n const typ = is(obj);\n const customTypeEncoder = options && options.typeEncoders && options.typeEncoders[typ] || typeEncoders[typ];\n if (typeof customTypeEncoder === 'function') {\n const tokens = customTypeEncoder(obj, typ, options, refStack);\n if (tokens != null) {\n return tokens;\n }\n }\n const typeEncoder = typeEncoders[typ];\n if (!typeEncoder) {\n throw new Error(`${ encodeErrPrefix } unsupported type: ${ typ }`);\n }\n return typeEncoder(obj, typ, options, refStack);\n}\nfunction sortMapEntries(entries, options) {\n if (options.mapSorter) {\n entries.sort(options.mapSorter);\n }\n}\nfunction mapSorter(e1, e2) {\n const keyToken1 = Array.isArray(e1[0]) ? e1[0][0] : e1[0];\n const keyToken2 = Array.isArray(e2[0]) ? e2[0][0] : e2[0];\n if (keyToken1.type !== keyToken2.type) {\n return keyToken1.type.compare(keyToken2.type);\n }\n const major = keyToken1.type.major;\n const tcmp = cborEncoders[major].compareTokens(keyToken1, keyToken2);\n if (tcmp === 0) {\n console.warn('WARNING: complex key types used, CBOR key sorting guarantees are gone');\n }\n return tcmp;\n}\nfunction tokensToEncoded(buf, tokens, encoders, options) {\n if (Array.isArray(tokens)) {\n for (const token of tokens) {\n tokensToEncoded(buf, token, encoders, options);\n }\n } else {\n encoders[tokens.type.major](buf, tokens, options);\n }\n}\nfunction encodeCustom(data, encoders, options) {\n const tokens = objectToTokens(data, options);\n if (!Array.isArray(tokens) && options.quickEncodeToken) {\n const quickBytes = options.quickEncodeToken(tokens);\n if (quickBytes) {\n return quickBytes;\n }\n const encoder = encoders[tokens.type.major];\n if (encoder.encodedSize) {\n const size = encoder.encodedSize(tokens, options);\n const buf = new Bl(size);\n encoder(buf, tokens, options);\n if (buf.chunks.length !== 1) {\n throw new Error(`Unexpected error: pre-calculated length for ${ tokens } was wrong`);\n }\n return asU8A(buf.chunks[0]);\n }\n }\n buf.reset();\n tokensToEncoded(buf, tokens, encoders, options);\n return buf.toBytes(true);\n}\nfunction encode(data, options) {\n options = Object.assign({}, defaultEncodeOptions, options);\n return encodeCustom(data, cborEncoders, options);\n}\nexport {\n objectToTokens,\n encode,\n encodeCustom,\n Ref\n};", "import { decodeErrPrefix } from './common.js';\nimport { Type } from './token.js';\nimport {\n jump,\n quick\n} from './jump.js';\nconst defaultDecodeOptions = {\n strict: false,\n allowIndefinite: true,\n allowUndefined: true,\n allowBigInt: true\n};\nclass Tokeniser {\n constructor(data, options = {}) {\n this.pos = 0;\n this.data = data;\n this.options = options;\n }\n done() {\n return this.pos >= this.data.length;\n }\n next() {\n const byt = this.data[this.pos];\n let token = quick[byt];\n if (token === undefined) {\n const decoder = jump[byt];\n if (!decoder) {\n throw new Error(`${ decodeErrPrefix } no decoder for major type ${ byt >>> 5 } (byte 0x${ byt.toString(16).padStart(2, '0') })`);\n }\n const minor = byt & 31;\n token = decoder(this.data, this.pos, minor, this.options);\n }\n this.pos += token.encodedLength;\n return token;\n }\n}\nconst DONE = Symbol.for('DONE');\nconst BREAK = Symbol.for('BREAK');\nfunction tokenToArray(token, tokeniser, options) {\n const arr = [];\n for (let i = 0; i < token.value; i++) {\n const value = tokensToObject(tokeniser, options);\n if (value === BREAK) {\n if (token.value === Infinity) {\n break;\n }\n throw new Error(`${ decodeErrPrefix } got unexpected break to lengthed array`);\n }\n if (value === DONE) {\n throw new Error(`${ decodeErrPrefix } found array but not enough entries (got ${ i }, expected ${ token.value })`);\n }\n arr[i] = value;\n }\n return arr;\n}\nfunction tokenToMap(token, tokeniser, options) {\n const useMaps = options.useMaps === true;\n const obj = useMaps ? undefined : {};\n const m = useMaps ? new Map() : undefined;\n for (let i = 0; i < token.value; i++) {\n const key = tokensToObject(tokeniser, options);\n if (key === BREAK) {\n if (token.value === Infinity) {\n break;\n }\n throw new Error(`${ decodeErrPrefix } got unexpected break to lengthed map`);\n }\n if (key === DONE) {\n throw new Error(`${ decodeErrPrefix } found map but not enough entries (got ${ i } [no key], expected ${ token.value })`);\n }\n if (useMaps !== true && typeof key !== 'string') {\n throw new Error(`${ decodeErrPrefix } non-string keys not supported (got ${ typeof key })`);\n }\n if (options.rejectDuplicateMapKeys === true) {\n if (useMaps && m.has(key) || !useMaps && key in obj) {\n throw new Error(`${ decodeErrPrefix } found repeat map key \"${ key }\"`);\n }\n }\n const value = tokensToObject(tokeniser, options);\n if (value === DONE) {\n throw new Error(`${ decodeErrPrefix } found map but not enough entries (got ${ i } [no value], expected ${ token.value })`);\n }\n if (useMaps) {\n m.set(key, value);\n } else {\n obj[key] = value;\n }\n }\n return useMaps ? m : obj;\n}\nfunction tokensToObject(tokeniser, options) {\n if (tokeniser.done()) {\n return DONE;\n }\n const token = tokeniser.next();\n if (token.type === Type.break) {\n return BREAK;\n }\n if (token.type.terminal) {\n return token.value;\n }\n if (token.type === Type.array) {\n return tokenToArray(token, tokeniser, options);\n }\n if (token.type === Type.map) {\n return tokenToMap(token, tokeniser, options);\n }\n if (token.type === Type.tag) {\n if (options.tags && typeof options.tags[token.value] === 'function') {\n const tagged = tokensToObject(tokeniser, options);\n return options.tags[token.value](tagged);\n }\n throw new Error(`${ decodeErrPrefix } tag not supported (${ token.value })`);\n }\n throw new Error('unsupported');\n}\nfunction decode(data, options) {\n if (!(data instanceof Uint8Array)) {\n throw new Error(`${ decodeErrPrefix } data to decode must be a Uint8Array`);\n }\n options = Object.assign({}, defaultDecodeOptions, options);\n const tokeniser = options.tokenizer || new Tokeniser(data, options);\n const decoded = tokensToObject(tokeniser, options);\n if (decoded === DONE) {\n throw new Error(`${ decodeErrPrefix } did not find any content to decode`);\n }\n if (decoded === BREAK) {\n throw new Error(`${ decodeErrPrefix } got unexpected break`);\n }\n if (!tokeniser.done()) {\n throw new Error(`${ decodeErrPrefix } too many terminals, data makes no sense`);\n }\n return decoded;\n}\nexport {\n Tokeniser,\n tokensToObject,\n decode\n};", "import {\n makeCborEncoders,\n objectToTokens\n} from './encode.js';\nimport { quickEncodeToken } from './jump.js';\nconst cborEncoders = makeCborEncoders();\nconst defaultEncodeOptions = {\n float64: false,\n quickEncodeToken\n};\nexport function encodedLength(data, options) {\n options = Object.assign({}, defaultEncodeOptions, options);\n options.mapSorter = undefined;\n const tokens = objectToTokens(data, options);\n return tokensToLength(tokens, cborEncoders, options);\n}\nexport function tokensToLength(tokens, encoders = cborEncoders, options = defaultEncodeOptions) {\n if (Array.isArray(tokens)) {\n let len = 0;\n for (const token of tokens) {\n len += tokensToLength(token, encoders, options);\n }\n return len;\n } else {\n const encoder = encoders[tokens.type.major];\n if (encoder.encodedSize === undefined || typeof encoder.encodedSize !== 'function') {\n throw new Error(`Encoder for ${ tokens.type.name } does not have an encodedSize()`);\n }\n return encoder.encodedSize(tokens, options);\n }\n}", "import * as cborg from 'cborg'\nimport { CID } from 'multiformats/cid'\n\n// https://github.com/ipfs/go-ipfs/issues/3570#issuecomment-273931692\nconst CID_CBOR_TAG = 42\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView<T>} ByteView\n */\n\n/**\n * cidEncoder will receive all Objects during encode, it needs to filter out\n * anything that's not a CID and return `null` for that so it's encoded as\n * normal.\n *\n * @param {any} obj\n * @returns {cborg.Token[]|null}\n */\nfunction cidEncoder (obj) {\n if (obj.asCID !== obj && obj['/'] !== obj.bytes) {\n return null // any other kind of object\n }\n const cid = CID.asCID(obj)\n /* c8 ignore next 4 */\n // very unlikely case, and it'll probably throw a recursion error in cborg\n if (!cid) {\n return null\n }\n const bytes = new Uint8Array(cid.bytes.byteLength + 1)\n bytes.set(cid.bytes, 1) // prefix is 0x00, for historical reasons\n return [\n new cborg.Token(cborg.Type.tag, CID_CBOR_TAG),\n new cborg.Token(cborg.Type.bytes, bytes)\n ]\n}\n\n// eslint-disable-next-line jsdoc/require-returns-check\n/**\n * Intercept all `undefined` values from an object walk and reject the entire\n * object if we find one.\n *\n * @returns {null}\n */\nfunction undefinedEncoder () {\n throw new Error('`undefined` is not supported by the IPLD Data Model and cannot be encoded')\n}\n\n/**\n * Intercept all `number` values from an object walk and reject the entire\n * object if we find something that doesn't fit the IPLD data model (NaN &\n * Infinity).\n *\n * @param {number} num\n * @returns {null}\n */\nfunction numberEncoder (num) {\n if (Number.isNaN(num)) {\n throw new Error('`NaN` is not supported by the IPLD Data Model and cannot be encoded')\n }\n if (num === Infinity || num === -Infinity) {\n throw new Error('`Infinity` and `-Infinity` is not supported by the IPLD Data Model and cannot be encoded')\n }\n return null\n}\n\nconst encodeOptions = {\n float64: true,\n typeEncoders: {\n Object: cidEncoder,\n undefined: undefinedEncoder,\n number: numberEncoder\n }\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {CID}\n */\nfunction cidDecoder (bytes) {\n if (bytes[0] !== 0) {\n throw new Error('Invalid CID for CBOR tag 42; expected leading 0x00')\n }\n return CID.decode(bytes.subarray(1)) // ignore leading 0x00\n}\n\nconst decodeOptions = {\n allowIndefinite: false,\n coerceUndefinedToNull: true,\n allowNaN: false,\n allowInfinity: false,\n allowBigInt: true, // this will lead to BigInt for ints outside of\n // safe-integer range, which may surprise users\n strict: true,\n useMaps: false,\n rejectDuplicateMapKeys: true,\n /** @type {import('cborg').TagDecoder[]} */\n tags: []\n}\ndecodeOptions.tags[CID_CBOR_TAG] = cidDecoder\n\nexport const name = 'dag-cbor'\nexport const code = 0x71\n\n/**\n * @template T\n * @param {T} node\n * @returns {ByteView<T>}\n */\nexport const encode = (node) => cborg.encode(node, encodeOptions)\n\n/**\n * @template T\n * @param {ByteView<T>} data\n * @returns {T}\n */\nexport const decode = (data) => cborg.decode(data, decodeOptions)\n", "const typeofs = [\n 'string',\n 'number',\n 'bigint',\n 'symbol'\n];\nconst objectTypeNames = [\n 'Function',\n 'Generator',\n 'AsyncGenerator',\n 'GeneratorFunction',\n 'AsyncGeneratorFunction',\n 'AsyncFunction',\n 'Observable',\n 'Array',\n 'Buffer',\n 'Object',\n 'RegExp',\n 'Date',\n 'Error',\n 'Map',\n 'Set',\n 'WeakMap',\n 'WeakSet',\n 'ArrayBuffer',\n 'SharedArrayBuffer',\n 'DataView',\n 'Promise',\n 'URL',\n 'HTMLElement',\n 'Int8Array',\n 'Uint8Array',\n 'Uint8ClampedArray',\n 'Int16Array',\n 'Uint16Array',\n 'Int32Array',\n 'Uint32Array',\n 'Float32Array',\n 'Float64Array',\n 'BigInt64Array',\n 'BigUint64Array'\n];\nexport function is(value) {\n if (value === null) {\n return 'null';\n }\n if (value === undefined) {\n return 'undefined';\n }\n if (value === true || value === false) {\n return 'boolean';\n }\n const typeOf = typeof value;\n if (typeofs.includes(typeOf)) {\n return typeOf;\n }\n if (typeOf === 'function') {\n return 'Function';\n }\n if (Array.isArray(value)) {\n return 'Array';\n }\n if (isBuffer(value)) {\n return 'Buffer';\n }\n const objectType = getObjectType(value);\n if (objectType) {\n return objectType;\n }\n return 'Object';\n}\nfunction isBuffer(value) {\n return value && value.constructor && value.constructor.isBuffer && value.constructor.isBuffer.call(null, value);\n}\nfunction getObjectType(value) {\n const objectTypeName = Object.prototype.toString.call(value).slice(8, -1);\n if (objectTypeNames.includes(objectTypeName)) {\n return objectTypeName;\n }\n return undefined;\n}", "class Type {\n constructor(major, name, terminal) {\n this.major = major;\n this.majorEncoded = major << 5;\n this.name = name;\n this.terminal = terminal;\n }\n toString() {\n return `Type[${ this.major }].${ this.name }`;\n }\n compare(typ) {\n return this.major < typ.major ? -1 : this.major > typ.major ? 1 : 0;\n }\n}\nType.uint = new Type(0, 'uint', true);\nType.negint = new Type(1, 'negint', true);\nType.bytes = new Type(2, 'bytes', true);\nType.string = new Type(3, 'string', true);\nType.array = new Type(4, 'array', false);\nType.map = new Type(5, 'map', false);\nType.tag = new Type(6, 'tag', false);\nType.float = new Type(7, 'float', true);\nType.false = new Type(7, 'false', true);\nType.true = new Type(7, 'true', true);\nType.null = new Type(7, 'null', true);\nType.undefined = new Type(7, 'undefined', true);\nType.break = new Type(7, 'break', true);\nclass Token {\n constructor(type, value, encodedLength) {\n this.type = type;\n this.value = value;\n this.encodedLength = encodedLength;\n this.encodedBytes = undefined;\n this.byteValue = undefined;\n }\n toString() {\n return `Token[${ this.type }].${ this.value }`;\n }\n}\nexport {\n Type,\n Token\n};", "export const useBuffer = globalThis.process && !globalThis.process.browser && globalThis.Buffer && typeof globalThis.Buffer.isBuffer === 'function';\nconst textDecoder = new TextDecoder();\nconst textEncoder = new TextEncoder();\nfunction isBuffer(buf) {\n return useBuffer && globalThis.Buffer.isBuffer(buf);\n}\nexport function asU8A(buf) {\n if (!(buf instanceof Uint8Array)) {\n return Uint8Array.from(buf);\n }\n return isBuffer(buf) ? new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength) : buf;\n}\nexport const toString = useBuffer ? (bytes, start, end) => {\n return end - start > 64 ? globalThis.Buffer.from(bytes.subarray(start, end)).toString('utf8') : utf8Slice(bytes, start, end);\n} : (bytes, start, end) => {\n return end - start > 64 ? textDecoder.decode(bytes.subarray(start, end)) : utf8Slice(bytes, start, end);\n};\nexport const fromString = useBuffer ? string => {\n return string.length > 64 ? globalThis.Buffer.from(string) : utf8ToBytes(string);\n} : string => {\n return string.length > 64 ? textEncoder.encode(string) : utf8ToBytes(string);\n};\nexport const fromArray = arr => {\n return Uint8Array.from(arr);\n};\nexport const slice = useBuffer ? (bytes, start, end) => {\n if (isBuffer(bytes)) {\n return new Uint8Array(bytes.subarray(start, end));\n }\n return bytes.slice(start, end);\n} : (bytes, start, end) => {\n return bytes.slice(start, end);\n};\nexport const concat = useBuffer ? (chunks, length) => {\n chunks = chunks.map(c => c instanceof Uint8Array ? c : globalThis.Buffer.from(c));\n return asU8A(globalThis.Buffer.concat(chunks, length));\n} : (chunks, length) => {\n const out = new Uint8Array(length);\n let off = 0;\n for (let b of chunks) {\n if (off + b.length > out.length) {\n b = b.subarray(0, out.length - off);\n }\n out.set(b, off);\n off += b.length;\n }\n return out;\n};\nexport const alloc = useBuffer ? size => {\n return globalThis.Buffer.allocUnsafe(size);\n} : size => {\n return new Uint8Array(size);\n};\nexport const toHex = useBuffer ? d => {\n if (typeof d === 'string') {\n return d;\n }\n return globalThis.Buffer.from(toBytes(d)).toString('hex');\n} : d => {\n if (typeof d === 'string') {\n return d;\n }\n return Array.prototype.reduce.call(toBytes(d), (p, c) => `${ p }${ c.toString(16).padStart(2, '0') }`, '');\n};\nexport const fromHex = useBuffer ? hex => {\n if (hex instanceof Uint8Array) {\n return hex;\n }\n return globalThis.Buffer.from(hex, 'hex');\n} : hex => {\n if (hex instanceof Uint8Array) {\n return hex;\n }\n if (!hex.length) {\n return new Uint8Array(0);\n }\n return new Uint8Array(hex.split('').map((c, i, d) => i % 2 === 0 ? `0x${ c }${ d[i + 1] }` : '').filter(Boolean).map(e => parseInt(e, 16)));\n};\nfunction toBytes(obj) {\n if (obj instanceof Uint8Array && obj.constructor.name === 'Uint8Array') {\n return obj;\n }\n if (obj instanceof ArrayBuffer) {\n return new Uint8Array(obj);\n }\n if (ArrayBuffer.isView(obj)) {\n return new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength);\n }\n throw new Error('Unknown type, must be binary type');\n}\nexport function compare(b1, b2) {\n if (isBuffer(b1) && isBuffer(b2)) {\n return b1.compare(b2);\n }\n for (let i = 0; i < b1.length; i++) {\n if (b1[i] === b2[i]) {\n continue;\n }\n return b1[i] < b2[i] ? -1 : 1;\n }\n return 0;\n}\nfunction utf8ToBytes(string, units = Infinity) {\n let codePoint;\n const length = string.length;\n let leadSurrogate = null;\n const bytes = [];\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n if (codePoint > 55295 && codePoint < 57344) {\n if (!leadSurrogate) {\n if (codePoint > 56319) {\n if ((units -= 3) > -1)\n bytes.push(239, 191, 189);\n continue;\n } else if (i + 1 === length) {\n if ((units -= 3) > -1)\n bytes.push(239, 191, 189);\n continue;\n }\n leadSurrogate = codePoint;\n continue;\n }\n if (codePoint < 56320) {\n if ((units -= 3) > -1)\n bytes.push(239, 191, 189);\n leadSurrogate = codePoint;\n continue;\n }\n codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n } else if (leadSurrogate) {\n if ((units -= 3) > -1)\n bytes.push(239, 191, 189);\n }\n leadSurrogate = null;\n if (codePoint < 128) {\n if ((units -= 1) < 0)\n break;\n bytes.push(codePoint);\n } else if (codePoint < 2048) {\n if ((units -= 2) < 0)\n break;\n bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n } else if (codePoint < 65536) {\n if ((units -= 3) < 0)\n break;\n bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n } else if (codePoint < 1114112) {\n if ((units -= 4) < 0)\n break;\n bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n } else {\n throw new Error('Invalid code point');\n }\n }\n return bytes;\n}\nfunction utf8Slice(buf, offset, end) {\n const res = [];\n while (offset < end) {\n const firstByte = buf[offset];\n let codePoint = null;\n let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n if (offset + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint;\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 128) {\n codePoint = firstByte;\n }\n break;\n case 2:\n secondByte = buf[offset + 1];\n if ((secondByte & 192) === 128) {\n tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n if (tempCodePoint > 127) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 3:\n secondByte = buf[offset + 1];\n thirdByte = buf[offset + 2];\n if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 4:\n secondByte = buf[offset + 1];\n thirdByte = buf[offset + 2];\n fourthByte = buf[offset + 3];\n if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n if (codePoint === null) {\n codePoint = 65533;\n bytesPerSequence = 1;\n } else if (codePoint > 65535) {\n codePoint -= 65536;\n res.push(codePoint >>> 10 & 1023 | 55296);\n codePoint = 56320 | codePoint & 1023;\n }\n res.push(codePoint);\n offset += bytesPerSequence;\n }\n return decodeCodePointsArray(res);\n}\nconst MAX_ARGUMENTS_LENGTH = 4096;\nexport function decodeCodePointsArray(codePoints) {\n const len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints);\n }\n let res = '';\n let i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n return res;\n}", "import {\n alloc,\n concat,\n slice\n} from './byte-utils.js';\nconst defaultChunkSize = 256;\nexport class Bl {\n constructor(chunkSize = defaultChunkSize) {\n this.chunkSize = chunkSize;\n this.cursor = 0;\n this.maxCursor = -1;\n this.chunks = [];\n this._initReuseChunk = null;\n }\n reset() {\n this.cursor = 0;\n this.maxCursor = -1;\n if (this.chunks.length) {\n this.chunks = [];\n }\n if (this._initReuseChunk !== null) {\n this.chunks.push(this._initReuseChunk);\n this.maxCursor = this._initReuseChunk.length - 1;\n }\n }\n push(bytes) {\n let topChunk = this.chunks[this.chunks.length - 1];\n const newMax = this.cursor + bytes.length;\n if (newMax <= this.maxCursor + 1) {\n const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1;\n topChunk.set(bytes, chunkPos);\n } else {\n if (topChunk) {\n const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1;\n if (chunkPos < topChunk.length) {\n this.chunks[this.chunks.length - 1] = topChunk.subarray(0, chunkPos);\n this.maxCursor = this.cursor - 1;\n }\n }\n if (bytes.length < 64 && bytes.length < this.chunkSize) {\n topChunk = alloc(this.chunkSize);\n this.chunks.push(topChunk);\n this.maxCursor += topChunk.length;\n if (this._initReuseChunk === null) {\n this._initReuseChunk = topChunk;\n }\n topChunk.set(bytes, 0);\n } else {\n this.chunks.push(bytes);\n this.maxCursor += bytes.length;\n }\n }\n this.cursor += bytes.length;\n }\n toBytes(reset = false) {\n let byts;\n if (this.chunks.length === 1) {\n const chunk = this.chunks[0];\n if (reset && this.cursor > chunk.length / 2) {\n byts = this.cursor === chunk.length ? chunk : chunk.subarray(0, this.cursor);\n this._initReuseChunk = null;\n this.chunks = [];\n } else {\n byts = slice(chunk, 0, this.cursor);\n }\n } else {\n byts = concat(this.chunks, this.cursor);\n }\n if (reset) {\n this.reset();\n }\n return byts;\n }\n}", "const decodeErrPrefix = 'CBOR decode error:';\nconst encodeErrPrefix = 'CBOR encode error:';\nconst uintMinorPrefixBytes = [];\nuintMinorPrefixBytes[23] = 1;\nuintMinorPrefixBytes[24] = 2;\nuintMinorPrefixBytes[25] = 3;\nuintMinorPrefixBytes[26] = 5;\nuintMinorPrefixBytes[27] = 9;\nfunction assertEnoughData(data, pos, need) {\n if (data.length - pos < need) {\n throw new Error(`${ decodeErrPrefix } not enough data for type`);\n }\n}\nexport {\n decodeErrPrefix,\n encodeErrPrefix,\n uintMinorPrefixBytes,\n assertEnoughData\n};", "import {\n Token,\n Type\n} from './token.js';\nimport {\n decodeErrPrefix,\n assertEnoughData\n} from './common.js';\nexport const uintBoundaries = [\n 24,\n 256,\n 65536,\n 4294967296,\n BigInt('18446744073709551616')\n];\nexport function readUint8(data, offset, options) {\n assertEnoughData(data, offset, 1);\n const value = data[offset];\n if (options.strict === true && value < uintBoundaries[0]) {\n throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n }\n return value;\n}\nexport function readUint16(data, offset, options) {\n assertEnoughData(data, offset, 2);\n const value = data[offset] << 8 | data[offset + 1];\n if (options.strict === true && value < uintBoundaries[1]) {\n throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n }\n return value;\n}\nexport function readUint32(data, offset, options) {\n assertEnoughData(data, offset, 4);\n const value = data[offset] * 16777216 + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3];\n if (options.strict === true && value < uintBoundaries[2]) {\n throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n }\n return value;\n}\nexport function readUint64(data, offset, options) {\n assertEnoughData(data, offset, 8);\n const hi = data[offset] * 16777216 + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3];\n const lo = data[offset + 4] * 16777216 + (data[offset + 5] << 16) + (data[offset + 6] << 8) + data[offset + 7];\n const value = (BigInt(hi) << BigInt(32)) + BigInt(lo);\n if (options.strict === true && value < uintBoundaries[3]) {\n throw new Error(`${ decodeErrPrefix } integer encoded in more bytes than necessary (strict decode)`);\n }\n if (value <= Number.MAX_SAFE_INTEGER) {\n return Number(value);\n }\n if (options.allowBigInt === true) {\n return value;\n }\n throw new Error(`${ decodeErrPrefix } integers outside of the safe integer range are not supported`);\n}\nexport function decodeUint8(data, pos, _minor, options) {\n return new Token(Type.uint, readUint8(data, pos + 1, options), 2);\n}\nexport function decodeUint16(data, pos, _minor, options) {\n return new Token(Type.uint, readUint16(data, pos + 1, options), 3);\n}\nexport function decodeUint32(data, pos, _minor, options) {\n return new Token(Type.uint, readUint32(data, pos + 1, options), 5);\n}\nexport function decodeUint64(data, pos, _minor, options) {\n return new Token(Type.uint, readUint64(data, pos + 1, options), 9);\n}\nexport function encodeUint(buf, token) {\n return encodeUintValue(buf, 0, token.value);\n}\nexport function encodeUintValue(buf, major, uint) {\n if (uint < uintBoundaries[0]) {\n const nuint = Number(uint);\n buf.push([major | nuint]);\n } else if (uint < uintBoundaries[1]) {\n const nuint = Number(uint);\n buf.push([\n major | 24,\n nuint\n ]);\n } else if (uint < uintBoundaries[2]) {\n const nuint = Number(uint);\n buf.push([\n major | 25,\n nuint >>> 8,\n nuint & 255\n ]);\n } else if (uint < uintBoundaries[3]) {\n const nuint = Number(uint);\n buf.push([\n major | 26,\n nuint >>> 24 & 255,\n nuint >>> 16 & 255,\n nuint >>> 8 & 255,\n nuint & 255\n ]);\n } else {\n const buint = BigInt(uint);\n if (buint < uintBoundaries[4]) {\n const set = [\n major | 27,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0,\n 0\n ];\n let lo = Number(buint & BigInt(4294967295));\n let hi = Number(buint >> BigInt(32) & BigInt(4294967295));\n set[8] = lo & 255;\n lo = lo >> 8;\n set[7] = lo & 255;\n lo = lo >> 8;\n set[6] = lo & 255;\n lo = lo >> 8;\n set[5] = lo & 255;\n set[4] = hi & 255;\n hi = hi >> 8;\n set[3] = hi & 255;\n hi = hi >> 8;\n set[2] = hi & 255;\n hi = hi >> 8;\n set[1] = hi & 255;\n buf.push(set);\n } else {\n throw new Error(`${ decodeErrPrefix } encountered BigInt larger than allowable range`);\n }\n }\n}\nencodeUint.encodedSize = function encodedSize(token) {\n return encodeUintValue.encodedSize(token.value);\n};\nencodeUintValue.encodedSize = function encodedSize(uint) {\n if (uint < uintBoundaries[0]) {\n return 1;\n }\n if (uint < uintBoundaries[1]) {\n return 2;\n }\n if (uint < uintBoundaries[2]) {\n return 3;\n }\n if (uint < uintBoundaries[3]) {\n return 5;\n }\n return 9;\n};\nencodeUint.compareTokens = function compareTokens(tok1, tok2) {\n return tok1.value < tok2.value ? -1 : tok1.value > tok2.value ? 1 : 0;\n};", "import {\n Token,\n Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nexport function decodeNegint8(data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint8(data, pos + 1, options), 2);\n}\nexport function decodeNegint16(data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint16(data, pos + 1, options), 3);\n}\nexport function decodeNegint32(data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint32(data, pos + 1, options), 5);\n}\nconst neg1b = BigInt(-1);\nconst pos1b = BigInt(1);\nexport function decodeNegint64(data, pos, _minor, options) {\n const int = uint.readUint64(data, pos + 1, options);\n if (typeof int !== 'bigint') {\n const value = -1 - int;\n if (value >= Number.MIN_SAFE_INTEGER) {\n return new Token(Type.negint, value, 9);\n }\n }\n if (options.allowBigInt !== true) {\n throw new Error(`${ decodeErrPrefix } integers outside of the safe integer range are not supported`);\n }\n return new Token(Type.negint, neg1b - BigInt(int), 9);\n}\nexport function encodeNegint(buf, token) {\n const negint = token.value;\n const unsigned = typeof negint === 'bigint' ? negint * neg1b - pos1b : negint * -1 - 1;\n uint.encodeUintValue(buf, token.type.majorEncoded, unsigned);\n}\nencodeNegint.encodedSize = function encodedSize(token) {\n const negint = token.value;\n const unsigned = typeof negint === 'bigint' ? negint * neg1b - pos1b : negint * -1 - 1;\n if (unsigned < uint.uintBoundaries[0]) {\n return 1;\n }\n if (unsigned < uint.uintBoundaries[1]) {\n return 2;\n }\n if (unsigned < uint.uintBoundaries[2]) {\n return 3;\n }\n if (unsigned < uint.uintBoundaries[3]) {\n return 5;\n }\n return 9;\n};\nencodeNegint.compareTokens = function compareTokens(tok1, tok2) {\n return tok1.value < tok2.value ? 1 : tok1.value > tok2.value ? -1 : 0;\n};", "import {\n Token,\n Type\n} from './token.js';\nimport {\n assertEnoughData,\n decodeErrPrefix\n} from './common.js';\nimport * as uint from './0uint.js';\nimport {\n compare,\n fromString,\n slice\n} from './byte-utils.js';\nfunction toToken(data, pos, prefix, length) {\n assertEnoughData(data, pos, prefix + length);\n const buf = slice(data, pos + prefix, pos + prefix + length);\n return new Token(Type.bytes, buf, prefix + length);\n}\nexport function decodeBytesCompact(data, pos, minor, _options) {\n return toToken(data, pos, 1, minor);\n}\nexport function decodeBytes8(data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeBytes16(data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeBytes32(data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeBytes64(data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options);\n if (typeof l === 'bigint') {\n throw new Error(`${ decodeErrPrefix } 64-bit integer bytes lengths not supported`);\n }\n return toToken(data, pos, 9, l);\n}\nfunction tokenBytes(token) {\n if (token.encodedBytes === undefined) {\n token.encodedBytes = token.type === Type.string ? fromString(token.value) : token.value;\n }\n return token.encodedBytes;\n}\nexport function encodeBytes(buf, token) {\n const bytes = tokenBytes(token);\n uint.encodeUintValue(buf, token.type.majorEncoded, bytes.length);\n buf.push(bytes);\n}\nencodeBytes.encodedSize = function encodedSize(token) {\n const bytes = tokenBytes(token);\n return uint.encodeUintValue.encodedSize(bytes.length) + bytes.length;\n};\nencodeBytes.compareTokens = function compareTokens(tok1, tok2) {\n return compareBytes(tokenBytes(tok1), tokenBytes(tok2));\n};\nexport function compareBytes(b1, b2) {\n return b1.length < b2.length ? -1 : b1.length > b2.length ? 1 : compare(b1, b2);\n}", "import {\n Token,\n Type\n} from './token.js';\nimport {\n assertEnoughData,\n decodeErrPrefix\n} from './common.js';\nimport * as uint from './0uint.js';\nimport { encodeBytes } from './2bytes.js';\nimport {\n toString,\n slice\n} from './byte-utils.js';\nfunction toToken(data, pos, prefix, length, options) {\n const totLength = prefix + length;\n assertEnoughData(data, pos, totLength);\n const tok = new Token(Type.string, toString(data, pos + prefix, pos + totLength), totLength);\n if (options.retainStringBytes === true) {\n tok.byteValue = slice(data, pos + prefix, pos + totLength);\n }\n return tok;\n}\nexport function decodeStringCompact(data, pos, minor, options) {\n return toToken(data, pos, 1, minor, options);\n}\nexport function decodeString8(data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options), options);\n}\nexport function decodeString16(data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options), options);\n}\nexport function decodeString32(data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options), options);\n}\nexport function decodeString64(data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options);\n if (typeof l === 'bigint') {\n throw new Error(`${ decodeErrPrefix } 64-bit integer string lengths not supported`);\n }\n return toToken(data, pos, 9, l, options);\n}\nexport const encodeString = encodeBytes;", "import {\n Token,\n Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nfunction toToken(_data, _pos, prefix, length) {\n return new Token(Type.array, length, prefix);\n}\nexport function decodeArrayCompact(data, pos, minor, _options) {\n return toToken(data, pos, 1, minor);\n}\nexport function decodeArray8(data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeArray16(data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeArray32(data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeArray64(data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options);\n if (typeof l === 'bigint') {\n throw new Error(`${ decodeErrPrefix } 64-bit integer array lengths not supported`);\n }\n return toToken(data, pos, 9, l);\n}\nexport function decodeArrayIndefinite(data, pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n }\n return toToken(data, pos, 1, Infinity);\n}\nexport function encodeArray(buf, token) {\n uint.encodeUintValue(buf, Type.array.majorEncoded, token.value);\n}\nencodeArray.compareTokens = uint.encodeUint.compareTokens;\nencodeArray.encodedSize = function encodedSize(token) {\n return uint.encodeUintValue.encodedSize(token.value);\n};", "import {\n Token,\n Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport { decodeErrPrefix } from './common.js';\nfunction toToken(_data, _pos, prefix, length) {\n return new Token(Type.map, length, prefix);\n}\nexport function decodeMapCompact(data, pos, minor, _options) {\n return toToken(data, pos, 1, minor);\n}\nexport function decodeMap8(data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options));\n}\nexport function decodeMap16(data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options));\n}\nexport function decodeMap32(data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options));\n}\nexport function decodeMap64(data, pos, _minor, options) {\n const l = uint.readUint64(data, pos + 1, options);\n if (typeof l === 'bigint') {\n throw new Error(`${ decodeErrPrefix } 64-bit integer map lengths not supported`);\n }\n return toToken(data, pos, 9, l);\n}\nexport function decodeMapIndefinite(data, pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n }\n return toToken(data, pos, 1, Infinity);\n}\nexport function encodeMap(buf, token) {\n uint.encodeUintValue(buf, Type.map.majorEncoded, token.value);\n}\nencodeMap.compareTokens = uint.encodeUint.compareTokens;\nencodeMap.encodedSize = function encodedSize(token) {\n return uint.encodeUintValue.encodedSize(token.value);\n};", "import {\n Token,\n Type\n} from './token.js';\nimport * as uint from './0uint.js';\nexport function decodeTagCompact(_data, _pos, minor, _options) {\n return new Token(Type.tag, minor, 1);\n}\nexport function decodeTag8(data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint8(data, pos + 1, options), 2);\n}\nexport function decodeTag16(data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint16(data, pos + 1, options), 3);\n}\nexport function decodeTag32(data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint32(data, pos + 1, options), 5);\n}\nexport function decodeTag64(data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint64(data, pos + 1, options), 9);\n}\nexport function encodeTag(buf, token) {\n uint.encodeUintValue(buf, Type.tag.majorEncoded, token.value);\n}\nencodeTag.compareTokens = uint.encodeUint.compareTokens;\nencodeTag.encodedSize = function encodedSize(token) {\n return uint.encodeUintValue.encodedSize(token.value);\n};", "import {\n Token,\n Type\n} from './token.js';\nimport { decodeErrPrefix } from './common.js';\nimport { encodeUint } from './0uint.js';\nconst MINOR_FALSE = 20;\nconst MINOR_TRUE = 21;\nconst MINOR_NULL = 22;\nconst MINOR_UNDEFINED = 23;\nexport function decodeUndefined(_data, _pos, _minor, options) {\n if (options.allowUndefined === false) {\n throw new Error(`${ decodeErrPrefix } undefined values are not supported`);\n } else if (options.coerceUndefinedToNull === true) {\n return new Token(Type.null, null, 1);\n }\n return new Token(Type.undefined, undefined, 1);\n}\nexport function decodeBreak(_data, _pos, _minor, options) {\n if (options.allowIndefinite === false) {\n throw new Error(`${ decodeErrPrefix } indefinite length items not allowed`);\n }\n return new Token(Type.break, undefined, 1);\n}\nfunction createToken(value, bytes, options) {\n if (options) {\n if (options.allowNaN === false && Number.isNaN(value)) {\n throw new Error(`${ decodeErrPrefix } NaN values are not supported`);\n }\n if (options.allowInfinity === false && (value === Infinity || value === -Infinity)) {\n throw new Error(`${ decodeErrPrefix } Infinity values are not supported`);\n }\n }\n return new Token(Type.float, value, bytes);\n}\nexport function decodeFloat16(data, pos, _minor, options) {\n return createToken(readFloat16(data, pos + 1), 3, options);\n}\nexport function decodeFloat32(data, pos, _minor, options) {\n return createToken(readFloat32(data, pos + 1), 5, options);\n}\nexport function decodeFloat64(data, pos, _minor, options) {\n return createToken(readFloat64(data, pos + 1), 9, options);\n}\nexport function encodeFloat(buf, token, options) {\n const float = token.value;\n if (float === false) {\n buf.push([Type.float.majorEncoded | MINOR_FALSE]);\n } else if (float === true) {\n buf.push([Type.float.majorEncoded | MINOR_TRUE]);\n } else if (float === null) {\n buf.push([Type.float.majorEncoded | MINOR_NULL]);\n } else if (float === undefined) {\n buf.push([Type.float.majorEncoded | MINOR_UNDEFINED]);\n } else {\n let decoded;\n let success = false;\n if (!options || options.float64 !== true) {\n encodeFloat16(float);\n decoded = readFloat16(ui8a, 1);\n if (float === decoded || Number.isNaN(float)) {\n ui8a[0] = 249;\n buf.push(ui8a.slice(0, 3));\n success = true;\n } else {\n encodeFloat32(float);\n decoded = readFloat32(ui8a, 1);\n if (float === decoded) {\n ui8a[0] = 250;\n buf.push(ui8a.slice(0, 5));\n success = true;\n }\n }\n }\n if (!success) {\n encodeFloat64(float);\n decoded = readFloat64(ui8a, 1);\n ui8a[0] = 251;\n buf.push(ui8a.slice(0, 9));\n }\n }\n}\nencodeFloat.encodedSize = function encodedSize(token, options) {\n const float = token.value;\n if (float === false || float === true || float === null || float === undefined) {\n return 1;\n }\n if (!options || options.float64 !== true) {\n encodeFloat16(float);\n let decoded = readFloat16(ui8a, 1);\n if (float === decoded || Number.isNaN(float)) {\n return 3;\n }\n encodeFloat32(float);\n decoded = readFloat32(ui8a, 1);\n if (float === decoded) {\n return 5;\n }\n }\n return 9;\n};\nconst buffer = new ArrayBuffer(9);\nconst dataView = new DataView(buffer, 1);\nconst ui8a = new Uint8Array(buffer, 0);\nfunction encodeFloat16(inp) {\n if (inp === Infinity) {\n dataView.setUint16(0, 31744, false);\n } else if (inp === -Infinity) {\n dataView.setUint16(0, 64512, false);\n } else if (Number.isNaN(inp)) {\n dataView.setUint16(0, 32256, false);\n } else {\n dataView.setFloat32(0, inp);\n const valu32 = dataView.getUint32(0);\n const exponent = (valu32 & 2139095040) >> 23;\n const mantissa = valu32 & 8388607;\n if (exponent === 255) {\n dataView.setUint16(0, 31744, false);\n } else if (exponent === 0) {\n dataView.setUint16(0, (inp & 2147483648) >> 16 | mantissa >> 13, false);\n } else {\n const logicalExponent = exponent - 127;\n if (logicalExponent < -24) {\n dataView.setUint16(0, 0);\n } else if (logicalExponent < -14) {\n dataView.setUint16(0, (valu32 & 2147483648) >> 16 | 1 << 24 + logicalExponent, false);\n } else {\n dataView.setUint16(0, (valu32 & 2147483648) >> 16 | logicalExponent + 15 << 10 | mantissa >> 13, false);\n }\n }\n }\n}\nfunction readFloat16(ui8a, pos) {\n if (ui8a.length - pos < 2) {\n throw new Error(`${ decodeErrPrefix } not enough data for float16`);\n }\n const half = (ui8a[pos] << 8) + ui8a[pos + 1];\n if (half === 31744) {\n return Infinity;\n }\n if (half === 64512) {\n return -Infinity;\n }\n if (half === 32256) {\n return NaN;\n }\n const exp = half >> 10 & 31;\n const mant = half & 1023;\n let val;\n if (exp === 0) {\n val = mant * 2 ** -24;\n } else if (exp !== 31) {\n val = (mant + 1024) * 2 ** (exp - 25);\n } else {\n val = mant === 0 ? Infinity : NaN;\n }\n return half & 32768 ? -val : val;\n}\nfunction encodeFloat32(inp) {\n dataView.setFloat32(0, inp, false);\n}\nfunction readFloat32(ui8a, pos) {\n if (ui8a.length - pos < 4) {\n throw new Error(`${ decodeErrPrefix } not enough data for float32`);\n }\n const offset = (ui8a.byteOffset || 0) + pos;\n return new DataView(ui8a.buffer, offset, 4).getFloat32(0, false);\n}\nfunction encodeFloat64(inp) {\n dataView.setFloat64(0, inp, false);\n}\nfunction readFloat64(ui8a, pos) {\n if (ui8a.length - pos < 8) {\n throw new Error(`${ decodeErrPrefix } not enough data for float64`);\n }\n const offset = (ui8a.byteOffset || 0) + pos;\n return new DataView(ui8a.buffer, offset, 8).getFloat64(0, false);\n}\nencodeFloat.compareTokens = encodeUint.compareTokens;", "import {\n Token,\n Type\n} from './token.js';\nimport * as uint from './0uint.js';\nimport * as negint from './1negint.js';\nimport * as bytes from './2bytes.js';\nimport * as string from './3string.js';\nimport * as array from './4array.js';\nimport * as map from './5map.js';\nimport * as tag from './6tag.js';\nimport * as float from './7float.js';\nimport { decodeErrPrefix } from './common.js';\nimport { fromArray } from './byte-utils.js';\nfunction invalidMinor(data, pos, minor) {\n throw new Error(`${ decodeErrPrefix } encountered invalid minor (${ minor }) for major ${ data[pos] >>> 5 }`);\n}\nfunction errorer(msg) {\n return () => {\n throw new Error(`${ decodeErrPrefix } ${ msg }`);\n };\n}\nexport const jump = [];\nfor (let i = 0; i <= 23; i++) {\n jump[i] = invalidMinor;\n}\njump[24] = uint.decodeUint8;\njump[25] = uint.decodeUint16;\njump[26] = uint.decodeUint32;\njump[27] = uint.decodeUint64;\njump[28] = invalidMinor;\njump[29] = invalidMinor;\njump[30] = invalidMinor;\njump[31] = invalidMinor;\nfor (let i = 32; i <= 55; i++) {\n jump[i] = invalidMinor;\n}\njump[56] = negint.decodeNegint8;\njump[57] = negint.decodeNegint16;\njump[58] = negint.decodeNegint32;\njump[59] = negint.decodeNegint64;\njump[60] = invalidMinor;\njump[61] = invalidMinor;\njump[62] = invalidMinor;\njump[63] = invalidMinor;\nfor (let i = 64; i <= 87; i++) {\n jump[i] = bytes.decodeBytesCompact;\n}\njump[88] = bytes.decodeBytes8;\njump[89] = bytes.decodeBytes16;\njump[90] = bytes.decodeBytes32;\njump[91] = bytes.decodeBytes64;\njump[92] = invalidMinor;\njump[93] = invalidMinor;\njump[94] = invalidMinor;\njump[95] = errorer('indefinite length bytes/strings are not supported');\nfor (let i = 96; i <= 119; i++) {\n jump[i] = string.decodeStringCompact;\n}\njump[120] = string.decodeString8;\njump[121] = string.decodeString16;\njump[122] = string.decodeString32;\njump[123] = string.decodeString64;\njump[124] = invalidMinor;\njump[125] = invalidMinor;\njump[126] = invalidMinor;\njump[127] = errorer('indefinite length bytes/strings are not supported');\nfor (let i = 128; i <= 151; i++) {\n jump[i] = array.decodeArrayCompact;\n}\njump[152] = array.decodeArray8;\njump[153] = array.decodeArray16;\njump[154] = array.decodeArray32;\njump[155] = array.decodeArray64;\njump[156] = invalidMinor;\njump[157] = invalidMinor;\njump[158] = invalidMinor;\njump[159] = array.decodeArrayIndefinite;\nfor (let i = 160; i <= 183; i++) {\n jump[i] = map.decodeMapCompact;\n}\njump[184] = map.decodeMap8;\njump[185] = map.decodeMap16;\njump[186] = map.decodeMap32;\njump[187] = map.decodeMap64;\njump[188] = invalidMinor;\njump[189] = invalidMinor;\njump[190] = invalidMinor;\njump[191] = map.decodeMapIndefinite;\nfor (let i = 192; i <= 215; i++) {\n jump[i] = tag.decodeTagCompact;\n}\njump[216] = tag.decodeTag8;\njump[217] = tag.decodeTag16;\njump[218] = tag.decodeTag32;\njump[219] = tag.decodeTag64;\njump[220] = invalidMinor;\njump[221] = invalidMinor;\njump[222] = invalidMinor;\njump[223] = invalidMinor;\nfor (let i = 224; i <= 243; i++) {\n jump[i] = errorer('simple values are not supported');\n}\njump[244] = invalidMinor;\njump[245] = invalidMinor;\njump[246] = invalidMinor;\njump[247] = float.decodeUndefined;\njump[248] = errorer('simple values are not supported');\njump[249] = float.decodeFloat16;\njump[250] = float.decodeFloat32;\njump[251] = float.decodeFloat64;\njump[252] = invalidMinor;\njump[253] = invalidMinor;\njump[254] = invalidMinor;\njump[255] = float.decodeBreak;\nexport const quick = [];\nfor (let i = 0; i < 24; i++) {\n quick[i] = new Token(Type.uint, i, 1);\n}\nfor (let i = -1; i >= -24; i--) {\n quick[31 - i] = new Token(Type.negint, i, 1);\n}\nquick[64] = new Token(Type.bytes, new Uint8Array(0), 1);\nquick[96] = new Token(Type.string, '', 1);\nquick[128] = new Token(Type.array, 0, 1);\nquick[160] = new Token(Type.map, 0, 1);\nquick[244] = new Token(Type.false, false, 1);\nquick[245] = new Token(Type.true, true, 1);\nquick[246] = new Token(Type.null, null, 1);\nexport function quickEncodeToken(token) {\n switch (token.type) {\n case Type.false:\n return fromArray([244]);\n case Type.true:\n return fromArray([245]);\n case Type.null:\n return fromArray([246]);\n case Type.bytes:\n if (!token.value.length) {\n return fromArray([64]);\n }\n return;\n case Type.string:\n if (token.value === '') {\n return fromArray([96]);\n }\n return;\n case Type.array:\n if (token.value === 0) {\n return fromArray([128]);\n }\n return;\n case Type.map:\n if (token.value === 0) {\n return fromArray([160]);\n }\n return;\n case Type.uint:\n if (token.value < 24) {\n return fromArray([Number(token.value)]);\n }\n return;\n case Type.negint:\n if (token.value >= -24) {\n return fromArray([31 - Number(token.value)]);\n }\n }\n}", "import { is } from './is.js';\nimport {\n Token,\n Type\n} from './token.js';\nimport { Bl } from './bl.js';\nimport { encodeErrPrefix } from './common.js';\nimport { quickEncodeToken } from './jump.js';\nimport { asU8A } from './byte-utils.js';\nimport { encodeUint } from './0uint.js';\nimport { encodeNegint } from './1negint.js';\nimport { encodeBytes } from './2bytes.js';\nimport { encodeString } from './3string.js';\nimport { encodeArray } from './4array.js';\nimport { encodeMap } from './5map.js';\nimport { encodeTag } from './6tag.js';\nimport { encodeFloat } from './7float.js';\nconst defaultEncodeOptions = {\n float64: false,\n mapSorter,\n quickEncodeToken\n};\nexport function makeCborEncoders() {\n const encoders = [];\n encoders[Type.uint.major] = encodeUint;\n encoders[Type.negint.major] = encodeNegint;\n encoders[Type.bytes.major] = encodeBytes;\n encoders[Type.string.major] = encodeString;\n encoders[Type.array.major] = encodeArray;\n encoders[Type.map.major] = encodeMap;\n encoders[Type.tag.major] = encodeTag;\n encoders[Type.float.major] = encodeFloat;\n return encoders;\n}\nconst cborEncoders = makeCborEncoders();\nconst buf = new Bl();\nclass Ref {\n constructor(obj, parent) {\n this.obj = obj;\n this.parent = parent;\n }\n includes(obj) {\n let p = this;\n do {\n if (p.obj === obj) {\n return true;\n }\n } while (p = p.parent);\n return false;\n }\n static createCheck(stack, obj) {\n if (stack && stack.includes(obj)) {\n throw new Error(`${ encodeErrPrefix } object contains circular references`);\n }\n return new Ref(obj, stack);\n }\n}\nconst simpleTokens = {\n null: new Token(Type.null, null),\n undefined: new Token(Type.undefined, undefined),\n true: new Token(Type.true, true),\n false: new Token(Type.false, false),\n emptyArray: new Token(Type.array, 0),\n emptyMap: new Token(Type.map, 0)\n};\nconst typeEncoders = {\n number(obj, _typ, _options, _refStack) {\n if (!Number.isInteger(obj) || !Number.isSafeInteger(obj)) {\n return new Token(Type.float, obj);\n } else if (obj >= 0) {\n return new Token(Type.uint, obj);\n } else {\n return new Token(Type.negint, obj);\n }\n },\n bigint(obj, _typ, _options, _refStack) {\n if (obj >= BigInt(0)) {\n return new Token(Type.uint, obj);\n } else {\n return new Token(Type.negint, obj);\n }\n },\n Uint8Array(obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, obj);\n },\n string(obj, _typ, _options, _refStack) {\n return new Token(Type.string, obj);\n },\n boolean(obj, _typ, _options, _refStack) {\n return obj ? simpleTokens.true : simpleTokens.false;\n },\n null(_obj, _typ, _options, _refStack) {\n return simpleTokens.null;\n },\n undefined(_obj, _typ, _options, _refStack) {\n return simpleTokens.undefined;\n },\n ArrayBuffer(obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, new Uint8Array(obj));\n },\n DataView(obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength));\n },\n Array(obj, _typ, options, refStack) {\n if (!obj.length) {\n if (options.addBreakTokens === true) {\n return [\n simpleTokens.emptyArray,\n new Token(Type.break)\n ];\n }\n return simpleTokens.emptyArray;\n }\n refStack = Ref.createCheck(refStack, obj);\n const entries = [];\n let i = 0;\n for (const e of obj) {\n entries[i++] = objectToTokens(e, options, refStack);\n }\n if (options.addBreakTokens) {\n return [\n new Token(Type.array, obj.length),\n entries,\n new Token(Type.break)\n ];\n }\n return [\n new Token(Type.array, obj.length),\n entries\n ];\n },\n Object(obj, typ, options, refStack) {\n const isMap = typ !== 'Object';\n const keys = isMap ? obj.keys() : Object.keys(obj);\n const length = isMap ? obj.size : keys.length;\n if (!length) {\n if (options.addBreakTokens === true) {\n return [\n simpleTokens.emptyMap,\n new Token(Type.break)\n ];\n }\n return simpleTokens.emptyMap;\n }\n refStack = Ref.createCheck(refStack, obj);\n const entries = [];\n let i = 0;\n for (const key of keys) {\n entries[i++] = [\n objectToTokens(key, options, refStack),\n objectToTokens(isMap ? obj.get(key) : obj[key], options, refStack)\n ];\n }\n sortMapEntries(entries, options);\n if (options.addBreakTokens) {\n return [\n new Token(Type.map, length),\n entries,\n new Token(Type.break)\n ];\n }\n return [\n new Token(Type.map, length),\n entries\n ];\n }\n};\ntypeEncoders.Map = typeEncoders.Object;\ntypeEncoders.Buffer = typeEncoders.Uint8Array;\nfor (const typ of 'Uint8Clamped Uint16 Uint32 Int8 Int16 Int32 BigUint64 BigInt64 Float32 Float64'.split(' ')) {\n typeEncoders[`${ typ }Array`] = typeEncoders.DataView;\n}\nfunction objectToTokens(obj, options = {}, refStack) {\n const typ = is(obj);\n const customTypeEncoder = options && options.typeEncoders && options.typeEncoders[typ] || typeEncoders[typ];\n if (typeof customTypeEncoder === 'function') {\n const tokens = customTypeEncoder(obj, typ, options, refStack);\n if (tokens != null) {\n return tokens;\n }\n }\n const typeEncoder = typeEncoders[typ];\n if (!typeEncoder) {\n throw new Error(`${ encodeErrPrefix } unsupported type: ${ typ }`);\n }\n return typeEncoder(obj, typ, options, refStack);\n}\nfunction sortMapEntries(entries, options) {\n if (options.mapSorter) {\n entries.sort(options.mapSorter);\n }\n}\nfunction mapSorter(e1, e2) {\n const keyToken1 = Array.isArray(e1[0]) ? e1[0][0] : e1[0];\n const keyToken2 = Array.isArray(e2[0]) ? e2[0][0] : e2[0];\n if (keyToken1.type !== keyToken2.type) {\n return keyToken1.type.compare(keyToken2.type);\n }\n const major = keyToken1.type.major;\n const tcmp = cborEncoders[major].compareTokens(keyToken1, keyToken2);\n if (tcmp === 0) {\n console.warn('WARNING: complex key types used, CBOR key sorting guarantees are gone');\n }\n return tcmp;\n}\nfunction tokensToEncoded(buf, tokens, encoders, options) {\n if (Array.isArray(tokens)) {\n for (const token of tokens) {\n tokensToEncoded(buf, token, encoders, options);\n }\n } else {\n encoders[tokens.type.major](buf, tokens, options);\n }\n}\nfunction encodeCustom(data, encoders, options) {\n const tokens = objectToTokens(data, options);\n if (!Array.isArray(tokens) && options.quickEncodeToken) {\n const quickBytes = options.quickEncodeToken(tokens);\n if (quickBytes) {\n return quickBytes;\n }\n const encoder = encoders[tokens.type.major];\n if (encoder.encodedSize) {\n const size = encoder.encodedSize(tokens, options);\n const buf = new Bl(size);\n encoder(buf, tokens, options);\n if (buf.chunks.length !== 1) {\n throw new Error(`Unexpected error: pre-calculated length for ${ tokens } was wrong`);\n }\n return asU8A(buf.chunks[0]);\n }\n }\n buf.reset();\n tokensToEncoded(buf, tokens, encoders, options);\n return buf.toBytes(true);\n}\nfunction encode(data, options) {\n options = Object.assign({}, defaultEncodeOptions, options);\n return encodeCustom(data, cborEncoders, options);\n}\nexport {\n objectToTokens,\n encode,\n encodeCustom,\n Ref\n};", "import { decodeErrPrefix } from './common.js';\nimport { Type } from './token.js';\nimport {\n jump,\n quick\n} from './jump.js';\nconst defaultDecodeOptions = {\n strict: false,\n allowIndefinite: true,\n allowUndefined: true,\n allowBigInt: true\n};\nclass Tokeniser {\n constructor(data, options = {}) {\n this.pos = 0;\n this.data = data;\n this.options = options;\n }\n done() {\n return this.pos >= this.data.length;\n }\n next() {\n const byt = this.data[this.pos];\n let token = quick[byt];\n if (token === undefined) {\n const decoder = jump[byt];\n if (!decoder) {\n throw new Error(`${ decodeErrPrefix } no decoder for major type ${ byt >>> 5 } (byte 0x${ byt.toString(16).padStart(2, '0') })`);\n }\n const minor = byt & 31;\n token = decoder(this.data, this.pos, minor, this.options);\n }\n this.pos += token.encodedLength;\n return token;\n }\n}\nconst DONE = Symbol.for('DONE');\nconst BREAK = Symbol.for('BREAK');\nfunction tokenToArray(token, tokeniser, options) {\n const arr = [];\n for (let i = 0; i < token.value; i++) {\n const value = tokensToObject(tokeniser, options);\n if (value === BREAK) {\n if (token.value === Infinity) {\n break;\n }\n throw new Error(`${ decodeErrPrefix } got unexpected break to lengthed array`);\n }\n if (value === DONE) {\n throw new Error(`${ decodeErrPrefix } found array but not enough entries (got ${ i }, expected ${ token.value })`);\n }\n arr[i] = value;\n }\n return arr;\n}\nfunction tokenToMap(token, tokeniser, options) {\n const useMaps = options.useMaps === true;\n const obj = useMaps ? undefined : {};\n const m = useMaps ? new Map() : undefined;\n for (let i = 0; i < token.value; i++) {\n const key = tokensToObject(tokeniser, options);\n if (key === BREAK) {\n if (token.value === Infinity) {\n break;\n }\n throw new Error(`${ decodeErrPrefix } got unexpected break to lengthed map`);\n }\n if (key === DONE) {\n throw new Error(`${ decodeErrPrefix } found map but not enough entries (got ${ i } [no key], expected ${ token.value })`);\n }\n if (useMaps !== true && typeof key !== 'string') {\n throw new Error(`${ decodeErrPrefix } non-string keys not supported (got ${ typeof key })`);\n }\n if (options.rejectDuplicateMapKeys === true) {\n if (useMaps && m.has(key) || !useMaps && key in obj) {\n throw new Error(`${ decodeErrPrefix } found repeat map key \"${ key }\"`);\n }\n }\n const value = tokensToObject(tokeniser, options);\n if (value === DONE) {\n throw new Error(`${ decodeErrPrefix } found map but not enough entries (got ${ i } [no value], expected ${ token.value })`);\n }\n if (useMaps) {\n m.set(key, value);\n } else {\n obj[key] = value;\n }\n }\n return useMaps ? m : obj;\n}\nfunction tokensToObject(tokeniser, options) {\n if (tokeniser.done()) {\n return DONE;\n }\n const token = tokeniser.next();\n if (token.type === Type.break) {\n return BREAK;\n }\n if (token.type.terminal) {\n return token.value;\n }\n if (token.type === Type.array) {\n return tokenToArray(token, tokeniser, options);\n }\n if (token.type === Type.map) {\n return tokenToMap(token, tokeniser, options);\n }\n if (token.type === Type.tag) {\n if (options.tags && typeof options.tags[token.value] === 'function') {\n const tagged = tokensToObject(tokeniser, options);\n return options.tags[token.value](tagged);\n }\n throw new Error(`${ decodeErrPrefix } tag not supported (${ token.value })`);\n }\n throw new Error('unsupported');\n}\nfunction decode(data, options) {\n if (!(data instanceof Uint8Array)) {\n throw new Error(`${ decodeErrPrefix } data to decode must be a Uint8Array`);\n }\n options = Object.assign({}, defaultDecodeOptions, options);\n const tokeniser = options.tokenizer || new Tokeniser(data, options);\n const decoded = tokensToObject(tokeniser, options);\n if (decoded === DONE) {\n throw new Error(`${ decodeErrPrefix } did not find any content to decode`);\n }\n if (decoded === BREAK) {\n throw new Error(`${ decodeErrPrefix } got unexpected break`);\n }\n if (!tokeniser.done()) {\n throw new Error(`${ decodeErrPrefix } too many terminals, data makes no sense`);\n }\n return decoded;\n}\nexport {\n Tokeniser,\n tokensToObject,\n decode\n};", "import { BlockView, CID } from 'multiformats'\nimport { Block, encode, decode } from 'multiformats/block'\nimport { sha256 as hasher } from 'multiformats/hashes/sha2'\nimport * as raw from 'multiformats/codecs/raw'\nimport * as CBW from '@ipld/car/buffer-writer'\nimport * as codec from '@ipld/dag-cbor'\nimport { CarReader } from '@ipld/car'\n\nimport { Transaction } from './transaction'\nimport { AnyBlock, BulkResult, ClockHead, AnyLink } from './types'\n\nexport async function makeCarFile(\n t: Transaction,\n { head }: BulkResult,\n cars: AnyLink[]\n): Promise<BlockView<unknown, number, number, 1>> {\n if (!head) throw new Error('no head')\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call\n const fpCarHeaderBlock = (await encode({\n value: { fp: { head, cars } },\n hasher,\n codec\n })) as AnyBlock\n await t.put(fpCarHeaderBlock.cid, fpCarHeaderBlock.bytes)\n\n let size = 0\n const headerSize = CBW.headerLength({ roots: [fpCarHeaderBlock.cid as CID<unknown, number, number, 1>] })\n size += headerSize\n for (const { cid, bytes } of t.entries()) {\n size += CBW.blockLength({ cid, bytes } as Block<unknown, number, number, 1>)\n }\n const buffer = new Uint8Array(size)\n const writer = CBW.createWriter(buffer, { headerSize })\n\n writer.addRoot(fpCarHeaderBlock.cid as CID<unknown, number, number, 1>)\n\n for (const { cid, bytes } of t.entries()) {\n writer.write({ cid, bytes } as Block<unknown, number, number, 1>)\n }\n writer.close()\n return await encode({ value: writer.bytes, hasher, codec: raw })\n}\n\nexport async function parseCarFile(reader: CarReader): Promise<{ head: ClockHead; cars: AnyLink[] }> {\n const roots = await reader.getRoots()\n const header = await reader.get(roots[0])\n if (!header) throw new Error('missing header block')\n const got = await decode({ bytes: header.bytes, hasher, codec })\n const {\n fp: { head, cars }\n } = got.value as { fp: { head: ClockHead; cars: AnyLink[] } }\n return { head, cars }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA,WAAO,UAAUA;AAEjB,QAAIC,OAAM;AAAV,QACIC,QAAO;AADX,QAEIC,UAAS,CAACD;AAFd,QAGIE,OAAM,KAAK,IAAI,GAAG,EAAE;AAExB,aAASJ,QAAO,KAAK,KAAK,QAAQ;AAChC,UAAI,OAAO,oBAAoB,MAAM,OAAO,kBAAkB;AAC5D,QAAAA,QAAO,QAAQ;AACf,cAAM,IAAI,WAAW,yBAAyB;AAAA,MAChD;AACA,YAAM,OAAO,CAAC;AACd,eAAS,UAAU;AACnB,UAAI,YAAY;AAEhB,aAAM,OAAOI,MAAK;AAChB,YAAI,QAAQ,IAAK,MAAM,MAAQH;AAC/B,eAAO;AAAA,MACT;AACA,aAAM,MAAME,SAAQ;AAClB,YAAI,QAAQ,IAAK,MAAM,MAAQF;AAC/B,iBAAS;AAAA,MACX;AACA,UAAI,MAAM,IAAI,MAAM;AAEpB,MAAAD,QAAO,QAAQ,SAAS,YAAY;AAEpC,aAAO;AAAA,IACT;AAAA;AAAA;;;AC7BA;AAAA;AAAA,WAAO,UAAUK;AAEjB,QAAIC,OAAM;AAAV,QACIC,QAAO;AAEX,aAASF,MAAKG,MAAK,QAAQ;AACzB,UAAI,MAAS,GACT,SAAS,UAAU,GACnB,QAAS,GACT,UAAU,QACV,GACA,IAAIA,KAAI;AAEZ,SAAG;AACD,YAAI,WAAW,KAAK,QAAQ,IAAI;AAC9B,UAAAH,MAAK,QAAQ;AACb,gBAAM,IAAI,WAAW,yBAAyB;AAAA,QAChD;AACA,YAAIG,KAAI,SAAS;AACjB,eAAO,QAAQ,MACV,IAAID,UAAS,SACb,IAAIA,SAAQ,KAAK,IAAI,GAAG,KAAK;AAClC,iBAAS;AAAA,MACX,SAAS,KAAKD;AAEd,MAAAD,MAAK,QAAQ,UAAU;AAEvB,aAAO;AAAA,IACT;AAAA;AAAA;;;AC5BA;AAAA;AACA,QAAII,MAAK,KAAK,IAAI,GAAI,CAAC;AACvB,QAAIC,MAAK,KAAK,IAAI,GAAG,EAAE;AACvB,QAAIC,MAAK,KAAK,IAAI,GAAG,EAAE;AACvB,QAAIC,MAAK,KAAK,IAAI,GAAG,EAAE;AACvB,QAAIC,MAAK,KAAK,IAAI,GAAG,EAAE;AACvB,QAAIC,MAAK,KAAK,IAAI,GAAG,EAAE;AACvB,QAAIC,MAAK,KAAK,IAAI,GAAG,EAAE;AACvB,QAAIC,MAAK,KAAK,IAAI,GAAG,EAAE;AACvB,QAAIC,MAAK,KAAK,IAAI,GAAG,EAAE;AAEvB,WAAO,UAAU,SAAU,OAAO;AAChC,aACE,QAAQR,MAAK,IACb,QAAQC,MAAK,IACb,QAAQC,MAAK,IACb,QAAQC,MAAK,IACb,QAAQC,MAAK,IACb,QAAQC,MAAK,IACb,QAAQC,MAAK,IACb,QAAQC,MAAK,IACb,QAAQC,MAAK,IACA;AAAA,IAEjB;AAAA;AAAA;;;ACxBA;AAAA;AAAA,WAAO,UAAU;AAAA,MACb,QAAQ;AAAA,MACR,QAAQ;AAAA,MACR,gBAAgB;AAAA,IACpB;AAAA;AAAA;;;ACJA,IAAI,WAAW;AAEf,IAAI,MAAM;AAAV,IACI,OAAO;AADX,IAEI,SAAS,CAAC;AAFd,IAGI,MAAM,KAAK,IAAI,GAAG,EAAE;AAExB,SAAS,OAAO,KAAK,KAAK,QAAQ;AAChC,QAAM,OAAO,CAAC;AACd,WAAS,UAAU;AACnB,MAAI,YAAY;AAEhB,SAAM,OAAO,KAAK;AAChB,QAAI,QAAQ,IAAK,MAAM,MAAQ;AAC/B,WAAO;AAAA,EACT;AACA,SAAM,MAAM,QAAQ;AAClB,QAAI,QAAQ,IAAK,MAAM,MAAQ;AAC/B,aAAS;AAAA,EACX;AACA,MAAI,MAAM,IAAI,MAAM;AAEpB,SAAO,QAAQ,SAAS,YAAY;AAEpC,SAAO;AACT;AAEA,IAAI,SAAS;AAEb,IAAI,QAAQ;AAAZ,IACI,SAAS;AAEb,SAAS,KAAKC,MAAK,QAAQ;AACzB,MAAI,MAAS,GACT,SAAS,UAAU,GACnB,QAAS,GACT,UAAU,QACV,GACA,IAAIA,KAAI;AAEZ,KAAG;AACD,QAAI,WAAW,GAAG;AAChB,WAAK,QAAQ;AACb,YAAM,IAAI,WAAW,yBAAyB;AAAA,IAChD;AACA,QAAIA,KAAI,SAAS;AACjB,WAAO,QAAQ,MACV,IAAI,WAAW,SACf,IAAI,UAAU,KAAK,IAAI,GAAG,KAAK;AACpC,aAAS;AAAA,EACX,SAAS,KAAK;AAEd,OAAK,QAAQ,UAAU;AAEvB,SAAO;AACT;AAEA,IAAI,KAAK,KAAK,IAAI,GAAI,CAAC;AACvB,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AACvB,IAAI,KAAK,KAAK,IAAI,GAAG,EAAE;AAEvB,IAAI,SAAS,SAAU,OAAO;AAC5B,SACE,QAAQ,KAAK,IACb,QAAQ,KAAK,IACb,QAAQ,KAAK,IACb,QAAQ,KAAK,IACb,QAAQ,KAAK,IACb,QAAQ,KAAK,IACb,QAAQ,KAAK,IACb,QAAQ,KAAK,IACb,QAAQ,KAAK,IACA;AAEjB;AAEA,IAAI,SAAS;AAAA,EACT,QAAQ;AAAA,EACR;AAAA,EACA,gBAAgB;AACpB;AAEA,IAAI,eAAe;AAEnB,IAAO,iBAAQ;;;ACnFR,IAAMC,UAAS,CAAC,MAAM,SAAS,MAAM;AAC1C,QAAMC,QAAO,eAAO,OAAO,MAAM,MAAM;AACvC,SAAO,CAACA,OAAM,eAAO,OAAO,KAAK;AACnC;AAOO,IAAM,WAAW,CAAC,KAAK,QAAQ,SAAS,MAAM;AACnD,iBAAO,OAAO,KAAK,QAAQ,MAAM;AACjC,SAAO;AACT;AAMO,IAAM,iBAAiB,CAAC,QAAQ;AACrC,SAAO,eAAO,eAAe,GAAG;AAClC;;;AC5BA,IAAM,QAAQ,IAAI,WAAW,CAAC;AAmB9B,IAAM,SAAS,CAAC,IAAI,OAAO;AACzB,MAAI,OAAO;AAAI,WAAO;AACtB,MAAI,GAAG,eAAe,GAAG,YAAY;AACnC,WAAO;AAAA,EACT;AAEA,WAAS,KAAK,GAAG,KAAK,GAAG,YAAY,MAAM;AACzC,QAAI,GAAG,EAAE,MAAM,GAAG,EAAE,GAAG;AACrB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAMA,IAAM,SAAS,OAAK;AAClB,MAAI,aAAa,cAAc,EAAE,YAAY,SAAS;AAAc,WAAO;AAC3E,MAAI,aAAa;AAAa,WAAO,IAAI,WAAW,CAAC;AACrD,MAAI,YAAY,OAAO,CAAC,GAAG;AACzB,WAAO,IAAI,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU;AAAA,EAC5D;AACA,QAAM,IAAI,MAAM,mCAAmC;AACrD;;;ACnCO,IAAM,SAAS,CAACC,OAAM,WAAW;AACtC,QAAM,OAAO,OAAO;AACpB,QAAM,aAAoB,eAAeA,KAAI;AAC7C,QAAM,eAAe,aAAoB,eAAe,IAAI;AAE5D,QAAM,QAAQ,IAAI,WAAW,eAAe,IAAI;AAChD,EAAO,SAASA,OAAM,OAAO,CAAC;AAC9B,EAAO,SAAS,MAAM,OAAO,UAAU;AACvC,QAAM,IAAI,QAAQ,YAAY;AAE9B,SAAO,IAAI,OAAOA,OAAM,MAAM,QAAQ,KAAK;AAC7C;AAQO,IAAMC,UAAS,CAAC,cAAc;AACnC,QAAM,QAAQ,OAAO,SAAS;AAC9B,QAAM,CAACD,OAAM,UAAU,IAAWC,QAAO,KAAK;AAC9C,QAAM,CAAC,MAAM,YAAY,IAAWA,QAAO,MAAM,SAAS,UAAU,CAAC;AACrE,QAAM,SAAS,MAAM,SAAS,aAAa,YAAY;AAEvD,MAAI,OAAO,eAAe,MAAM;AAC9B,UAAM,IAAI,MAAM,kBAAkB;AAAA,EACpC;AAEA,SAAO,IAAI,OAAOD,OAAM,MAAM,QAAQ,KAAK;AAC7C;AAOO,IAAME,UAAS,CAAC,GAAG,MAAM;AAC9B,MAAI,MAAM,GAAG;AACX,WAAO;AAAA,EACT,OAAO;AACL,UAAM;AAAA;AAAA,MAAqE;AAAA;AAE3E,WACE,EAAE,SAAS,KAAK,QAChB,EAAE,SAAS,KAAK,QAChB,KAAK,iBAAiB,cACtB,OAAW,EAAE,OAAO,KAAK,KAAK;AAAA,EAElC;AACF;AAeO,IAAM,SAAN,MAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASlB,YAAaF,OAAM,MAAM,QAAQ,OAAO;AACtC,SAAK,OAAOA;AACZ,SAAK,OAAO;AACZ,SAAK,SAAS;AACd,SAAK,QAAQ;AAAA,EACf;AACF;;;ACrFA,SAAS,KAAM,UAAUG,OAAM;AAC7B,MAAI,SAAS,UAAU,KAAK;AAAE,UAAM,IAAI,UAAU,mBAAmB;AAAA,EAAE;AACvE,MAAI,WAAW,IAAI,WAAW,GAAG;AACjC,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,aAAS,CAAC,IAAI;AAAA,EAChB;AACA,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,QAAI,IAAI,SAAS,OAAO,CAAC;AACzB,QAAI,KAAK,EAAE,WAAW,CAAC;AACvB,QAAI,SAAS,EAAE,MAAM,KAAK;AAAE,YAAM,IAAI,UAAU,IAAI,eAAe;AAAA,IAAE;AACrE,aAAS,EAAE,IAAI;AAAA,EACjB;AACA,MAAI,OAAO,SAAS;AACpB,MAAI,SAAS,SAAS,OAAO,CAAC;AAC9B,MAAI,SAAS,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG;AAC1C,MAAI,UAAU,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,IAAI;AAC3C,WAASC,QAAQ,QAAQ;AACvB,QAAI,kBAAkB;AAAY;AAAA,aAAW,YAAY,OAAO,MAAM,GAAG;AACvE,eAAS,IAAI,WAAW,OAAO,QAAQ,OAAO,YAAY,OAAO,UAAU;AAAA,IAC7E,WAAW,MAAM,QAAQ,MAAM,GAAG;AAChC,eAAS,WAAW,KAAK,MAAM;AAAA,IACjC;AACA,QAAI,EAAE,kBAAkB,aAAa;AAAE,YAAM,IAAI,UAAU,qBAAqB;AAAA,IAAE;AAClF,QAAI,OAAO,WAAW,GAAG;AAAE,aAAO;AAAA,IAAG;AAErC,QAAI,SAAS;AACb,QAAIC,UAAS;AACb,QAAI,SAAS;AACb,QAAI,OAAO,OAAO;AAClB,WAAO,WAAW,QAAQ,OAAO,MAAM,MAAM,GAAG;AAC9C;AACA;AAAA,IACF;AAEA,QAAI,QAAS,OAAO,UAAU,UAAU,MAAO;AAC/C,QAAI,MAAM,IAAI,WAAW,IAAI;AAE7B,WAAO,WAAW,MAAM;AACtB,UAAI,QAAQ,OAAO,MAAM;AAEzB,UAAIC,KAAI;AACR,eAAS,MAAM,OAAO,IAAI,UAAU,KAAKA,KAAID,YAAY,QAAQ,IAAK,OAAOC,MAAK;AAChF,iBAAU,MAAM,IAAI,GAAG,MAAO;AAC9B,YAAI,GAAG,IAAK,QAAQ,SAAU;AAC9B,gBAAS,QAAQ,SAAU;AAAA,MAC7B;AACA,UAAI,UAAU,GAAG;AAAE,cAAM,IAAI,MAAM,gBAAgB;AAAA,MAAE;AACrD,MAAAD,UAASC;AACT;AAAA,IACF;AAEA,QAAI,MAAM,OAAOD;AACjB,WAAO,QAAQ,QAAQ,IAAI,GAAG,MAAM,GAAG;AACrC;AAAA,IACF;AAEA,QAAI,MAAM,OAAO,OAAO,MAAM;AAC9B,WAAO,MAAM,MAAM,EAAE,KAAK;AAAE,aAAO,SAAS,OAAO,IAAI,GAAG,CAAC;AAAA,IAAG;AAC9D,WAAO;AAAA,EACT;AACA,WAAS,aAAc,QAAQ;AAC7B,QAAI,OAAO,WAAW,UAAU;AAAE,YAAM,IAAI,UAAU,iBAAiB;AAAA,IAAE;AACzE,QAAI,OAAO,WAAW,GAAG;AAAE,aAAO,IAAI,WAAW;AAAA,IAAE;AACnD,QAAI,MAAM;AAEV,QAAI,OAAO,GAAG,MAAM,KAAK;AAAE;AAAA,IAAO;AAElC,QAAI,SAAS;AACb,QAAIA,UAAS;AACb,WAAO,OAAO,GAAG,MAAM,QAAQ;AAC7B;AACA;AAAA,IACF;AAEA,QAAI,QAAU,OAAO,SAAS,OAAO,SAAU,MAAO;AACtD,QAAI,OAAO,IAAI,WAAW,IAAI;AAE9B,WAAO,OAAO,GAAG,GAAG;AAElB,UAAI,QAAQ,SAAS,OAAO,WAAW,GAAG,CAAC;AAE3C,UAAI,UAAU,KAAK;AAAE;AAAA,MAAO;AAC5B,UAAIC,KAAI;AACR,eAAS,MAAM,OAAO,IAAI,UAAU,KAAKA,KAAID,YAAY,QAAQ,IAAK,OAAOC,MAAK;AAChF,iBAAU,OAAO,KAAK,GAAG,MAAO;AAChC,aAAK,GAAG,IAAK,QAAQ,QAAS;AAC9B,gBAAS,QAAQ,QAAS;AAAA,MAC5B;AACA,UAAI,UAAU,GAAG;AAAE,cAAM,IAAI,MAAM,gBAAgB;AAAA,MAAE;AACrD,MAAAD,UAASC;AACT;AAAA,IACF;AAEA,QAAI,OAAO,GAAG,MAAM,KAAK;AAAE;AAAA,IAAO;AAElC,QAAI,MAAM,OAAOD;AACjB,WAAO,QAAQ,QAAQ,KAAK,GAAG,MAAM,GAAG;AACtC;AAAA,IACF;AACA,QAAI,MAAM,IAAI,WAAW,UAAU,OAAO,IAAI;AAC9C,QAAIE,KAAI;AACR,WAAO,QAAQ,MAAM;AACnB,UAAIA,IAAG,IAAI,KAAK,KAAK;AAAA,IACvB;AACA,WAAO;AAAA,EACT;AACA,WAASC,SAAQ,QAAQ;AACvB,QAAIC,UAAS,aAAa,MAAM;AAChC,QAAIA,SAAQ;AAAE,aAAOA;AAAA,IAAO;AAC5B,UAAM,IAAI,MAAM,OAAON,KAAI,YAAY;AAAA,EACzC;AACA,SAAO;AAAA,IACL,QAAQC;AAAA,IACR;AAAA,IACA,QAAQI;AAAA,EACV;AACF;AACA,IAAI,MAAM;AAEV,IAAI,kCAAkC;AAEtC,IAAO,iBAAQ;;;AC7Gf,IAAM,UAAN,MAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMZ,YAAaE,OAAM,QAAQ,YAAY;AACrC,SAAK,OAAOA;AACZ,SAAK,SAAS;AACd,SAAK,aAAa;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAQ,OAAO;AACb,QAAI,iBAAiB,YAAY;AAC/B,aAAO,GAAG,KAAK,MAAM,GAAG,KAAK,WAAW,KAAK,CAAC;AAAA,IAChD,OAAO;AACL,YAAM,MAAM,mCAAmC;AAAA,IACjD;AAAA,EACF;AACF;AAiBA,IAAM,UAAN,MAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMZ,YAAaA,OAAM,QAAQ,YAAY;AACrC,SAAK,OAAOA;AACZ,SAAK,SAAS;AAEd,QAAI,OAAO,YAAY,CAAC,MAAM,QAAW;AACvC,YAAM,IAAI,MAAM,0BAA0B;AAAA,IAC5C;AAEA,SAAK;AAAA,IAAyC,OAAO,YAAY,CAAC;AAClE,SAAK,aAAa;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAQ,MAAM;AACZ,QAAI,OAAO,SAAS,UAAU;AAC5B,UAAI,KAAK,YAAY,CAAC,MAAM,KAAK,iBAAiB;AAChD,cAAM,MAAM,qCAAqC,KAAK,UAAU,IAAI,CAAC,KAAK,KAAK,IAAI,+CAA+C,KAAK,MAAM,EAAE;AAAA,MACjJ;AACA,aAAO,KAAK,WAAW,KAAK,MAAM,KAAK,OAAO,MAAM,CAAC;AAAA,IACvD,OAAO;AACL,YAAM,MAAM,mCAAmC;AAAA,IACjD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,GAAI,SAAS;AACX,WAAO,GAAG,MAAM,OAAO;AAAA,EACzB;AACF;AAYA,IAAM,kBAAN,MAAsB;AAAA;AAAA;AAAA;AAAA,EAIpB,YAAa,UAAU;AACrB,SAAK,WAAW;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,GAAI,SAAS;AACX,WAAO,GAAG,MAAM,OAAO;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAQ,OAAO;AACb,UAAM;AAAA;AAAA,MAAgC,MAAM,CAAC;AAAA;AAC7C,UAAM,UAAU,KAAK,SAAS,MAAM;AACpC,QAAI,SAAS;AACX,aAAO,QAAQ,OAAO,KAAK;AAAA,IAC7B,OAAO;AACL,YAAM,WAAW,qCAAqC,KAAK,UAAU,KAAK,CAAC,+BAA+B,OAAO,KAAK,KAAK,QAAQ,CAAC,gBAAgB;AAAA,IACtJ;AAAA,EACF;AACF;AASO,IAAM,KAAK,CAAC,MAAM,UAAU,IAAI;AAAA;AAAA,EAA6C;AAAA,IAClF,GAAI,KAAK,YAAY,EAAE;AAAA;AAAA,MAAoC,KAAM;AAAA,IAAM,GAAG,KAAK;AAAA,IAC/E,GAAI,MAAM,YAAY,EAAE;AAAA;AAAA,MAAoC,MAAO;AAAA,IAAM,GAAG,MAAM;AAAA,EACpF;AAAE;AAaK,IAAM,QAAN,MAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOjB,YAAaA,OAAM,QAAQ,YAAY,YAAY;AACjD,SAAK,OAAOA;AACZ,SAAK,SAAS;AACd,SAAK,aAAa;AAClB,SAAK,aAAa;AAClB,SAAK,UAAU,IAAI,QAAQA,OAAM,QAAQ,UAAU;AACnD,SAAK,UAAU,IAAI,QAAQA,OAAM,QAAQ,UAAU;AAAA,EACrD;AAAA;AAAA;AAAA;AAAA,EAKA,OAAQ,OAAO;AACb,WAAO,KAAK,QAAQ,OAAO,KAAK;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAKA,OAAQ,OAAO;AACb,WAAO,KAAK,QAAQ,OAAO,KAAK;AAAA,EAClC;AACF;AAYO,IAAM,OAAO,CAAC,EAAE,MAAAA,OAAM,QAAQ,QAAAC,SAAQ,QAAAC,SAAO,MAClD,IAAI,MAAMF,OAAM,QAAQC,SAAQC,QAAM;AAWjC,IAAM,QAAQ,CAAC,EAAE,QAAQ,MAAAF,OAAM,SAAS,MAAM;AACnD,QAAM,EAAE,QAAAC,SAAQ,QAAAC,SAAO,IAAI,eAAM,UAAUF,KAAI;AAC/C,SAAO,KAAK;AAAA,IACV;AAAA,IACA,MAAAA;AAAA,IACA,QAAAC;AAAA;AAAA;AAAA;AAAA,IAIA,QAAQ,UAAQ,OAAOC,SAAO,IAAI,CAAC;AAAA,EACrC,CAAC;AACH;AASA,IAAMA,UAAS,CAAC,QAAQ,UAAU,aAAaF,UAAS;AAGtD,QAAM,QAAQ,CAAC;AACf,WAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,EAAE,GAAG;AACxC,UAAM,SAAS,CAAC,CAAC,IAAI;AAAA,EACvB;AAGA,MAAI,MAAM,OAAO;AACjB,SAAO,OAAO,MAAM,CAAC,MAAM,KAAK;AAC9B,MAAE;AAAA,EACJ;AAGA,QAAM,MAAM,IAAI,WAAY,MAAM,cAAc,IAAK,CAAC;AAGtD,MAAI,OAAO;AACX,MAAIG,UAAS;AACb,MAAI,UAAU;AACd,WAAS,IAAI,GAAG,IAAI,KAAK,EAAE,GAAG;AAE5B,UAAM,QAAQ,MAAM,OAAO,CAAC,CAAC;AAC7B,QAAI,UAAU,QAAW;AACvB,YAAM,IAAI,YAAY,OAAOH,KAAI,YAAY;AAAA,IAC/C;AAGA,IAAAG,UAAUA,WAAU,cAAe;AACnC,YAAQ;AAGR,QAAI,QAAQ,GAAG;AACb,cAAQ;AACR,UAAI,SAAS,IAAI,MAAQA,WAAU;AAAA,IACrC;AAAA,EACF;AAGA,MAAI,QAAQ,eAAe,MAAQA,WAAW,IAAI,MAAQ;AACxD,UAAM,IAAI,YAAY,wBAAwB;AAAA,EAChD;AAEA,SAAO;AACT;AAQA,IAAMF,UAAS,CAAC,MAAM,UAAU,gBAAgB;AAC9C,QAAM,MAAM,SAAS,SAAS,SAAS,CAAC,MAAM;AAC9C,QAAM,QAAQ,KAAK,eAAe;AAClC,MAAI,MAAM;AAEV,MAAI,OAAO;AACX,MAAIE,UAAS;AACb,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,GAAG;AAEpC,IAAAA,UAAUA,WAAU,IAAK,KAAK,CAAC;AAC/B,YAAQ;AAGR,WAAO,OAAO,aAAa;AACzB,cAAQ;AACR,aAAO,SAAS,OAAQA,WAAU,IAAK;AAAA,IACzC;AAAA,EACF;AAGA,MAAI,MAAM;AACR,WAAO,SAAS,OAAQA,WAAW,cAAc,IAAM;AAAA,EACzD;AAGA,MAAI,KAAK;AACP,WAAQ,IAAI,SAAS,cAAe,GAAG;AACrC,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAaO,IAAM,UAAU,CAAC,EAAE,MAAAH,OAAM,QAAQ,aAAa,SAAS,MAAM;AAClE,SAAO,KAAK;AAAA,IACV;AAAA,IACA,MAAAA;AAAA,IACA,OAAQ,OAAO;AACb,aAAOC,QAAO,OAAO,UAAU,WAAW;AAAA,IAC5C;AAAA,IACA,OAAQ,OAAO;AACb,aAAOC,QAAO,OAAO,UAAU,aAAaF,KAAI;AAAA,IAClD;AAAA,EACF,CAAC;AACH;;;ACxVO,IAAM,YAAY,MAAM;AAAA,EAC7B,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,UAAU;AACZ,CAAC;AAEM,IAAM,eAAe,MAAM;AAAA,EAChC,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,UAAU;AACZ,CAAC;;;ACVM,IAAM,SAAS,QAAQ;AAAA,EAC5B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AAEM,IAAM,cAAc,QAAQ;AAAA,EACjC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AAEM,IAAM,YAAY,QAAQ;AAAA,EAC/B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AAEM,IAAM,iBAAiB,QAAQ;AAAA,EACpC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AAEM,IAAM,YAAY,QAAQ;AAAA,EAC/B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AAEM,IAAM,iBAAiB,QAAQ;AAAA,EACpC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AAEM,IAAM,eAAe,QAAQ;AAAA,EAClC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AAEM,IAAM,oBAAoB,QAAQ;AAAA,EACvC,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;AAEM,IAAM,UAAU,QAAQ;AAAA,EAC7B,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AACf,CAAC;;;AC5CM,IAAM,SAAS,CAAC,MAAMI,UAAS;AACpC,QAAM,EAAE,OAAO,QAAQ,IAAI;AAC3B,UAAQ,SAAS;AAAA,IACf,KAAK;AACH,aAAO;AAAA,QACL;AAAA,QACA,UAAU,IAAI;AAAA;AAAA,QAC4BA,SAAS,UAAU;AAAA,MAC/D;AAAA,IACF;AACE,aAAO;AAAA,QACL;AAAA,QACA,UAAU,IAAI;AAAA;AAAA,QAC+BA,SAAQ,OAAO;AAAA,MAC9D;AAAA,EACJ;AACF;AAmBA,IAAM,QAAQ,oBAAI,QAAQ;AAM1B,IAAM,YAAY,SAAO;AACvB,QAAMC,aAAY,MAAM,IAAI,GAAG;AAC/B,MAAIA,cAAa,MAAM;AACrB,UAAMA,aAAY,oBAAI,IAAI;AAC1B,UAAM,IAAI,KAAKA,UAAS;AACxB,WAAOA;AAAA,EACT;AACA,SAAOA;AACT;AAUO,IAAM,MAAN,MAAM,KAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQf,YAAa,SAASC,OAAM,WAAW,OAAO;AAE5C,SAAK,OAAOA;AAEZ,SAAK,UAAU;AAEf,SAAK,YAAY;AAEjB,SAAK,QAAQ;AAKb,SAAK,GAAG,IAAI;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAI,QAAS;AACX,WAAO;AAAA,EACT;AAAA;AAAA,EAGA,IAAI,aAAc;AAChB,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA,EAGA,IAAI,aAAc;AAChB,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,OAAQ;AACN,YAAQ,KAAK,SAAS;AAAA,MACpB,KAAK,GAAG;AACN;AAAA;AAAA,UAA6D;AAAA;AAAA,MAC/D;AAAA,MACA,KAAK,GAAG;AACN,cAAM,EAAE,MAAAA,OAAM,UAAU,IAAI;AAE5B,YAAIA,UAAS,aAAa;AACxB,gBAAM,IAAI,MAAM,0CAA0C;AAAA,QAC5D;AAGA,YAAI,UAAU,SAAS,cAAc;AACnC,gBAAM,IAAI,MAAM,oDAAoD;AAAA,QACtE;AAEA;AAAA;AAAA,UACE,KAAI;AAAA;AAAA,YAC+C;AAAA,UACnD;AAAA;AAAA,MAEJ;AAAA,MACA,SAAS;AACP,cAAM;AAAA,UACJ,+BAA+B,KAAK,OAAO;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,OAAQ;AACN,YAAQ,KAAK,SAAS;AAAA,MACpB,KAAK,GAAG;AACN,cAAM,EAAE,MAAAA,OAAM,OAAO,IAAI,KAAK;AAC9B,cAAM,YAAmB,OAAOA,OAAM,MAAM;AAC5C;AAAA;AAAA,UACE,KAAI,SAAS,KAAK,MAAM,SAAS;AAAA;AAAA,MAErC;AAAA,MACA,KAAK,GAAG;AACN;AAAA;AAAA,UAAiD;AAAA;AAAA,MACnD;AAAA,MACA,SAAS;AACP,cAAM;AAAA,UACJ,+BAA+B,KAAK,OAAO;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAQ,OAAO;AACb,WAAO,KAAI,OAAO,MAAM,KAAK;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,OAAO,OAAQ,MAAM,OAAO;AAC1B,UAAM;AAAA;AAAA,MAEF;AAAA;AAEJ,WACE,WACA,KAAK,SAAS,QAAQ,QACtB,KAAK,YAAY,QAAQ,WAClBC,QAAO,KAAK,WAAW,QAAQ,SAAS;AAAA,EAEnD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAUC,OAAM;AACd,WAAO,OAAO,MAAMA,KAAI;AAAA,EAC1B;AAAA,EAEA,SAAU;AACR,WAAO,EAAE,KAAK,OAAO,IAAI,EAAE;AAAA,EAC7B;AAAA,EAEA,OAAQ;AACN,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,OAAO,WAAW,IAAK;AAC1B,WAAO;AAAA,EACT;AAAA;AAAA,EAIA,CAAC,OAAO,IAAI,4BAA4B,CAAC,IAAK;AAC5C,WAAO,OAAO,KAAK,SAAS,CAAC;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,OAAO,MAAO,OAAO;AACnB,QAAI,SAAS,MAAM;AACjB,aAAO;AAAA,IACT;AAEA,UAAM;AAAA;AAAA,MAA4B;AAAA;AAClC,QAAI,iBAAiB,MAAK;AAExB,aAAO;AAAA,IACT,WAAY,MAAM,GAAG,KAAK,QAAQ,MAAM,GAAG,MAAM,MAAM,SAAU,MAAM,UAAU,OAAO;AAMtF,YAAM,EAAE,SAAS,MAAAF,OAAM,WAAW,MAAM,IAAI;AAC5C,aAAO,IAAI;AAAA,QACT;AAAA,QACAA;AAAA;AAAA,QACyC;AAAA,QACzC,SAAS,UAAU,SAASA,OAAM,UAAU,KAAK;AAAA,MACnD;AAAA,IACF,WAAW,MAAM,SAAS,MAAM,MAAM;AAIpC,YAAM,EAAE,SAAS,WAAW,MAAAA,MAAK,IAAI;AACrC,YAAM;AAAA;AAAA,QAEIG,QAAO,SAAS;AAAA;AAC1B,aAAO,KAAI,OAAO,SAASH,OAAM,MAAM;AAAA,IACzC,OAAO;AAGL,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,OAAO,OAAQ,SAASA,OAAM,QAAQ;AACpC,QAAI,OAAOA,UAAS,UAAU;AAC5B,YAAM,IAAI,MAAM,uCAAuC;AAAA,IACzD;AAEA,QAAI,EAAE,OAAO,iBAAiB,aAAa;AACzC,YAAM,IAAI,MAAM,gBAAgB;AAAA,IAClC;AAEA,YAAQ,SAAS;AAAA,MACf,KAAK,GAAG;AACN,YAAIA,UAAS,aAAa;AACxB,gBAAM,IAAI;AAAA,YACR,wCAAwC,WAAW;AAAA,UACrD;AAAA,QACF,OAAO;AACL,iBAAO,IAAI,KAAI,SAASA,OAAM,QAAQ,OAAO,KAAK;AAAA,QACpD;AAAA,MACF;AAAA,MACA,KAAK,GAAG;AACN,cAAM,QAAQ,UAAU,SAASA,OAAM,OAAO,KAAK;AACnD,eAAO,IAAI,KAAI,SAASA,OAAM,QAAQ,KAAK;AAAA,MAC7C;AAAA,MACA,SAAS;AACP,cAAM,IAAI,MAAM,iBAAiB;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,SAAU,QAAQ;AACvB,WAAO,KAAI,OAAO,GAAG,aAAa,MAAM;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,OAAO,SAAUA,OAAM,QAAQ;AAC7B,WAAO,KAAI,OAAO,GAAGA,OAAM,MAAM;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,OAAO,OAAQ,OAAO;AACpB,UAAM,CAAC,KAAK,SAAS,IAAI,KAAI,YAAY,KAAK;AAC9C,QAAI,UAAU,QAAQ;AACpB,YAAM,IAAI,MAAM,kBAAkB;AAAA,IACpC;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,OAAO,YAAa,OAAO;AACzB,UAAM,QAAQ,KAAI,aAAa,KAAK;AACpC,UAAM,aAAa,MAAM,OAAO,MAAM;AACtC,UAAM,iBAAiB;AAAA,MACrB,MAAM,SAAS,YAAY,aAAa,MAAM,aAAa;AAAA,IAC7D;AACA,QAAI,eAAe,eAAe,MAAM,eAAe;AACrD,YAAM,IAAI,MAAM,kBAAkB;AAAA,IACpC;AACA,UAAM,cAAc,eAAe;AAAA,MACjC,MAAM,gBAAgB,MAAM;AAAA,IAC9B;AACA,UAAM,SAAS,IAAW;AAAA,MACxB,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,MACA;AAAA,IACF;AACA,UAAM,MACJ,MAAM,YAAY,IACd,KAAI;AAAA;AAAA,MAA0D;AAAA,IAAO,IACrE,KAAI,SAAS,MAAM,OAAO,MAAM;AACtC,WAAO;AAAA;AAAA,MAAgC;AAAA,MAAM,MAAM,SAAS,MAAM,IAAI;AAAA,IAAC;AAAA,EACzE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkBA,OAAO,aAAc,cAAc;AACjC,QAAI,SAAS;AACb,UAAM,OAAO,MAAM;AACjB,YAAM,CAAC,GAAGI,OAAM,IAAWD,QAAO,aAAa,SAAS,MAAM,CAAC;AAC/D,gBAAUC;AACV,aAAO;AAAA,IACT;AAEA,QAAI;AAAA;AAAA,MAA4B,KAAK;AAAA;AACrC,QAAI;AAAA;AAAA,MAA0B;AAAA;AAC9B;AAAA;AAAA,MAA0B,YAAa;AAAA,MAAI;AAEzC;AAAA,MAA4B;AAC5B,eAAS;AAAA,IACX,OAAO;AACL;AAAA,MAA0B,KAAK;AAAA,IACjC;AAEA,QAAI,YAAY,KAAK,YAAY,GAAG;AAClC,YAAM,IAAI,WAAW,uBAAuB,OAAO,EAAE;AAAA,IACvD;AAEA,UAAM,aAAa;AACnB,UAAM;AAAA;AAAA,MAAkC,KAAK;AAAA;AAC7C,UAAM,aAAa,KAAK;AACxB,UAAM,OAAO,SAAS;AACtB,UAAM,gBAAgB,OAAO;AAE7B,WAAO,EAAE,SAAS,OAAO,eAAe,YAAY,eAAe,KAAK;AAAA,EAC1E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBA,OAAO,MAAO,QAAQF,OAAM;AAC1B,UAAM,CAAC,QAAQ,KAAK,IAAI,gBAAgB,QAAQA,KAAI;AAEpD,UAAM,MAAM,KAAI,OAAO,KAAK;AAE5B,QAAI,IAAI,YAAY,KAAK,OAAO,CAAC,MAAM,KAAK;AAC1C,YAAM,MAAM,wDAAwD;AAAA,IACtE;AAGA,cAAU,GAAG,EAAE,IAAI,QAAQ,MAAM;AAEjC,WAAO;AAAA,EACT;AACF;AAYA,IAAM,kBAAkB,CAAC,QAAQA,UAAS;AACxC,UAAQ,OAAO,CAAC,GAAG;AAAA,IAEjB,KAAK,KAAK;AACR,YAAM,UAAUA,SAAQ;AACxB,aAAO;AAAA;AAAA,QACkB,UAAU;AAAA,QACjC,QAAQ,OAAO,GAAG,UAAU,MAAM,GAAG,MAAM,EAAE;AAAA,MAC/C;AAAA,IACF;AAAA,IACA,KAAK,UAAU,QAAQ;AACrB,YAAM,UAAUA,SAAQ;AACxB,aAAO;AAAA;AAAA,QAAuB,UAAU;AAAA,QAAS,QAAQ,OAAO,MAAM;AAAA,MAAC;AAAA,IACzE;AAAA,IACA,KAAK,OAAO,QAAQ;AAClB,YAAM,UAAUA,SAAQ;AACxB,aAAO;AAAA;AAAA,QAAuB,OAAO;AAAA,QAAS,QAAQ,OAAO,MAAM;AAAA,MAAC;AAAA,IACtE;AAAA,IACA,SAAS;AACP,UAAIA,SAAQ,MAAM;AAChB,cAAM;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA;AAAA,QAAuB,OAAO,CAAC;AAAA,QAAIA,MAAK,OAAO,MAAM;AAAA,MAAC;AAAA,IAC/D;AAAA,EACF;AACF;AAQA,IAAM,aAAa,CAAC,OAAOG,QAAOH,UAAS;AACzC,QAAM,EAAE,OAAO,IAAIA;AACnB,MAAI,WAAW,UAAU,QAAQ;AAC/B,UAAM,MAAM,8BAA8BA,MAAK,IAAI,WAAW;AAAA,EAChE;AAEA,QAAM,MAAMG,OAAM,IAAI,MAAM;AAC5B,MAAI,OAAO,MAAM;AACf,UAAMC,OAAMJ,MAAK,OAAO,KAAK,EAAE,MAAM,CAAC;AACtC,IAAAG,OAAM,IAAI,QAAQC,IAAG;AACrB,WAAOA;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAQA,IAAM,aAAa,CAAC,OAAOD,QAAOH,UAAS;AACzC,QAAM,EAAE,OAAO,IAAIA;AACnB,QAAM,MAAMG,OAAM,IAAI,MAAM;AAC5B,MAAI,OAAO,MAAM;AACf,UAAMC,OAAMJ,MAAK,OAAO,KAAK;AAC7B,IAAAG,OAAM,IAAI,QAAQC,IAAG;AACrB,WAAOA;AAAA,EACT,OAAO;AACL,WAAO;AAAA,EACT;AACF;AAEA,IAAM,cAAc;AACpB,IAAM,eAAe;AAQrB,IAAM,YAAY,CAAC,SAASN,OAAM,cAAc;AAC9C,QAAM,aAAoB,eAAe,OAAO;AAChD,QAAM,aAAa,aAAoB,eAAeA,KAAI;AAC1D,QAAM,QAAQ,IAAI,WAAW,aAAa,UAAU,UAAU;AAC9D,EAAO,SAAS,SAAS,OAAO,CAAC;AACjC,EAAO,SAASA,OAAM,OAAO,UAAU;AACvC,QAAM,IAAI,WAAW,UAAU;AAC/B,SAAO;AACT;AAEA,IAAM,YAAY,OAAO,IAAI,kBAAkB;;;ACzkBxC,IAAMO,QAAO,CAAC,EAAE,MAAAC,OAAM,MAAAC,OAAM,QAAAC,QAAO,MAAM,IAAI,OAAOF,OAAMC,OAAMC,OAAM;AAWtE,IAAM,SAAN,MAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOlB,YAAaF,OAAMC,OAAMC,SAAQ;AAC/B,SAAK,OAAOF;AACZ,SAAK,OAAOC;AACZ,SAAK,SAASC;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAQ,OAAO;AACb,QAAI,iBAAiB,YAAY;AAC/B,YAAM,SAAS,KAAK,OAAO,KAAK;AAChC,aAAO,kBAAkB,aACd,OAAO,KAAK,MAAM,MAAM,IAE/B,OAAO,KAAK,YAAiB,OAAO,KAAK,MAAM,MAAM,CAAC;AAAA,IAC5D,OAAO;AACL,YAAM,MAAM,mCAAmC;AAAA,IAEjD;AAAA,EACF;AACF;;;AC7CA,SAAS,SAAU,EAAE,aAAa,MAAM,eAAe,MAAM,IAAI,CAAC,GAAG;AACnE,SAAO,EAAE,YAAY,cAAc,UAAU,MAAM;AACrD;AAOA,UAAW,YAAa,MAAM,OAAO;AACnC,MAAI,SAAS,QAAQ,OAAO,UAAU,UAAU;AAC9C,QAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,iBAAW,CAAC,OAAO,OAAO,KAAK,MAAM,QAAQ,GAAG;AAC9C,cAAM,cAAc,CAAC,GAAG,MAAM,KAAK;AACnC,cAAM,MAAM,IAAI,MAAM,OAAO;AAC7B,YAAI,KAAK;AACP,gBAAM,CAAC,YAAY,KAAK,GAAG,GAAG,GAAG;AAAA,QACnC,WAAW,OAAO,YAAY,UAAU;AACtC,iBAAQ,MAAM,SAAS,WAAW;AAAA,QACpC;AAAA,MACF;AAAA,IACF,OAAO;AACL,YAAM,MAAM,IAAI,MAAM,KAAK;AAC3B,UAAI,KAAK;AACP,cAAM,CAAC,KAAK,KAAK,GAAG,GAAG,GAAG;AAAA,MAC5B,OAAO;AACL,eAAQ,MAAM,OAAO,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AACF;AAQA,UAAW,MAAO,QAAQC,OAAM;AAC9B,MAAI,UAAU,QAAQ,kBAAkB,YAAY;AAClD;AAAA,EACF;AACA,QAAM,MAAM,IAAI,MAAM,MAAM;AAC5B,MAAI,KAAK;AACP,UAAM,CAACA,MAAK,KAAK,GAAG,GAAG,GAAG;AAAA,EAC5B;AACA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjD,UAAM;AAAA;AAAA,MAA+C,CAAC,GAAGA,OAAM,GAAG;AAAA;AAClE,WAAQ,YAAY,MAAM,KAAK;AAAA,EACjC;AACF;AAOA,UAAW,WAAY,MAAM,OAAO;AAClC,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,eAAW,CAAC,OAAO,OAAO,KAAK,MAAM,QAAQ,GAAG;AAC9C,YAAM,cAAc,CAAC,GAAG,MAAM,KAAK;AACnC,YAAM,YAAY,KAAK,GAAG;AAC1B,UAAI,OAAO,YAAY,YAAY,CAAC,IAAI,MAAM,OAAO,GAAG;AACtD,eAAQ,KAAK,SAAS,WAAW;AAAA,MACnC;AAAA,IACF;AAAA,EACF,OAAO;AACL,WAAQ,KAAK,OAAO,IAAI;AAAA,EAC1B;AACF;AAQA,UAAW,KAAM,QAAQA,OAAM;AAC7B,MAAI,UAAU,QAAQ,OAAO,WAAW,UAAU;AAChD;AAAA,EACF;AACA,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjD,UAAM;AAAA;AAAA,MAA+C,CAAC,GAAGA,OAAM,GAAG;AAAA;AAClE,UAAM,KAAK,KAAK,GAAG;AACnB,QAAI,SAAS,QAAQ,EAAE,iBAAiB,eAAe,OAAO,UAAU,YAAY,CAAC,IAAI,MAAM,KAAK,GAAG;AACrG,aAAQ,WAAW,MAAM,KAAK;AAAA,IAChC;AAAA,EACF;AACF;AASA,SAAS,IAAK,QAAQ,MAAM;AAC1B,MAAI;AAAA;AAAA,IAA0C;AAAA;AAC9C,aAAW,CAAC,OAAO,GAAG,KAAK,KAAK,QAAQ,GAAG;AACzC,WAAO,KAAK,GAAG;AACf,QAAI,QAAQ,MAAM;AAChB,YAAM,IAAI,MAAM,6BAA6B,KAAK,MAAM,GAAG,QAAQ,CAAC,EAAE,IAAI,UAAQ,IAAI,KAAK,UAAU,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE;AAAA,IAC3H;AACA,UAAM,MAAM,IAAI,MAAM,IAAI;AAC1B,QAAI,KAAK;AACP,aAAO,EAAE,OAAO,KAAK,WAAW,KAAK,MAAM,QAAQ,CAAC,EAAE,KAAK,GAAG,EAAE;AAAA,IAClE;AAAA,EACF;AACA,SAAO,EAAE,OAAO,KAAK;AACvB;AASA,IAAM,QAAN,MAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOV,YAAa,EAAE,KAAK,OAAO,MAAM,GAAG;AAClC,QAAI,CAAC,OAAO,CAAC,SAAS,OAAO,UAAU,aAAa;AAAE,YAAM,IAAI,MAAM,2BAA2B;AAAA,IAAE;AAEnG,SAAK,MAAM;AACX,SAAK,QAAQ;AACb,SAAK,QAAQ;AACb,SAAK,UAAU;AAGf,WAAO,iBAAiB,MAAM;AAAA,MAC5B,KAAK,SAAS;AAAA,MACd,OAAO,SAAS;AAAA,MAChB,OAAO,SAAS;AAAA,MAChB,SAAS,SAAS;AAAA,IACpB,CAAC;AAAA,EACH;AAAA,EAEA,QAAS;AACP,WAAO,MAAM,KAAK,OAAO,CAAC,CAAC;AAAA,EAC7B;AAAA,EAEA,OAAQ;AACN,WAAO,KAAK,KAAK,OAAO,CAAC,CAAC;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAK,OAAO,KAAK;AACf,WAAO,IAAI,KAAK,OAAO,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO,CAAC;AAAA,EACxD;AACF;AAYA,eAAeC,QAAQ,EAAE,OAAO,OAAO,OAAO,GAAG;AAC/C,MAAI,OAAO,UAAU;AAAa,UAAM,IAAI,MAAM,mCAAmC;AACrF,MAAI,CAAC,SAAS,CAAC;AAAQ,UAAM,IAAI,MAAM,4CAA4C;AAEnF,QAAM,QAAQ,MAAM,OAAO,KAAK;AAChC,QAAM,OAAO,MAAM,OAAO,OAAO,KAAK;AAEtC,QAAM,MAAM,IAAI;AAAA,IACd;AAAA,IACA,MAAM;AAAA,IACN;AAAA,EACF;AAEA,SAAO,IAAI,MAAM,EAAE,OAAO,OAAO,IAAI,CAAC;AACxC;AAYA,eAAeC,QAAQ,EAAE,OAAO,OAAO,OAAO,GAAG;AAC/C,MAAI,CAAC;AAAO,UAAM,IAAI,MAAM,mCAAmC;AAC/D,MAAI,CAAC,SAAS,CAAC;AAAQ,UAAM,IAAI,MAAM,4CAA4C;AAEnF,QAAM,QAAQ,MAAM,OAAO,KAAK;AAChC,QAAM,OAAO,MAAM,OAAO,OAAO,KAAK;AAEtC,QAAM,MAAM,IAAI,OAAO,GAAG,MAAM,MAAM,IAAI;AAE1C,SAAO,IAAI,MAAM,EAAE,OAAO,OAAO,IAAI,CAAC;AACxC;;;AClNA,OAAO,YAAY;AAIZ,IAAM,SAASC,MAAK;AAAA,EACzB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ,CAAC,UAAU,OAAO,OAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,CAAC;AAC9E,CAAC;AAEM,IAAM,SAASA,MAAK;AAAA,EACzB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,QAAQ,WAAS,OAAO,OAAO,WAAW,QAAQ,EAAE,OAAO,KAAK,EAAE,OAAO,CAAC;AAC5E,CAAC;;;AChBD;AAAA;AAAA;AAAA,gBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA;AAAA;AASO,IAAM,OAAO;AACb,IAAM,OAAO;AAMb,IAAMC,UAAS,CAAC,SAAS,OAAO,IAAI;AAMpC,IAAMC,UAAS,CAAC,SAAS,OAAO,IAAI;;;ACtB3C,IAAAC,iBAAmB;;;ACAnB,IAAM,UAAU;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAM,kBAAkB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACO,SAAS,GAAG,OAAO;AACxB,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AACA,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AACA,MAAI,UAAU,QAAQ,UAAU,OAAO;AACrC,WAAO;AAAA,EACT;AACA,QAAM,SAAS,OAAO;AACtB,MAAI,QAAQ,SAAS,MAAM,GAAG;AAC5B,WAAO;AAAA,EACT;AACA,MAAI,WAAW,YAAY;AACzB,WAAO;AAAA,EACT;AACA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO;AAAA,EACT;AACA,MAAI,SAAS,KAAK,GAAG;AACnB,WAAO;AAAA,EACT;AACA,QAAM,aAAa,cAAc,KAAK;AACtC,MAAI,YAAY;AACd,WAAO;AAAA,EACT;AACA,SAAO;AACT;AACA,SAAS,SAAS,OAAO;AACvB,SAAO,SAAS,MAAM,eAAe,MAAM,YAAY,YAAY,MAAM,YAAY,SAAS,KAAK,MAAM,KAAK;AAChH;AACA,SAAS,cAAc,OAAO;AAC5B,QAAM,iBAAiB,OAAO,UAAU,SAAS,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE;AACxE,MAAI,gBAAgB,SAAS,cAAc,GAAG;AAC5C,WAAO;AAAA,EACT;AACA,SAAO;AACT;;;AChFA,IAAM,OAAN,MAAW;AAAA,EACT,YAAY,OAAOC,OAAM,UAAU;AACjC,SAAK,QAAQ;AACb,SAAK,eAAe,SAAS;AAC7B,SAAK,OAAOA;AACZ,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,WAAW;AACT,WAAO,QAAS,KAAK,KAAM,KAAM,KAAK,IAAK;AAAA,EAC7C;AAAA,EACA,QAAQ,KAAK;AACX,WAAO,KAAK,QAAQ,IAAI,QAAQ,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI;AAAA,EACpE;AACF;AACA,KAAK,OAAO,IAAI,KAAK,GAAG,QAAQ,IAAI;AACpC,KAAK,SAAS,IAAI,KAAK,GAAG,UAAU,IAAI;AACxC,KAAK,QAAQ,IAAI,KAAK,GAAG,SAAS,IAAI;AACtC,KAAK,SAAS,IAAI,KAAK,GAAG,UAAU,IAAI;AACxC,KAAK,QAAQ,IAAI,KAAK,GAAG,SAAS,KAAK;AACvC,KAAK,MAAM,IAAI,KAAK,GAAG,OAAO,KAAK;AACnC,KAAK,MAAM,IAAI,KAAK,GAAG,OAAO,KAAK;AACnC,KAAK,QAAQ,IAAI,KAAK,GAAG,SAAS,IAAI;AACtC,KAAK,QAAQ,IAAI,KAAK,GAAG,SAAS,IAAI;AACtC,KAAK,OAAO,IAAI,KAAK,GAAG,QAAQ,IAAI;AACpC,KAAK,OAAO,IAAI,KAAK,GAAG,QAAQ,IAAI;AACpC,KAAK,YAAY,IAAI,KAAK,GAAG,aAAa,IAAI;AAC9C,KAAK,QAAQ,IAAI,KAAK,GAAG,SAAS,IAAI;AACtC,IAAM,QAAN,MAAY;AAAA,EACV,YAAY,MAAM,OAAO,eAAe;AACtC,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,gBAAgB;AACrB,SAAK,eAAe;AACpB,SAAK,YAAY;AAAA,EACnB;AAAA,EACA,WAAW;AACT,WAAO,SAAU,KAAK,IAAK,KAAM,KAAK,KAAM;AAAA,EAC9C;AACF;;;ACtCO,IAAM,YAAY,WAAW,WAAW,CAAC,WAAW,QAAQ,WAAW,WAAW,UAAU,OAAO,WAAW,OAAO,aAAa;AACzI,IAAM,cAAc,IAAI,YAAY;AACpC,IAAM,cAAc,IAAI,YAAY;AACpC,SAASC,UAASC,MAAK;AACrB,SAAO,aAAa,WAAW,OAAO,SAASA,IAAG;AACpD;AACO,SAAS,MAAMA,MAAK;AACzB,MAAI,EAAEA,gBAAe,aAAa;AAChC,WAAO,WAAW,KAAKA,IAAG;AAAA,EAC5B;AACA,SAAOD,UAASC,IAAG,IAAI,IAAI,WAAWA,KAAI,QAAQA,KAAI,YAAYA,KAAI,UAAU,IAAIA;AACtF;AACO,IAAM,WAAW,YAAY,CAAC,OAAO,OAAO,QAAQ;AACzD,SAAO,MAAM,QAAQ,KAAK,WAAW,OAAO,KAAK,MAAM,SAAS,OAAO,GAAG,CAAC,EAAE,SAAS,MAAM,IAAI,UAAU,OAAO,OAAO,GAAG;AAC7H,IAAI,CAAC,OAAO,OAAO,QAAQ;AACzB,SAAO,MAAM,QAAQ,KAAK,YAAY,OAAO,MAAM,SAAS,OAAO,GAAG,CAAC,IAAI,UAAU,OAAO,OAAO,GAAG;AACxG;AACO,IAAM,aAAa,YAAY,YAAU;AAC9C,SAAO,OAAO,SAAS,KAAK,WAAW,OAAO,KAAK,MAAM,IAAI,YAAY,MAAM;AACjF,IAAI,YAAU;AACZ,SAAO,OAAO,SAAS,KAAK,YAAY,OAAO,MAAM,IAAI,YAAY,MAAM;AAC7E;AACO,IAAM,YAAY,SAAO;AAC9B,SAAO,WAAW,KAAK,GAAG;AAC5B;AACO,IAAM,QAAQ,YAAY,CAAC,OAAO,OAAO,QAAQ;AACtD,MAAID,UAAS,KAAK,GAAG;AACnB,WAAO,IAAI,WAAW,MAAM,SAAS,OAAO,GAAG,CAAC;AAAA,EAClD;AACA,SAAO,MAAM,MAAM,OAAO,GAAG;AAC/B,IAAI,CAAC,OAAO,OAAO,QAAQ;AACzB,SAAO,MAAM,MAAM,OAAO,GAAG;AAC/B;AACO,IAAM,SAAS,YAAY,CAAC,QAAQE,YAAW;AACpD,WAAS,OAAO,IAAI,OAAK,aAAa,aAAa,IAAI,WAAW,OAAO,KAAK,CAAC,CAAC;AAChF,SAAO,MAAM,WAAW,OAAO,OAAO,QAAQA,OAAM,CAAC;AACvD,IAAI,CAAC,QAAQA,YAAW;AACtB,QAAM,MAAM,IAAI,WAAWA,OAAM;AACjC,MAAI,MAAM;AACV,WAAS,KAAK,QAAQ;AACpB,QAAI,MAAM,EAAE,SAAS,IAAI,QAAQ;AAC/B,UAAI,EAAE,SAAS,GAAG,IAAI,SAAS,GAAG;AAAA,IACpC;AACA,QAAI,IAAI,GAAG,GAAG;AACd,WAAO,EAAE;AAAA,EACX;AACA,SAAO;AACT;AACO,IAAM,QAAQ,YAAY,UAAQ;AACvC,SAAO,WAAW,OAAO,YAAY,IAAI;AAC3C,IAAI,UAAQ;AACV,SAAO,IAAI,WAAW,IAAI;AAC5B;AAsCO,SAAS,QAAQ,IAAI,IAAI;AAC9B,MAAIC,UAAS,EAAE,KAAKA,UAAS,EAAE,GAAG;AAChC,WAAO,GAAG,QAAQ,EAAE;AAAA,EACtB;AACA,WAAS,IAAI,GAAG,IAAI,GAAG,QAAQ,KAAK;AAClC,QAAI,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG;AACnB;AAAA,IACF;AACA,WAAO,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK;AAAA,EAC9B;AACA,SAAO;AACT;AACA,SAAS,YAAY,QAAQ,QAAQ,UAAU;AAC7C,MAAI;AACJ,QAAMC,UAAS,OAAO;AACtB,MAAI,gBAAgB;AACpB,QAAM,QAAQ,CAAC;AACf,WAAS,IAAI,GAAG,IAAIA,SAAQ,EAAE,GAAG;AAC/B,gBAAY,OAAO,WAAW,CAAC;AAC/B,QAAI,YAAY,SAAS,YAAY,OAAO;AAC1C,UAAI,CAAC,eAAe;AAClB,YAAI,YAAY,OAAO;AACrB,eAAK,SAAS,KAAK;AACjB,kBAAM,KAAK,KAAK,KAAK,GAAG;AAC1B;AAAA,QACF,WAAW,IAAI,MAAMA,SAAQ;AAC3B,eAAK,SAAS,KAAK;AACjB,kBAAM,KAAK,KAAK,KAAK,GAAG;AAC1B;AAAA,QACF;AACA,wBAAgB;AAChB;AAAA,MACF;AACA,UAAI,YAAY,OAAO;AACrB,aAAK,SAAS,KAAK;AACjB,gBAAM,KAAK,KAAK,KAAK,GAAG;AAC1B,wBAAgB;AAChB;AAAA,MACF;AACA,mBAAa,gBAAgB,SAAS,KAAK,YAAY,SAAS;AAAA,IAClE,WAAW,eAAe;AACxB,WAAK,SAAS,KAAK;AACjB,cAAM,KAAK,KAAK,KAAK,GAAG;AAAA,IAC5B;AACA,oBAAgB;AAChB,QAAI,YAAY,KAAK;AACnB,WAAK,SAAS,KAAK;AACjB;AACF,YAAM,KAAK,SAAS;AAAA,IACtB,WAAW,YAAY,MAAM;AAC3B,WAAK,SAAS,KAAK;AACjB;AACF,YAAM,KAAK,aAAa,IAAI,KAAK,YAAY,KAAK,GAAG;AAAA,IACvD,WAAW,YAAY,OAAO;AAC5B,WAAK,SAAS,KAAK;AACjB;AACF,YAAM,KAAK,aAAa,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,YAAY,KAAK,GAAG;AAAA,IACnF,WAAW,YAAY,SAAS;AAC9B,WAAK,SAAS,KAAK;AACjB;AACF,YAAM,KAAK,aAAa,KAAK,KAAK,aAAa,KAAK,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,YAAY,KAAK,GAAG;AAAA,IAC/G,OAAO;AACL,YAAM,IAAI,MAAM,oBAAoB;AAAA,IACtC;AAAA,EACF;AACA,SAAO;AACT;AACA,SAAS,UAAUC,MAAK,QAAQ,KAAK;AACnC,QAAM,MAAM,CAAC;AACb,SAAO,SAAS,KAAK;AACnB,UAAM,YAAYA,KAAI,MAAM;AAC5B,QAAI,YAAY;AAChB,QAAI,mBAAmB,YAAY,MAAM,IAAI,YAAY,MAAM,IAAI,YAAY,MAAM,IAAI;AACzF,QAAI,SAAS,oBAAoB,KAAK;AACpC,UAAI,YAAY,WAAW,YAAY;AACvC,cAAQ,kBAAkB;AAAA,QAC1B,KAAK;AACH,cAAI,YAAY,KAAK;AACnB,wBAAY;AAAA,UACd;AACA;AAAA,QACF,KAAK;AACH,uBAAaA,KAAI,SAAS,CAAC;AAC3B,eAAK,aAAa,SAAS,KAAK;AAC9B,6BAAiB,YAAY,OAAO,IAAI,aAAa;AACrD,gBAAI,gBAAgB,KAAK;AACvB,0BAAY;AAAA,YACd;AAAA,UACF;AACA;AAAA,QACF,KAAK;AACH,uBAAaA,KAAI,SAAS,CAAC;AAC3B,sBAAYA,KAAI,SAAS,CAAC;AAC1B,eAAK,aAAa,SAAS,QAAQ,YAAY,SAAS,KAAK;AAC3D,6BAAiB,YAAY,OAAO,MAAM,aAAa,OAAO,IAAI,YAAY;AAC9E,gBAAI,gBAAgB,SAAS,gBAAgB,SAAS,gBAAgB,QAAQ;AAC5E,0BAAY;AAAA,YACd;AAAA,UACF;AACA;AAAA,QACF,KAAK;AACH,uBAAaA,KAAI,SAAS,CAAC;AAC3B,sBAAYA,KAAI,SAAS,CAAC;AAC1B,uBAAaA,KAAI,SAAS,CAAC;AAC3B,eAAK,aAAa,SAAS,QAAQ,YAAY,SAAS,QAAQ,aAAa,SAAS,KAAK;AACzF,6BAAiB,YAAY,OAAO,MAAM,aAAa,OAAO,MAAM,YAAY,OAAO,IAAI,aAAa;AACxG,gBAAI,gBAAgB,SAAS,gBAAgB,SAAS;AACpD,0BAAY;AAAA,YACd;AAAA,UACF;AAAA,MACF;AAAA,IACF;AACA,QAAI,cAAc,MAAM;AACtB,kBAAY;AACZ,yBAAmB;AAAA,IACrB,WAAW,YAAY,OAAO;AAC5B,mBAAa;AACb,UAAI,KAAK,cAAc,KAAK,OAAO,KAAK;AACxC,kBAAY,QAAQ,YAAY;AAAA,IAClC;AACA,QAAI,KAAK,SAAS;AAClB,cAAU;AAAA,EACZ;AACA,SAAO,sBAAsB,GAAG;AAClC;AACA,IAAM,uBAAuB;AACtB,SAAS,sBAAsB,YAAY;AAChD,QAAM,MAAM,WAAW;AACvB,MAAI,OAAO,sBAAsB;AAC/B,WAAO,OAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,EACrD;AACA,MAAI,MAAM;AACV,MAAI,IAAI;AACR,SAAO,IAAI,KAAK;AACd,WAAO,OAAO,aAAa,MAAM,QAAQ,WAAW,MAAM,GAAG,KAAK,oBAAoB,CAAC;AAAA,EACzF;AACA,SAAO;AACT;;;AC9NA,IAAM,mBAAmB;AAClB,IAAM,KAAN,MAAS;AAAA,EACd,YAAY,YAAY,kBAAkB;AACxC,SAAK,YAAY;AACjB,SAAK,SAAS;AACd,SAAK,YAAY;AACjB,SAAK,SAAS,CAAC;AACf,SAAK,kBAAkB;AAAA,EACzB;AAAA,EACA,QAAQ;AACN,SAAK,SAAS;AACd,SAAK,YAAY;AACjB,QAAI,KAAK,OAAO,QAAQ;AACtB,WAAK,SAAS,CAAC;AAAA,IACjB;AACA,QAAI,KAAK,oBAAoB,MAAM;AACjC,WAAK,OAAO,KAAK,KAAK,eAAe;AACrC,WAAK,YAAY,KAAK,gBAAgB,SAAS;AAAA,IACjD;AAAA,EACF;AAAA,EACA,KAAK,OAAO;AACV,QAAI,WAAW,KAAK,OAAO,KAAK,OAAO,SAAS,CAAC;AACjD,UAAM,SAAS,KAAK,SAAS,MAAM;AACnC,QAAI,UAAU,KAAK,YAAY,GAAG;AAChC,YAAM,WAAW,SAAS,UAAU,KAAK,YAAY,KAAK,UAAU;AACpE,eAAS,IAAI,OAAO,QAAQ;AAAA,IAC9B,OAAO;AACL,UAAI,UAAU;AACZ,cAAM,WAAW,SAAS,UAAU,KAAK,YAAY,KAAK,UAAU;AACpE,YAAI,WAAW,SAAS,QAAQ;AAC9B,eAAK,OAAO,KAAK,OAAO,SAAS,CAAC,IAAI,SAAS,SAAS,GAAG,QAAQ;AACnE,eAAK,YAAY,KAAK,SAAS;AAAA,QACjC;AAAA,MACF;AACA,UAAI,MAAM,SAAS,MAAM,MAAM,SAAS,KAAK,WAAW;AACtD,mBAAW,MAAM,KAAK,SAAS;AAC/B,aAAK,OAAO,KAAK,QAAQ;AACzB,aAAK,aAAa,SAAS;AAC3B,YAAI,KAAK,oBAAoB,MAAM;AACjC,eAAK,kBAAkB;AAAA,QACzB;AACA,iBAAS,IAAI,OAAO,CAAC;AAAA,MACvB,OAAO;AACL,aAAK,OAAO,KAAK,KAAK;AACtB,aAAK,aAAa,MAAM;AAAA,MAC1B;AAAA,IACF;AACA,SAAK,UAAU,MAAM;AAAA,EACvB;AAAA,EACA,QAAQ,QAAQ,OAAO;AACrB,QAAI;AACJ,QAAI,KAAK,OAAO,WAAW,GAAG;AAC5B,YAAM,QAAQ,KAAK,OAAO,CAAC;AAC3B,UAAI,SAAS,KAAK,SAAS,MAAM,SAAS,GAAG;AAC3C,eAAO,KAAK,WAAW,MAAM,SAAS,QAAQ,MAAM,SAAS,GAAG,KAAK,MAAM;AAC3E,aAAK,kBAAkB;AACvB,aAAK,SAAS,CAAC;AAAA,MACjB,OAAO;AACL,eAAO,MAAM,OAAO,GAAG,KAAK,MAAM;AAAA,MACpC;AAAA,IACF,OAAO;AACL,aAAO,OAAO,KAAK,QAAQ,KAAK,MAAM;AAAA,IACxC;AACA,QAAI,OAAO;AACT,WAAK,MAAM;AAAA,IACb;AACA,WAAO;AAAA,EACT;AACF;;;ACzEA,IAAM,kBAAkB;AACxB,IAAM,kBAAkB;AACxB,IAAM,uBAAuB,CAAC;AAC9B,qBAAqB,EAAE,IAAI;AAC3B,qBAAqB,EAAE,IAAI;AAC3B,qBAAqB,EAAE,IAAI;AAC3B,qBAAqB,EAAE,IAAI;AAC3B,qBAAqB,EAAE,IAAI;AAC3B,SAAS,iBAAiB,MAAM,KAAK,MAAM;AACzC,MAAI,KAAK,SAAS,MAAM,MAAM;AAC5B,UAAM,IAAI,MAAM,GAAI,eAAgB,2BAA2B;AAAA,EACjE;AACF;;;ACJO,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO,sBAAsB;AAC/B;AACO,SAAS,UAAU,MAAM,QAAQ,SAAS;AAC/C,mBAAiB,MAAM,QAAQ,CAAC;AAChC,QAAM,QAAQ,KAAK,MAAM;AACzB,MAAI,QAAQ,WAAW,QAAQ,QAAQ,eAAe,CAAC,GAAG;AACxD,UAAM,IAAI,MAAM,GAAI,eAAgB,+DAA+D;AAAA,EACrG;AACA,SAAO;AACT;AACO,SAAS,WAAW,MAAM,QAAQ,SAAS;AAChD,mBAAiB,MAAM,QAAQ,CAAC;AAChC,QAAM,QAAQ,KAAK,MAAM,KAAK,IAAI,KAAK,SAAS,CAAC;AACjD,MAAI,QAAQ,WAAW,QAAQ,QAAQ,eAAe,CAAC,GAAG;AACxD,UAAM,IAAI,MAAM,GAAI,eAAgB,+DAA+D;AAAA,EACrG;AACA,SAAO;AACT;AACO,SAAS,WAAW,MAAM,QAAQ,SAAS;AAChD,mBAAiB,MAAM,QAAQ,CAAC;AAChC,QAAM,QAAQ,KAAK,MAAM,IAAI,YAAY,KAAK,SAAS,CAAC,KAAK,OAAO,KAAK,SAAS,CAAC,KAAK,KAAK,KAAK,SAAS,CAAC;AAC5G,MAAI,QAAQ,WAAW,QAAQ,QAAQ,eAAe,CAAC,GAAG;AACxD,UAAM,IAAI,MAAM,GAAI,eAAgB,+DAA+D;AAAA,EACrG;AACA,SAAO;AACT;AACO,SAAS,WAAW,MAAM,QAAQ,SAAS;AAChD,mBAAiB,MAAM,QAAQ,CAAC;AAChC,QAAM,KAAK,KAAK,MAAM,IAAI,YAAY,KAAK,SAAS,CAAC,KAAK,OAAO,KAAK,SAAS,CAAC,KAAK,KAAK,KAAK,SAAS,CAAC;AACzG,QAAM,KAAK,KAAK,SAAS,CAAC,IAAI,YAAY,KAAK,SAAS,CAAC,KAAK,OAAO,KAAK,SAAS,CAAC,KAAK,KAAK,KAAK,SAAS,CAAC;AAC7G,QAAM,SAAS,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE;AACpD,MAAI,QAAQ,WAAW,QAAQ,QAAQ,eAAe,CAAC,GAAG;AACxD,UAAM,IAAI,MAAM,GAAI,eAAgB,+DAA+D;AAAA,EACrG;AACA,MAAI,SAAS,OAAO,kBAAkB;AACpC,WAAO,OAAO,KAAK;AAAA,EACrB;AACA,MAAI,QAAQ,gBAAgB,MAAM;AAChC,WAAO;AAAA,EACT;AACA,QAAM,IAAI,MAAM,GAAI,eAAgB,+DAA+D;AACrG;AACO,SAAS,YAAY,MAAM,KAAK,QAAQ,SAAS;AACtD,SAAO,IAAI,MAAM,KAAK,MAAM,UAAU,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AAClE;AACO,SAAS,aAAa,MAAM,KAAK,QAAQ,SAAS;AACvD,SAAO,IAAI,MAAM,KAAK,MAAM,WAAW,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AACnE;AACO,SAAS,aAAa,MAAM,KAAK,QAAQ,SAAS;AACvD,SAAO,IAAI,MAAM,KAAK,MAAM,WAAW,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AACnE;AACO,SAAS,aAAa,MAAM,KAAK,QAAQ,SAAS;AACvD,SAAO,IAAI,MAAM,KAAK,MAAM,WAAW,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AACnE;AACO,SAAS,WAAWC,MAAK,OAAO;AACrC,SAAO,gBAAgBA,MAAK,GAAG,MAAM,KAAK;AAC5C;AACO,SAAS,gBAAgBA,MAAK,OAAO,MAAM;AAChD,MAAI,OAAO,eAAe,CAAC,GAAG;AAC5B,UAAM,QAAQ,OAAO,IAAI;AACzB,IAAAA,KAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;AAAA,EAC1B,WAAW,OAAO,eAAe,CAAC,GAAG;AACnC,UAAM,QAAQ,OAAO,IAAI;AACzB,IAAAA,KAAI,KAAK;AAAA,MACP,QAAQ;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH,WAAW,OAAO,eAAe,CAAC,GAAG;AACnC,UAAM,QAAQ,OAAO,IAAI;AACzB,IAAAA,KAAI,KAAK;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,QAAQ;AAAA,IACV,CAAC;AAAA,EACH,WAAW,OAAO,eAAe,CAAC,GAAG;AACnC,UAAM,QAAQ,OAAO,IAAI;AACzB,IAAAA,KAAI,KAAK;AAAA,MACP,QAAQ;AAAA,MACR,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,MACf,UAAU,IAAI;AAAA,MACd,QAAQ;AAAA,IACV,CAAC;AAAA,EACH,OAAO;AACL,UAAM,QAAQ,OAAO,IAAI;AACzB,QAAI,QAAQ,eAAe,CAAC,GAAG;AAC7B,YAAM,MAAM;AAAA,QACV,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,UAAI,KAAK,OAAO,QAAQ,OAAO,UAAU,CAAC;AAC1C,UAAI,KAAK,OAAO,SAAS,OAAO,EAAE,IAAI,OAAO,UAAU,CAAC;AACxD,UAAI,CAAC,IAAI,KAAK;AACd,WAAK,MAAM;AACX,UAAI,CAAC,IAAI,KAAK;AACd,WAAK,MAAM;AACX,UAAI,CAAC,IAAI,KAAK;AACd,WAAK,MAAM;AACX,UAAI,CAAC,IAAI,KAAK;AACd,UAAI,CAAC,IAAI,KAAK;AACd,WAAK,MAAM;AACX,UAAI,CAAC,IAAI,KAAK;AACd,WAAK,MAAM;AACX,UAAI,CAAC,IAAI,KAAK;AACd,WAAK,MAAM;AACX,UAAI,CAAC,IAAI,KAAK;AACd,MAAAA,KAAI,KAAK,GAAG;AAAA,IACd,OAAO;AACL,YAAM,IAAI,MAAM,GAAI,eAAgB,iDAAiD;AAAA,IACvF;AAAA,EACF;AACF;AACA,WAAW,cAAc,SAAS,YAAY,OAAO;AACnD,SAAO,gBAAgB,YAAY,MAAM,KAAK;AAChD;AACA,gBAAgB,cAAc,SAASC,aAAY,MAAM;AACvD,MAAI,OAAO,eAAe,CAAC,GAAG;AAC5B,WAAO;AAAA,EACT;AACA,MAAI,OAAO,eAAe,CAAC,GAAG;AAC5B,WAAO;AAAA,EACT;AACA,MAAI,OAAO,eAAe,CAAC,GAAG;AAC5B,WAAO;AAAA,EACT;AACA,MAAI,OAAO,eAAe,CAAC,GAAG;AAC5B,WAAO;AAAA,EACT;AACA,SAAO;AACT;AACA,WAAW,gBAAgB,SAAS,cAAc,MAAM,MAAM;AAC5D,SAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,KAAK,QAAQ,KAAK,QAAQ,IAAI;AACtE;;;ACjJO,SAAS,cAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAO,IAAI,MAAM,KAAK,QAAQ,KAAU,UAAU,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AAC9E;AACO,SAAS,eAAe,MAAM,KAAK,QAAQ,SAAS;AACzD,SAAO,IAAI,MAAM,KAAK,QAAQ,KAAU,WAAW,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AAC/E;AACO,SAAS,eAAe,MAAM,KAAK,QAAQ,SAAS;AACzD,SAAO,IAAI,MAAM,KAAK,QAAQ,KAAU,WAAW,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AAC/E;AACA,IAAM,QAAQ,OAAO,EAAE;AACvB,IAAM,QAAQ,OAAO,CAAC;AACf,SAAS,eAAe,MAAM,KAAK,QAAQ,SAAS;AACzD,QAAM,MAAW,WAAW,MAAM,MAAM,GAAG,OAAO;AAClD,MAAI,OAAO,QAAQ,UAAU;AAC3B,UAAM,QAAQ,KAAK;AACnB,QAAI,SAAS,OAAO,kBAAkB;AACpC,aAAO,IAAI,MAAM,KAAK,QAAQ,OAAO,CAAC;AAAA,IACxC;AAAA,EACF;AACA,MAAI,QAAQ,gBAAgB,MAAM;AAChC,UAAM,IAAI,MAAM,GAAI,eAAgB,+DAA+D;AAAA,EACrG;AACA,SAAO,IAAI,MAAM,KAAK,QAAQ,QAAQ,OAAO,GAAG,GAAG,CAAC;AACtD;AACO,SAAS,aAAaC,MAAK,OAAO;AACvC,QAAM,SAAS,MAAM;AACrB,QAAM,WAAW,OAAO,WAAW,WAAW,SAAS,QAAQ,QAAQ,SAAS,KAAK;AACrF,EAAK,gBAAgBA,MAAK,MAAM,KAAK,cAAc,QAAQ;AAC7D;AACA,aAAa,cAAc,SAASC,aAAY,OAAO;AACrD,QAAM,SAAS,MAAM;AACrB,QAAM,WAAW,OAAO,WAAW,WAAW,SAAS,QAAQ,QAAQ,SAAS,KAAK;AACrF,MAAI,WAAgB,eAAe,CAAC,GAAG;AACrC,WAAO;AAAA,EACT;AACA,MAAI,WAAgB,eAAe,CAAC,GAAG;AACrC,WAAO;AAAA,EACT;AACA,MAAI,WAAgB,eAAe,CAAC,GAAG;AACrC,WAAO;AAAA,EACT;AACA,MAAI,WAAgB,eAAe,CAAC,GAAG;AACrC,WAAO;AAAA,EACT;AACA,SAAO;AACT;AACA,aAAa,gBAAgB,SAASC,eAAc,MAAM,MAAM;AAC9D,SAAO,KAAK,QAAQ,KAAK,QAAQ,IAAI,KAAK,QAAQ,KAAK,QAAQ,KAAK;AACtE;;;ACxCA,SAAS,QAAQ,MAAM,KAAK,QAAQC,SAAQ;AAC1C,mBAAiB,MAAM,KAAK,SAASA,OAAM;AAC3C,QAAMC,OAAM,MAAM,MAAM,MAAM,QAAQ,MAAM,SAASD,OAAM;AAC3D,SAAO,IAAI,MAAM,KAAK,OAAOC,MAAK,SAASD,OAAM;AACnD;AACO,SAAS,mBAAmB,MAAM,KAAK,OAAO,UAAU;AAC7D,SAAO,QAAQ,MAAM,KAAK,GAAG,KAAK;AACpC;AACO,SAAS,aAAa,MAAM,KAAK,QAAQ,SAAS;AACvD,SAAO,QAAQ,MAAM,KAAK,GAAQ,UAAU,MAAM,MAAM,GAAG,OAAO,CAAC;AACrE;AACO,SAAS,cAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAO,QAAQ,MAAM,KAAK,GAAQ,WAAW,MAAM,MAAM,GAAG,OAAO,CAAC;AACtE;AACO,SAAS,cAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAO,QAAQ,MAAM,KAAK,GAAQ,WAAW,MAAM,MAAM,GAAG,OAAO,CAAC;AACtE;AACO,SAAS,cAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,QAAM,IAAS,WAAW,MAAM,MAAM,GAAG,OAAO;AAChD,MAAI,OAAO,MAAM,UAAU;AACzB,UAAM,IAAI,MAAM,GAAI,eAAgB,6CAA6C;AAAA,EACnF;AACA,SAAO,QAAQ,MAAM,KAAK,GAAG,CAAC;AAChC;AACA,SAAS,WAAW,OAAO;AACzB,MAAI,MAAM,iBAAiB,QAAW;AACpC,UAAM,eAAe,MAAM,SAAS,KAAK,SAAS,WAAW,MAAM,KAAK,IAAI,MAAM;AAAA,EACpF;AACA,SAAO,MAAM;AACf;AACO,SAAS,YAAYC,MAAK,OAAO;AACtC,QAAM,QAAQ,WAAW,KAAK;AAC9B,EAAK,gBAAgBA,MAAK,MAAM,KAAK,cAAc,MAAM,MAAM;AAC/D,EAAAA,KAAI,KAAK,KAAK;AAChB;AACA,YAAY,cAAc,SAASC,aAAY,OAAO;AACpD,QAAM,QAAQ,WAAW,KAAK;AAC9B,SAAY,gBAAgB,YAAY,MAAM,MAAM,IAAI,MAAM;AAChE;AACA,YAAY,gBAAgB,SAASC,eAAc,MAAM,MAAM;AAC7D,SAAO,aAAa,WAAW,IAAI,GAAG,WAAW,IAAI,CAAC;AACxD;AACO,SAAS,aAAa,IAAI,IAAI;AACnC,SAAO,GAAG,SAAS,GAAG,SAAS,KAAK,GAAG,SAAS,GAAG,SAAS,IAAI,QAAQ,IAAI,EAAE;AAChF;;;AC5CA,SAASC,SAAQ,MAAM,KAAK,QAAQC,SAAQ,SAAS;AACnD,QAAM,YAAY,SAASA;AAC3B,mBAAiB,MAAM,KAAK,SAAS;AACrC,QAAM,MAAM,IAAI,MAAM,KAAK,QAAQ,SAAS,MAAM,MAAM,QAAQ,MAAM,SAAS,GAAG,SAAS;AAC3F,MAAI,QAAQ,sBAAsB,MAAM;AACtC,QAAI,YAAY,MAAM,MAAM,MAAM,QAAQ,MAAM,SAAS;AAAA,EAC3D;AACA,SAAO;AACT;AACO,SAAS,oBAAoB,MAAM,KAAK,OAAO,SAAS;AAC7D,SAAOD,SAAQ,MAAM,KAAK,GAAG,OAAO,OAAO;AAC7C;AACO,SAAS,cAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAOA,SAAQ,MAAM,KAAK,GAAQ,UAAU,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO;AAC9E;AACO,SAAS,eAAe,MAAM,KAAK,QAAQ,SAAS;AACzD,SAAOA,SAAQ,MAAM,KAAK,GAAQ,WAAW,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO;AAC/E;AACO,SAAS,eAAe,MAAM,KAAK,QAAQ,SAAS;AACzD,SAAOA,SAAQ,MAAM,KAAK,GAAQ,WAAW,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO;AAC/E;AACO,SAAS,eAAe,MAAM,KAAK,QAAQ,SAAS;AACzD,QAAM,IAAS,WAAW,MAAM,MAAM,GAAG,OAAO;AAChD,MAAI,OAAO,MAAM,UAAU;AACzB,UAAM,IAAI,MAAM,GAAI,eAAgB,8CAA8C;AAAA,EACpF;AACA,SAAOA,SAAQ,MAAM,KAAK,GAAG,GAAG,OAAO;AACzC;AACO,IAAM,eAAe;;;ACpC5B,SAASE,SAAQ,OAAO,MAAM,QAAQC,SAAQ;AAC5C,SAAO,IAAI,MAAM,KAAK,OAAOA,SAAQ,MAAM;AAC7C;AACO,SAAS,mBAAmB,MAAM,KAAK,OAAO,UAAU;AAC7D,SAAOD,SAAQ,MAAM,KAAK,GAAG,KAAK;AACpC;AACO,SAAS,aAAa,MAAM,KAAK,QAAQ,SAAS;AACvD,SAAOA,SAAQ,MAAM,KAAK,GAAQ,UAAU,MAAM,MAAM,GAAG,OAAO,CAAC;AACrE;AACO,SAAS,cAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAOA,SAAQ,MAAM,KAAK,GAAQ,WAAW,MAAM,MAAM,GAAG,OAAO,CAAC;AACtE;AACO,SAAS,cAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAOA,SAAQ,MAAM,KAAK,GAAQ,WAAW,MAAM,MAAM,GAAG,OAAO,CAAC;AACtE;AACO,SAAS,cAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,QAAM,IAAS,WAAW,MAAM,MAAM,GAAG,OAAO;AAChD,MAAI,OAAO,MAAM,UAAU;AACzB,UAAM,IAAI,MAAM,GAAI,eAAgB,6CAA6C;AAAA,EACnF;AACA,SAAOA,SAAQ,MAAM,KAAK,GAAG,CAAC;AAChC;AACO,SAAS,sBAAsB,MAAM,KAAK,QAAQ,SAAS;AAChE,MAAI,QAAQ,oBAAoB,OAAO;AACrC,UAAM,IAAI,MAAM,GAAI,eAAgB,sCAAsC;AAAA,EAC5E;AACA,SAAOA,SAAQ,MAAM,KAAK,GAAG,QAAQ;AACvC;AACO,SAAS,YAAYE,MAAK,OAAO;AACtC,EAAK,gBAAgBA,MAAK,KAAK,MAAM,cAAc,MAAM,KAAK;AAChE;AACA,YAAY,gBAAqB,WAAW;AAC5C,YAAY,cAAc,SAASC,aAAY,OAAO;AACpD,SAAY,gBAAgB,YAAY,MAAM,KAAK;AACrD;;;AClCA,SAASC,SAAQ,OAAO,MAAM,QAAQC,SAAQ;AAC5C,SAAO,IAAI,MAAM,KAAK,KAAKA,SAAQ,MAAM;AAC3C;AACO,SAAS,iBAAiB,MAAM,KAAK,OAAO,UAAU;AAC3D,SAAOD,SAAQ,MAAM,KAAK,GAAG,KAAK;AACpC;AACO,SAAS,WAAW,MAAM,KAAK,QAAQ,SAAS;AACrD,SAAOA,SAAQ,MAAM,KAAK,GAAQ,UAAU,MAAM,MAAM,GAAG,OAAO,CAAC;AACrE;AACO,SAAS,YAAY,MAAM,KAAK,QAAQ,SAAS;AACtD,SAAOA,SAAQ,MAAM,KAAK,GAAQ,WAAW,MAAM,MAAM,GAAG,OAAO,CAAC;AACtE;AACO,SAAS,YAAY,MAAM,KAAK,QAAQ,SAAS;AACtD,SAAOA,SAAQ,MAAM,KAAK,GAAQ,WAAW,MAAM,MAAM,GAAG,OAAO,CAAC;AACtE;AACO,SAAS,YAAY,MAAM,KAAK,QAAQ,SAAS;AACtD,QAAM,IAAS,WAAW,MAAM,MAAM,GAAG,OAAO;AAChD,MAAI,OAAO,MAAM,UAAU;AACzB,UAAM,IAAI,MAAM,GAAI,eAAgB,2CAA2C;AAAA,EACjF;AACA,SAAOA,SAAQ,MAAM,KAAK,GAAG,CAAC;AAChC;AACO,SAAS,oBAAoB,MAAM,KAAK,QAAQ,SAAS;AAC9D,MAAI,QAAQ,oBAAoB,OAAO;AACrC,UAAM,IAAI,MAAM,GAAI,eAAgB,sCAAsC;AAAA,EAC5E;AACA,SAAOA,SAAQ,MAAM,KAAK,GAAG,QAAQ;AACvC;AACO,SAAS,UAAUE,MAAK,OAAO;AACpC,EAAK,gBAAgBA,MAAK,KAAK,IAAI,cAAc,MAAM,KAAK;AAC9D;AACA,UAAU,gBAAqB,WAAW;AAC1C,UAAU,cAAc,SAASC,aAAY,OAAO;AAClD,SAAY,gBAAgB,YAAY,MAAM,KAAK;AACrD;;;ACnCO,SAAS,iBAAiB,OAAO,MAAM,OAAO,UAAU;AAC7D,SAAO,IAAI,MAAM,KAAK,KAAK,OAAO,CAAC;AACrC;AACO,SAAS,WAAW,MAAM,KAAK,QAAQ,SAAS;AACrD,SAAO,IAAI,MAAM,KAAK,KAAU,UAAU,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AACtE;AACO,SAAS,YAAY,MAAM,KAAK,QAAQ,SAAS;AACtD,SAAO,IAAI,MAAM,KAAK,KAAU,WAAW,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AACvE;AACO,SAAS,YAAY,MAAM,KAAK,QAAQ,SAAS;AACtD,SAAO,IAAI,MAAM,KAAK,KAAU,WAAW,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AACvE;AACO,SAAS,YAAY,MAAM,KAAK,QAAQ,SAAS;AACtD,SAAO,IAAI,MAAM,KAAK,KAAU,WAAW,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AACvE;AACO,SAAS,UAAUC,MAAK,OAAO;AACpC,EAAK,gBAAgBA,MAAK,KAAK,IAAI,cAAc,MAAM,KAAK;AAC9D;AACA,UAAU,gBAAqB,WAAW;AAC1C,UAAU,cAAc,SAASC,aAAY,OAAO;AAClD,SAAY,gBAAgB,YAAY,MAAM,KAAK;AACrD;;;ACpBA,IAAM,cAAc;AACpB,IAAM,aAAa;AACnB,IAAM,aAAa;AACnB,IAAM,kBAAkB;AACjB,SAAS,gBAAgB,OAAO,MAAM,QAAQ,SAAS;AAC5D,MAAI,QAAQ,mBAAmB,OAAO;AACpC,UAAM,IAAI,MAAM,GAAI,eAAgB,qCAAqC;AAAA,EAC3E,WAAW,QAAQ,0BAA0B,MAAM;AACjD,WAAO,IAAI,MAAM,KAAK,MAAM,MAAM,CAAC;AAAA,EACrC;AACA,SAAO,IAAI,MAAM,KAAK,WAAW,QAAW,CAAC;AAC/C;AACO,SAAS,YAAY,OAAO,MAAM,QAAQ,SAAS;AACxD,MAAI,QAAQ,oBAAoB,OAAO;AACrC,UAAM,IAAI,MAAM,GAAI,eAAgB,sCAAsC;AAAA,EAC5E;AACA,SAAO,IAAI,MAAM,KAAK,OAAO,QAAW,CAAC;AAC3C;AACA,SAAS,YAAY,OAAO,OAAO,SAAS;AAC1C,MAAI,SAAS;AACX,QAAI,QAAQ,aAAa,SAAS,OAAO,MAAM,KAAK,GAAG;AACrD,YAAM,IAAI,MAAM,GAAI,eAAgB,+BAA+B;AAAA,IACrE;AACA,QAAI,QAAQ,kBAAkB,UAAU,UAAU,YAAY,UAAU,YAAY;AAClF,YAAM,IAAI,MAAM,GAAI,eAAgB,oCAAoC;AAAA,IAC1E;AAAA,EACF;AACA,SAAO,IAAI,MAAM,KAAK,OAAO,OAAO,KAAK;AAC3C;AACO,SAAS,cAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAO,YAAY,YAAY,MAAM,MAAM,CAAC,GAAG,GAAG,OAAO;AAC3D;AACO,SAAS,cAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAO,YAAY,YAAY,MAAM,MAAM,CAAC,GAAG,GAAG,OAAO;AAC3D;AACO,SAAS,cAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAO,YAAY,YAAY,MAAM,MAAM,CAAC,GAAG,GAAG,OAAO;AAC3D;AACO,SAAS,YAAYC,MAAK,OAAO,SAAS;AAC/C,QAAM,QAAQ,MAAM;AACpB,MAAI,UAAU,OAAO;AACnB,IAAAA,KAAI,KAAK,CAAC,KAAK,MAAM,eAAe,WAAW,CAAC;AAAA,EAClD,WAAW,UAAU,MAAM;AACzB,IAAAA,KAAI,KAAK,CAAC,KAAK,MAAM,eAAe,UAAU,CAAC;AAAA,EACjD,WAAW,UAAU,MAAM;AACzB,IAAAA,KAAI,KAAK,CAAC,KAAK,MAAM,eAAe,UAAU,CAAC;AAAA,EACjD,WAAW,UAAU,QAAW;AAC9B,IAAAA,KAAI,KAAK,CAAC,KAAK,MAAM,eAAe,eAAe,CAAC;AAAA,EACtD,OAAO;AACL,QAAI;AACJ,QAAI,UAAU;AACd,QAAI,CAAC,WAAW,QAAQ,YAAY,MAAM;AACxC,oBAAc,KAAK;AACnB,gBAAU,YAAY,MAAM,CAAC;AAC7B,UAAI,UAAU,WAAW,OAAO,MAAM,KAAK,GAAG;AAC5C,aAAK,CAAC,IAAI;AACV,QAAAA,KAAI,KAAK,KAAK,MAAM,GAAG,CAAC,CAAC;AACzB,kBAAU;AAAA,MACZ,OAAO;AACL,sBAAc,KAAK;AACnB,kBAAU,YAAY,MAAM,CAAC;AAC7B,YAAI,UAAU,SAAS;AACrB,eAAK,CAAC,IAAI;AACV,UAAAA,KAAI,KAAK,KAAK,MAAM,GAAG,CAAC,CAAC;AACzB,oBAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,SAAS;AACZ,oBAAc,KAAK;AACnB,gBAAU,YAAY,MAAM,CAAC;AAC7B,WAAK,CAAC,IAAI;AACV,MAAAA,KAAI,KAAK,KAAK,MAAM,GAAG,CAAC,CAAC;AAAA,IAC3B;AAAA,EACF;AACF;AACA,YAAY,cAAc,SAASC,aAAY,OAAO,SAAS;AAC7D,QAAM,QAAQ,MAAM;AACpB,MAAI,UAAU,SAAS,UAAU,QAAQ,UAAU,QAAQ,UAAU,QAAW;AAC9E,WAAO;AAAA,EACT;AACA,MAAI,CAAC,WAAW,QAAQ,YAAY,MAAM;AACxC,kBAAc,KAAK;AACnB,QAAI,UAAU,YAAY,MAAM,CAAC;AACjC,QAAI,UAAU,WAAW,OAAO,MAAM,KAAK,GAAG;AAC5C,aAAO;AAAA,IACT;AACA,kBAAc,KAAK;AACnB,cAAU,YAAY,MAAM,CAAC;AAC7B,QAAI,UAAU,SAAS;AACrB,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AACA,IAAM,SAAS,IAAI,YAAY,CAAC;AAChC,IAAM,WAAW,IAAI,SAAS,QAAQ,CAAC;AACvC,IAAM,OAAO,IAAI,WAAW,QAAQ,CAAC;AACrC,SAAS,cAAc,KAAK;AAC1B,MAAI,QAAQ,UAAU;AACpB,aAAS,UAAU,GAAG,OAAO,KAAK;AAAA,EACpC,WAAW,QAAQ,WAAW;AAC5B,aAAS,UAAU,GAAG,OAAO,KAAK;AAAA,EACpC,WAAW,OAAO,MAAM,GAAG,GAAG;AAC5B,aAAS,UAAU,GAAG,OAAO,KAAK;AAAA,EACpC,OAAO;AACL,aAAS,WAAW,GAAG,GAAG;AAC1B,UAAM,SAAS,SAAS,UAAU,CAAC;AACnC,UAAM,YAAY,SAAS,eAAe;AAC1C,UAAM,WAAW,SAAS;AAC1B,QAAI,aAAa,KAAK;AACpB,eAAS,UAAU,GAAG,OAAO,KAAK;AAAA,IACpC,WAAW,aAAa,GAAG;AACzB,eAAS,UAAU,IAAI,MAAM,eAAe,KAAK,YAAY,IAAI,KAAK;AAAA,IACxE,OAAO;AACL,YAAM,kBAAkB,WAAW;AACnC,UAAI,kBAAkB,KAAK;AACzB,iBAAS,UAAU,GAAG,CAAC;AAAA,MACzB,WAAW,kBAAkB,KAAK;AAChC,iBAAS,UAAU,IAAI,SAAS,eAAe,KAAK,KAAK,KAAK,iBAAiB,KAAK;AAAA,MACtF,OAAO;AACL,iBAAS,UAAU,IAAI,SAAS,eAAe,KAAK,kBAAkB,MAAM,KAAK,YAAY,IAAI,KAAK;AAAA,MACxG;AAAA,IACF;AAAA,EACF;AACF;AACA,SAAS,YAAYC,OAAM,KAAK;AAC9B,MAAIA,MAAK,SAAS,MAAM,GAAG;AACzB,UAAM,IAAI,MAAM,GAAI,eAAgB,8BAA8B;AAAA,EACpE;AACA,QAAM,QAAQA,MAAK,GAAG,KAAK,KAAKA,MAAK,MAAM,CAAC;AAC5C,MAAI,SAAS,OAAO;AAClB,WAAO;AAAA,EACT;AACA,MAAI,SAAS,OAAO;AAClB,WAAO;AAAA,EACT;AACA,MAAI,SAAS,OAAO;AAClB,WAAO;AAAA,EACT;AACA,QAAM,MAAM,QAAQ,KAAK;AACzB,QAAM,OAAO,OAAO;AACpB,MAAI;AACJ,MAAI,QAAQ,GAAG;AACb,UAAM,OAAO,KAAK;AAAA,EACpB,WAAW,QAAQ,IAAI;AACrB,WAAO,OAAO,QAAQ,MAAM,MAAM;AAAA,EACpC,OAAO;AACL,UAAM,SAAS,IAAI,WAAW;AAAA,EAChC;AACA,SAAO,OAAO,QAAQ,CAAC,MAAM;AAC/B;AACA,SAAS,cAAc,KAAK;AAC1B,WAAS,WAAW,GAAG,KAAK,KAAK;AACnC;AACA,SAAS,YAAYA,OAAM,KAAK;AAC9B,MAAIA,MAAK,SAAS,MAAM,GAAG;AACzB,UAAM,IAAI,MAAM,GAAI,eAAgB,8BAA8B;AAAA,EACpE;AACA,QAAM,UAAUA,MAAK,cAAc,KAAK;AACxC,SAAO,IAAI,SAASA,MAAK,QAAQ,QAAQ,CAAC,EAAE,WAAW,GAAG,KAAK;AACjE;AACA,SAAS,cAAc,KAAK;AAC1B,WAAS,WAAW,GAAG,KAAK,KAAK;AACnC;AACA,SAAS,YAAYA,OAAM,KAAK;AAC9B,MAAIA,MAAK,SAAS,MAAM,GAAG;AACzB,UAAM,IAAI,MAAM,GAAI,eAAgB,8BAA8B;AAAA,EACpE;AACA,QAAM,UAAUA,MAAK,cAAc,KAAK;AACxC,SAAO,IAAI,SAASA,MAAK,QAAQ,QAAQ,CAAC,EAAE,WAAW,GAAG,KAAK;AACjE;AACA,YAAY,gBAAgB,WAAW;;;ACpKvC,SAAS,aAAa,MAAM,KAAK,OAAO;AACtC,QAAM,IAAI,MAAM,GAAI,eAAgB,+BAAgC,KAAM,eAAgB,KAAK,GAAG,MAAM,CAAE,EAAE;AAC9G;AACA,SAAS,QAAQ,KAAK;AACpB,SAAO,MAAM;AACX,UAAM,IAAI,MAAM,GAAI,eAAgB,IAAK,GAAI,EAAE;AAAA,EACjD;AACF;AACO,IAAM,OAAO,CAAC;AACrB,SAAS,IAAI,GAAG,KAAK,IAAI,KAAK;AAC5B,OAAK,CAAC,IAAI;AACZ;AACA,KAAK,EAAE,IAAS;AAChB,KAAK,EAAE,IAAS;AAChB,KAAK,EAAE,IAAS;AAChB,KAAK,EAAE,IAAS;AAChB,KAAK,EAAE,IAAI;AACX,KAAK,EAAE,IAAI;AACX,KAAK,EAAE,IAAI;AACX,KAAK,EAAE,IAAI;AACX,SAAS,IAAI,IAAI,KAAK,IAAI,KAAK;AAC7B,OAAK,CAAC,IAAI;AACZ;AACA,KAAK,EAAE,IAAW;AAClB,KAAK,EAAE,IAAW;AAClB,KAAK,EAAE,IAAW;AAClB,KAAK,EAAE,IAAW;AAClB,KAAK,EAAE,IAAI;AACX,KAAK,EAAE,IAAI;AACX,KAAK,EAAE,IAAI;AACX,KAAK,EAAE,IAAI;AACX,SAAS,IAAI,IAAI,KAAK,IAAI,KAAK;AAC7B,OAAK,CAAC,IAAU;AAClB;AACA,KAAK,EAAE,IAAU;AACjB,KAAK,EAAE,IAAU;AACjB,KAAK,EAAE,IAAU;AACjB,KAAK,EAAE,IAAU;AACjB,KAAK,EAAE,IAAI;AACX,KAAK,EAAE,IAAI;AACX,KAAK,EAAE,IAAI;AACX,KAAK,EAAE,IAAI,QAAQ,mDAAmD;AACtE,SAAS,IAAI,IAAI,KAAK,KAAK,KAAK;AAC9B,OAAK,CAAC,IAAW;AACnB;AACA,KAAK,GAAG,IAAW;AACnB,KAAK,GAAG,IAAW;AACnB,KAAK,GAAG,IAAW;AACnB,KAAK,GAAG,IAAW;AACnB,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAI,QAAQ,mDAAmD;AACvE,SAAS,IAAI,KAAK,KAAK,KAAK,KAAK;AAC/B,OAAK,CAAC,IAAU;AAClB;AACA,KAAK,GAAG,IAAU;AAClB,KAAK,GAAG,IAAU;AAClB,KAAK,GAAG,IAAU;AAClB,KAAK,GAAG,IAAU;AAClB,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAU;AAClB,SAAS,IAAI,KAAK,KAAK,KAAK,KAAK;AAC/B,OAAK,CAAC,IAAQ;AAChB;AACA,KAAK,GAAG,IAAQ;AAChB,KAAK,GAAG,IAAQ;AAChB,KAAK,GAAG,IAAQ;AAChB,KAAK,GAAG,IAAQ;AAChB,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAQ;AAChB,SAAS,IAAI,KAAK,KAAK,KAAK,KAAK;AAC/B,OAAK,CAAC,IAAQ;AAChB;AACA,KAAK,GAAG,IAAQ;AAChB,KAAK,GAAG,IAAQ;AAChB,KAAK,GAAG,IAAQ;AAChB,KAAK,GAAG,IAAQ;AAChB,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAI;AACZ,SAAS,IAAI,KAAK,KAAK,KAAK,KAAK;AAC/B,OAAK,CAAC,IAAI,QAAQ,iCAAiC;AACrD;AACA,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAU;AAClB,KAAK,GAAG,IAAI,QAAQ,iCAAiC;AACrD,KAAK,GAAG,IAAU;AAClB,KAAK,GAAG,IAAU;AAClB,KAAK,GAAG,IAAU;AAClB,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAI;AACZ,KAAK,GAAG,IAAU;AACX,IAAM,QAAQ,CAAC;AACtB,SAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,QAAM,CAAC,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,CAAC;AACtC;AACA,SAAS,IAAI,IAAI,KAAK,KAAK,KAAK;AAC9B,QAAM,KAAK,CAAC,IAAI,IAAI,MAAM,KAAK,QAAQ,GAAG,CAAC;AAC7C;AACA,MAAM,EAAE,IAAI,IAAI,MAAM,KAAK,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC;AACtD,MAAM,EAAE,IAAI,IAAI,MAAM,KAAK,QAAQ,IAAI,CAAC;AACxC,MAAM,GAAG,IAAI,IAAI,MAAM,KAAK,OAAO,GAAG,CAAC;AACvC,MAAM,GAAG,IAAI,IAAI,MAAM,KAAK,KAAK,GAAG,CAAC;AACrC,MAAM,GAAG,IAAI,IAAI,MAAM,KAAK,OAAO,OAAO,CAAC;AAC3C,MAAM,GAAG,IAAI,IAAI,MAAM,KAAK,MAAM,MAAM,CAAC;AACzC,MAAM,GAAG,IAAI,IAAI,MAAM,KAAK,MAAM,MAAM,CAAC;AAClC,SAAS,iBAAiB,OAAO;AACtC,UAAQ,MAAM,MAAM;AAAA,IACpB,KAAK,KAAK;AACR,aAAO,UAAU,CAAC,GAAG,CAAC;AAAA,IACxB,KAAK,KAAK;AACR,aAAO,UAAU,CAAC,GAAG,CAAC;AAAA,IACxB,KAAK,KAAK;AACR,aAAO,UAAU,CAAC,GAAG,CAAC;AAAA,IACxB,KAAK,KAAK;AACR,UAAI,CAAC,MAAM,MAAM,QAAQ;AACvB,eAAO,UAAU,CAAC,EAAE,CAAC;AAAA,MACvB;AACA;AAAA,IACF,KAAK,KAAK;AACR,UAAI,MAAM,UAAU,IAAI;AACtB,eAAO,UAAU,CAAC,EAAE,CAAC;AAAA,MACvB;AACA;AAAA,IACF,KAAK,KAAK;AACR,UAAI,MAAM,UAAU,GAAG;AACrB,eAAO,UAAU,CAAC,GAAG,CAAC;AAAA,MACxB;AACA;AAAA,IACF,KAAK,KAAK;AACR,UAAI,MAAM,UAAU,GAAG;AACrB,eAAO,UAAU,CAAC,GAAG,CAAC;AAAA,MACxB;AACA;AAAA,IACF,KAAK,KAAK;AACR,UAAI,MAAM,QAAQ,IAAI;AACpB,eAAO,UAAU,CAAC,OAAO,MAAM,KAAK,CAAC,CAAC;AAAA,MACxC;AACA;AAAA,IACF,KAAK,KAAK;AACR,UAAI,MAAM,SAAS,KAAK;AACtB,eAAO,UAAU,CAAC,KAAK,OAAO,MAAM,KAAK,CAAC,CAAC;AAAA,MAC7C;AAAA,EACF;AACF;;;ACjJO,SAAS,mBAAmB;AACjC,QAAM,WAAW,CAAC;AAClB,WAAS,KAAK,KAAK,KAAK,IAAI;AAC5B,WAAS,KAAK,OAAO,KAAK,IAAI;AAC9B,WAAS,KAAK,MAAM,KAAK,IAAI;AAC7B,WAAS,KAAK,OAAO,KAAK,IAAI;AAC9B,WAAS,KAAK,MAAM,KAAK,IAAI;AAC7B,WAAS,KAAK,IAAI,KAAK,IAAI;AAC3B,WAAS,KAAK,IAAI,KAAK,IAAI;AAC3B,WAAS,KAAK,MAAM,KAAK,IAAI;AAC7B,SAAO;AACT;AACA,IAAM,eAAe,iBAAiB;AACtC,IAAM,MAAM,IAAI,GAAG;AACnB,IAAM,MAAN,MAAM,KAAI;AAAA,EACR,YAAY,KAAK,QAAQ;AACvB,SAAK,MAAM;AACX,SAAK,SAAS;AAAA,EAChB;AAAA,EACA,SAAS,KAAK;AACZ,QAAI,IAAI;AACR,OAAG;AACD,UAAI,EAAE,QAAQ,KAAK;AACjB,eAAO;AAAA,MACT;AAAA,IACF,SAAS,IAAI,EAAE;AACf,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAY,OAAO,KAAK;AAC7B,QAAI,SAAS,MAAM,SAAS,GAAG,GAAG;AAChC,YAAM,IAAI,MAAM,GAAI,eAAgB,sCAAsC;AAAA,IAC5E;AACA,WAAO,IAAI,KAAI,KAAK,KAAK;AAAA,EAC3B;AACF;AACA,IAAM,eAAe;AAAA,EACnB,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI;AAAA,EAC/B,WAAW,IAAI,MAAM,KAAK,WAAW,MAAS;AAAA,EAC9C,MAAM,IAAI,MAAM,KAAK,MAAM,IAAI;AAAA,EAC/B,OAAO,IAAI,MAAM,KAAK,OAAO,KAAK;AAAA,EAClC,YAAY,IAAI,MAAM,KAAK,OAAO,CAAC;AAAA,EACnC,UAAU,IAAI,MAAM,KAAK,KAAK,CAAC;AACjC;AACA,IAAM,eAAe;AAAA,EACnB,OAAO,KAAK,MAAM,UAAU,WAAW;AACrC,QAAI,CAAC,OAAO,UAAU,GAAG,KAAK,CAAC,OAAO,cAAc,GAAG,GAAG;AACxD,aAAO,IAAI,MAAM,KAAK,OAAO,GAAG;AAAA,IAClC,WAAW,OAAO,GAAG;AACnB,aAAO,IAAI,MAAM,KAAK,MAAM,GAAG;AAAA,IACjC,OAAO;AACL,aAAO,IAAI,MAAM,KAAK,QAAQ,GAAG;AAAA,IACnC;AAAA,EACF;AAAA,EACA,OAAO,KAAK,MAAM,UAAU,WAAW;AACrC,QAAI,OAAO,OAAO,CAAC,GAAG;AACpB,aAAO,IAAI,MAAM,KAAK,MAAM,GAAG;AAAA,IACjC,OAAO;AACL,aAAO,IAAI,MAAM,KAAK,QAAQ,GAAG;AAAA,IACnC;AAAA,EACF;AAAA,EACA,WAAW,KAAK,MAAM,UAAU,WAAW;AACzC,WAAO,IAAI,MAAM,KAAK,OAAO,GAAG;AAAA,EAClC;AAAA,EACA,OAAO,KAAK,MAAM,UAAU,WAAW;AACrC,WAAO,IAAI,MAAM,KAAK,QAAQ,GAAG;AAAA,EACnC;AAAA,EACA,QAAQ,KAAK,MAAM,UAAU,WAAW;AACtC,WAAO,MAAM,aAAa,OAAO,aAAa;AAAA,EAChD;AAAA,EACA,KAAK,MAAM,MAAM,UAAU,WAAW;AACpC,WAAO,aAAa;AAAA,EACtB;AAAA,EACA,UAAU,MAAM,MAAM,UAAU,WAAW;AACzC,WAAO,aAAa;AAAA,EACtB;AAAA,EACA,YAAY,KAAK,MAAM,UAAU,WAAW;AAC1C,WAAO,IAAI,MAAM,KAAK,OAAO,IAAI,WAAW,GAAG,CAAC;AAAA,EAClD;AAAA,EACA,SAAS,KAAK,MAAM,UAAU,WAAW;AACvC,WAAO,IAAI,MAAM,KAAK,OAAO,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU,CAAC;AAAA,EACzF;AAAA,EACA,MAAM,KAAK,MAAM,SAAS,UAAU;AAClC,QAAI,CAAC,IAAI,QAAQ;AACf,UAAI,QAAQ,mBAAmB,MAAM;AACnC,eAAO;AAAA,UACL,aAAa;AAAA,UACb,IAAI,MAAM,KAAK,KAAK;AAAA,QACtB;AAAA,MACF;AACA,aAAO,aAAa;AAAA,IACtB;AACA,eAAW,IAAI,YAAY,UAAU,GAAG;AACxC,UAAM,UAAU,CAAC;AACjB,QAAI,IAAI;AACR,eAAW,KAAK,KAAK;AACnB,cAAQ,GAAG,IAAI,eAAe,GAAG,SAAS,QAAQ;AAAA,IACpD;AACA,QAAI,QAAQ,gBAAgB;AAC1B,aAAO;AAAA,QACL,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM;AAAA,QAChC;AAAA,QACA,IAAI,MAAM,KAAK,KAAK;AAAA,MACtB;AAAA,IACF;AACA,WAAO;AAAA,MACL,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,KAAK,KAAK,SAAS,UAAU;AAClC,UAAM,QAAQ,QAAQ;AACtB,UAAM,OAAO,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,GAAG;AACjD,UAAMC,UAAS,QAAQ,IAAI,OAAO,KAAK;AACvC,QAAI,CAACA,SAAQ;AACX,UAAI,QAAQ,mBAAmB,MAAM;AACnC,eAAO;AAAA,UACL,aAAa;AAAA,UACb,IAAI,MAAM,KAAK,KAAK;AAAA,QACtB;AAAA,MACF;AACA,aAAO,aAAa;AAAA,IACtB;AACA,eAAW,IAAI,YAAY,UAAU,GAAG;AACxC,UAAM,UAAU,CAAC;AACjB,QAAI,IAAI;AACR,eAAW,OAAO,MAAM;AACtB,cAAQ,GAAG,IAAI;AAAA,QACb,eAAe,KAAK,SAAS,QAAQ;AAAA,QACrC,eAAe,QAAQ,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,SAAS,QAAQ;AAAA,MACnE;AAAA,IACF;AACA,mBAAe,SAAS,OAAO;AAC/B,QAAI,QAAQ,gBAAgB;AAC1B,aAAO;AAAA,QACL,IAAI,MAAM,KAAK,KAAKA,OAAM;AAAA,QAC1B;AAAA,QACA,IAAI,MAAM,KAAK,KAAK;AAAA,MACtB;AAAA,IACF;AACA,WAAO;AAAA,MACL,IAAI,MAAM,KAAK,KAAKA,OAAM;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AACF;AACA,aAAa,MAAM,aAAa;AAChC,aAAa,SAAS,aAAa;AACnC,WAAW,OAAO,iFAAiF,MAAM,GAAG,GAAG;AAC7G,eAAa,GAAI,GAAI,OAAO,IAAI,aAAa;AAC/C;AACA,SAAS,eAAe,KAAK,UAAU,CAAC,GAAG,UAAU;AACnD,QAAM,MAAM,GAAG,GAAG;AAClB,QAAM,oBAAoB,WAAW,QAAQ,gBAAgB,QAAQ,aAAa,GAAG,KAAK,aAAa,GAAG;AAC1G,MAAI,OAAO,sBAAsB,YAAY;AAC3C,UAAM,SAAS,kBAAkB,KAAK,KAAK,SAAS,QAAQ;AAC5D,QAAI,UAAU,MAAM;AAClB,aAAO;AAAA,IACT;AAAA,EACF;AACA,QAAM,cAAc,aAAa,GAAG;AACpC,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,MAAM,GAAI,eAAgB,sBAAuB,GAAI,EAAE;AAAA,EACnE;AACA,SAAO,YAAY,KAAK,KAAK,SAAS,QAAQ;AAChD;AACA,SAAS,eAAe,SAAS,SAAS;AACxC,MAAI,QAAQ,WAAW;AACrB,YAAQ,KAAK,QAAQ,SAAS;AAAA,EAChC;AACF;;;AC3JA,IAAM,OAAO,OAAO,IAAI,MAAM;AAC9B,IAAM,QAAQ,OAAO,IAAI,OAAO;;;AChChC,IAAMC,gBAAe,iBAAiB;AACtC,IAAM,uBAAuB;AAAA,EAC3B,SAAS;AAAA,EACT;AACF;AAOO,SAAS,eAAe,QAAQ,WAAWC,eAAc,UAAU,sBAAsB;AAC9F,MAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,QAAI,MAAM;AACV,eAAW,SAAS,QAAQ;AAC1B,aAAO,eAAe,OAAO,UAAU,OAAO;AAAA,IAChD;AACA,WAAO;AAAA,EACT,OAAO;AACL,UAAM,UAAU,SAAS,OAAO,KAAK,KAAK;AAC1C,QAAI,QAAQ,gBAAgB,UAAa,OAAO,QAAQ,gBAAgB,YAAY;AAClF,YAAM,IAAI,MAAM,eAAgB,OAAO,KAAK,IAAK,iCAAiC;AAAA,IACpF;AACA,WAAO,QAAQ,YAAY,QAAQ,OAAO;AAAA,EAC5C;AACF;;;AC9BA;AAAA;AAAA,cAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,YAAAC;AAAA;;;ACAA,IAAMC,WAAU;AAAA,EACd;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,IAAMC,mBAAkB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACO,SAASC,IAAG,OAAO;AACxB,MAAI,UAAU,MAAM;AAClB,WAAO;AAAA,EACT;AACA,MAAI,UAAU,QAAW;AACvB,WAAO;AAAA,EACT;AACA,MAAI,UAAU,QAAQ,UAAU,OAAO;AACrC,WAAO;AAAA,EACT;AACA,QAAM,SAAS,OAAO;AACtB,MAAIF,SAAQ,SAAS,MAAM,GAAG;AAC5B,WAAO;AAAA,EACT;AACA,MAAI,WAAW,YAAY;AACzB,WAAO;AAAA,EACT;AACA,MAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,WAAO;AAAA,EACT;AACA,MAAIG,UAAS,KAAK,GAAG;AACnB,WAAO;AAAA,EACT;AACA,QAAM,aAAaC,eAAc,KAAK;AACtC,MAAI,YAAY;AACd,WAAO;AAAA,EACT;AACA,SAAO;AACT;AACA,SAASD,UAAS,OAAO;AACvB,SAAO,SAAS,MAAM,eAAe,MAAM,YAAY,YAAY,MAAM,YAAY,SAAS,KAAK,MAAM,KAAK;AAChH;AACA,SAASC,eAAc,OAAO;AAC5B,QAAM,iBAAiB,OAAO,UAAU,SAAS,KAAK,KAAK,EAAE,MAAM,GAAG,EAAE;AACxE,MAAIH,iBAAgB,SAAS,cAAc,GAAG;AAC5C,WAAO;AAAA,EACT;AACA,SAAO;AACT;;;AChFA,IAAMI,QAAN,MAAW;AAAA,EACT,YAAY,OAAOC,OAAM,UAAU;AACjC,SAAK,QAAQ;AACb,SAAK,eAAe,SAAS;AAC7B,SAAK,OAAOA;AACZ,SAAK,WAAW;AAAA,EAClB;AAAA,EACA,WAAW;AACT,WAAO,QAAS,KAAK,KAAM,KAAM,KAAK,IAAK;AAAA,EAC7C;AAAA,EACA,QAAQ,KAAK;AACX,WAAO,KAAK,QAAQ,IAAI,QAAQ,KAAK,KAAK,QAAQ,IAAI,QAAQ,IAAI;AAAA,EACpE;AACF;AACAD,MAAK,OAAO,IAAIA,MAAK,GAAG,QAAQ,IAAI;AACpCA,MAAK,SAAS,IAAIA,MAAK,GAAG,UAAU,IAAI;AACxCA,MAAK,QAAQ,IAAIA,MAAK,GAAG,SAAS,IAAI;AACtCA,MAAK,SAAS,IAAIA,MAAK,GAAG,UAAU,IAAI;AACxCA,MAAK,QAAQ,IAAIA,MAAK,GAAG,SAAS,KAAK;AACvCA,MAAK,MAAM,IAAIA,MAAK,GAAG,OAAO,KAAK;AACnCA,MAAK,MAAM,IAAIA,MAAK,GAAG,OAAO,KAAK;AACnCA,MAAK,QAAQ,IAAIA,MAAK,GAAG,SAAS,IAAI;AACtCA,MAAK,QAAQ,IAAIA,MAAK,GAAG,SAAS,IAAI;AACtCA,MAAK,OAAO,IAAIA,MAAK,GAAG,QAAQ,IAAI;AACpCA,MAAK,OAAO,IAAIA,MAAK,GAAG,QAAQ,IAAI;AACpCA,MAAK,YAAY,IAAIA,MAAK,GAAG,aAAa,IAAI;AAC9CA,MAAK,QAAQ,IAAIA,MAAK,GAAG,SAAS,IAAI;AACtC,IAAME,SAAN,MAAY;AAAA,EACV,YAAY,MAAM,OAAO,eAAe;AACtC,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,gBAAgB;AACrB,SAAK,eAAe;AACpB,SAAK,YAAY;AAAA,EACnB;AAAA,EACA,WAAW;AACT,WAAO,SAAU,KAAK,IAAK,KAAM,KAAK,KAAM;AAAA,EAC9C;AACF;;;ACtCO,IAAMC,aAAY,WAAW,WAAW,CAAC,WAAW,QAAQ,WAAW,WAAW,UAAU,OAAO,WAAW,OAAO,aAAa;AACzI,IAAMC,eAAc,IAAI,YAAY;AACpC,IAAMC,eAAc,IAAI,YAAY;AACpC,SAASC,UAASC,MAAK;AACrB,SAAOJ,cAAa,WAAW,OAAO,SAASI,IAAG;AACpD;AACO,SAASC,OAAMD,MAAK;AACzB,MAAI,EAAEA,gBAAe,aAAa;AAChC,WAAO,WAAW,KAAKA,IAAG;AAAA,EAC5B;AACA,SAAOD,UAASC,IAAG,IAAI,IAAI,WAAWA,KAAI,QAAQA,KAAI,YAAYA,KAAI,UAAU,IAAIA;AACtF;AACO,IAAME,YAAWN,aAAY,CAAC,OAAO,OAAO,QAAQ;AACzD,SAAO,MAAM,QAAQ,KAAK,WAAW,OAAO,KAAK,MAAM,SAAS,OAAO,GAAG,CAAC,EAAE,SAAS,MAAM,IAAIO,WAAU,OAAO,OAAO,GAAG;AAC7H,IAAI,CAAC,OAAO,OAAO,QAAQ;AACzB,SAAO,MAAM,QAAQ,KAAKN,aAAY,OAAO,MAAM,SAAS,OAAO,GAAG,CAAC,IAAIM,WAAU,OAAO,OAAO,GAAG;AACxG;AACO,IAAMC,cAAaR,aAAY,YAAU;AAC9C,SAAO,OAAO,SAAS,KAAK,WAAW,OAAO,KAAK,MAAM,IAAIS,aAAY,MAAM;AACjF,IAAI,YAAU;AACZ,SAAO,OAAO,SAAS,KAAKP,aAAY,OAAO,MAAM,IAAIO,aAAY,MAAM;AAC7E;AACO,IAAMC,aAAY,SAAO;AAC9B,SAAO,WAAW,KAAK,GAAG;AAC5B;AACO,IAAMC,SAAQX,aAAY,CAAC,OAAO,OAAO,QAAQ;AACtD,MAAIG,UAAS,KAAK,GAAG;AACnB,WAAO,IAAI,WAAW,MAAM,SAAS,OAAO,GAAG,CAAC;AAAA,EAClD;AACA,SAAO,MAAM,MAAM,OAAO,GAAG;AAC/B,IAAI,CAAC,OAAO,OAAO,QAAQ;AACzB,SAAO,MAAM,MAAM,OAAO,GAAG;AAC/B;AACO,IAAMS,UAASZ,aAAY,CAAC,QAAQa,YAAW;AACpD,WAAS,OAAO,IAAI,OAAK,aAAa,aAAa,IAAI,WAAW,OAAO,KAAK,CAAC,CAAC;AAChF,SAAOR,OAAM,WAAW,OAAO,OAAO,QAAQQ,OAAM,CAAC;AACvD,IAAI,CAAC,QAAQA,YAAW;AACtB,QAAM,MAAM,IAAI,WAAWA,OAAM;AACjC,MAAI,MAAM;AACV,WAAS,KAAK,QAAQ;AACpB,QAAI,MAAM,EAAE,SAAS,IAAI,QAAQ;AAC/B,UAAI,EAAE,SAAS,GAAG,IAAI,SAAS,GAAG;AAAA,IACpC;AACA,QAAI,IAAI,GAAG,GAAG;AACd,WAAO,EAAE;AAAA,EACX;AACA,SAAO;AACT;AACO,IAAMC,SAAQd,aAAY,UAAQ;AACvC,SAAO,WAAW,OAAO,YAAY,IAAI;AAC3C,IAAI,UAAQ;AACV,SAAO,IAAI,WAAW,IAAI;AAC5B;AAsCO,SAASe,SAAQ,IAAI,IAAI;AAC9B,MAAIC,UAAS,EAAE,KAAKA,UAAS,EAAE,GAAG;AAChC,WAAO,GAAG,QAAQ,EAAE;AAAA,EACtB;AACA,WAAS,IAAI,GAAG,IAAI,GAAG,QAAQ,KAAK;AAClC,QAAI,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG;AACnB;AAAA,IACF;AACA,WAAO,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK;AAAA,EAC9B;AACA,SAAO;AACT;AACA,SAASC,aAAY,QAAQ,QAAQ,UAAU;AAC7C,MAAI;AACJ,QAAMC,UAAS,OAAO;AACtB,MAAI,gBAAgB;AACpB,QAAM,QAAQ,CAAC;AACf,WAAS,IAAI,GAAG,IAAIA,SAAQ,EAAE,GAAG;AAC/B,gBAAY,OAAO,WAAW,CAAC;AAC/B,QAAI,YAAY,SAAS,YAAY,OAAO;AAC1C,UAAI,CAAC,eAAe;AAClB,YAAI,YAAY,OAAO;AACrB,eAAK,SAAS,KAAK;AACjB,kBAAM,KAAK,KAAK,KAAK,GAAG;AAC1B;AAAA,QACF,WAAW,IAAI,MAAMA,SAAQ;AAC3B,eAAK,SAAS,KAAK;AACjB,kBAAM,KAAK,KAAK,KAAK,GAAG;AAC1B;AAAA,QACF;AACA,wBAAgB;AAChB;AAAA,MACF;AACA,UAAI,YAAY,OAAO;AACrB,aAAK,SAAS,KAAK;AACjB,gBAAM,KAAK,KAAK,KAAK,GAAG;AAC1B,wBAAgB;AAChB;AAAA,MACF;AACA,mBAAa,gBAAgB,SAAS,KAAK,YAAY,SAAS;AAAA,IAClE,WAAW,eAAe;AACxB,WAAK,SAAS,KAAK;AACjB,cAAM,KAAK,KAAK,KAAK,GAAG;AAAA,IAC5B;AACA,oBAAgB;AAChB,QAAI,YAAY,KAAK;AACnB,WAAK,SAAS,KAAK;AACjB;AACF,YAAM,KAAK,SAAS;AAAA,IACtB,WAAW,YAAY,MAAM;AAC3B,WAAK,SAAS,KAAK;AACjB;AACF,YAAM,KAAK,aAAa,IAAI,KAAK,YAAY,KAAK,GAAG;AAAA,IACvD,WAAW,YAAY,OAAO;AAC5B,WAAK,SAAS,KAAK;AACjB;AACF,YAAM,KAAK,aAAa,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,YAAY,KAAK,GAAG;AAAA,IACnF,WAAW,YAAY,SAAS;AAC9B,WAAK,SAAS,KAAK;AACjB;AACF,YAAM,KAAK,aAAa,KAAK,KAAK,aAAa,KAAK,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,YAAY,KAAK,GAAG;AAAA,IAC/G,OAAO;AACL,YAAM,IAAI,MAAM,oBAAoB;AAAA,IACtC;AAAA,EACF;AACA,SAAO;AACT;AACA,SAASC,WAAUC,MAAK,QAAQ,KAAK;AACnC,QAAM,MAAM,CAAC;AACb,SAAO,SAAS,KAAK;AACnB,UAAM,YAAYA,KAAI,MAAM;AAC5B,QAAI,YAAY;AAChB,QAAI,mBAAmB,YAAY,MAAM,IAAI,YAAY,MAAM,IAAI,YAAY,MAAM,IAAI;AACzF,QAAI,SAAS,oBAAoB,KAAK;AACpC,UAAI,YAAY,WAAW,YAAY;AACvC,cAAQ,kBAAkB;AAAA,QAC1B,KAAK;AACH,cAAI,YAAY,KAAK;AACnB,wBAAY;AAAA,UACd;AACA;AAAA,QACF,KAAK;AACH,uBAAaA,KAAI,SAAS,CAAC;AAC3B,eAAK,aAAa,SAAS,KAAK;AAC9B,6BAAiB,YAAY,OAAO,IAAI,aAAa;AACrD,gBAAI,gBAAgB,KAAK;AACvB,0BAAY;AAAA,YACd;AAAA,UACF;AACA;AAAA,QACF,KAAK;AACH,uBAAaA,KAAI,SAAS,CAAC;AAC3B,sBAAYA,KAAI,SAAS,CAAC;AAC1B,eAAK,aAAa,SAAS,QAAQ,YAAY,SAAS,KAAK;AAC3D,6BAAiB,YAAY,OAAO,MAAM,aAAa,OAAO,IAAI,YAAY;AAC9E,gBAAI,gBAAgB,SAAS,gBAAgB,SAAS,gBAAgB,QAAQ;AAC5E,0BAAY;AAAA,YACd;AAAA,UACF;AACA;AAAA,QACF,KAAK;AACH,uBAAaA,KAAI,SAAS,CAAC;AAC3B,sBAAYA,KAAI,SAAS,CAAC;AAC1B,uBAAaA,KAAI,SAAS,CAAC;AAC3B,eAAK,aAAa,SAAS,QAAQ,YAAY,SAAS,QAAQ,aAAa,SAAS,KAAK;AACzF,6BAAiB,YAAY,OAAO,MAAM,aAAa,OAAO,MAAM,YAAY,OAAO,IAAI,aAAa;AACxG,gBAAI,gBAAgB,SAAS,gBAAgB,SAAS;AACpD,0BAAY;AAAA,YACd;AAAA,UACF;AAAA,MACF;AAAA,IACF;AACA,QAAI,cAAc,MAAM;AACtB,kBAAY;AACZ,yBAAmB;AAAA,IACrB,WAAW,YAAY,OAAO;AAC5B,mBAAa;AACb,UAAI,KAAK,cAAc,KAAK,OAAO,KAAK;AACxC,kBAAY,QAAQ,YAAY;AAAA,IAClC;AACA,QAAI,KAAK,SAAS;AAClB,cAAU;AAAA,EACZ;AACA,SAAOC,uBAAsB,GAAG;AAClC;AACA,IAAMC,wBAAuB;AACtB,SAASD,uBAAsB,YAAY;AAChD,QAAM,MAAM,WAAW;AACvB,MAAI,OAAOC,uBAAsB;AAC/B,WAAO,OAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,EACrD;AACA,MAAI,MAAM;AACV,MAAI,IAAI;AACR,SAAO,IAAI,KAAK;AACd,WAAO,OAAO,aAAa,MAAM,QAAQ,WAAW,MAAM,GAAG,KAAKA,qBAAoB,CAAC;AAAA,EACzF;AACA,SAAO;AACT;;;AC9NA,IAAMC,oBAAmB;AAClB,IAAMC,MAAN,MAAS;AAAA,EACd,YAAY,YAAYD,mBAAkB;AACxC,SAAK,YAAY;AACjB,SAAK,SAAS;AACd,SAAK,YAAY;AACjB,SAAK,SAAS,CAAC;AACf,SAAK,kBAAkB;AAAA,EACzB;AAAA,EACA,QAAQ;AACN,SAAK,SAAS;AACd,SAAK,YAAY;AACjB,QAAI,KAAK,OAAO,QAAQ;AACtB,WAAK,SAAS,CAAC;AAAA,IACjB;AACA,QAAI,KAAK,oBAAoB,MAAM;AACjC,WAAK,OAAO,KAAK,KAAK,eAAe;AACrC,WAAK,YAAY,KAAK,gBAAgB,SAAS;AAAA,IACjD;AAAA,EACF;AAAA,EACA,KAAK,OAAO;AACV,QAAI,WAAW,KAAK,OAAO,KAAK,OAAO,SAAS,CAAC;AACjD,UAAM,SAAS,KAAK,SAAS,MAAM;AACnC,QAAI,UAAU,KAAK,YAAY,GAAG;AAChC,YAAM,WAAW,SAAS,UAAU,KAAK,YAAY,KAAK,UAAU;AACpE,eAAS,IAAI,OAAO,QAAQ;AAAA,IAC9B,OAAO;AACL,UAAI,UAAU;AACZ,cAAM,WAAW,SAAS,UAAU,KAAK,YAAY,KAAK,UAAU;AACpE,YAAI,WAAW,SAAS,QAAQ;AAC9B,eAAK,OAAO,KAAK,OAAO,SAAS,CAAC,IAAI,SAAS,SAAS,GAAG,QAAQ;AACnE,eAAK,YAAY,KAAK,SAAS;AAAA,QACjC;AAAA,MACF;AACA,UAAI,MAAM,SAAS,MAAM,MAAM,SAAS,KAAK,WAAW;AACtD,mBAAWE,OAAM,KAAK,SAAS;AAC/B,aAAK,OAAO,KAAK,QAAQ;AACzB,aAAK,aAAa,SAAS;AAC3B,YAAI,KAAK,oBAAoB,MAAM;AACjC,eAAK,kBAAkB;AAAA,QACzB;AACA,iBAAS,IAAI,OAAO,CAAC;AAAA,MACvB,OAAO;AACL,aAAK,OAAO,KAAK,KAAK;AACtB,aAAK,aAAa,MAAM;AAAA,MAC1B;AAAA,IACF;AACA,SAAK,UAAU,MAAM;AAAA,EACvB;AAAA,EACA,QAAQ,QAAQ,OAAO;AACrB,QAAI;AACJ,QAAI,KAAK,OAAO,WAAW,GAAG;AAC5B,YAAM,QAAQ,KAAK,OAAO,CAAC;AAC3B,UAAI,SAAS,KAAK,SAAS,MAAM,SAAS,GAAG;AAC3C,eAAO,KAAK,WAAW,MAAM,SAAS,QAAQ,MAAM,SAAS,GAAG,KAAK,MAAM;AAC3E,aAAK,kBAAkB;AACvB,aAAK,SAAS,CAAC;AAAA,MACjB,OAAO;AACL,eAAOC,OAAM,OAAO,GAAG,KAAK,MAAM;AAAA,MACpC;AAAA,IACF,OAAO;AACL,aAAOC,QAAO,KAAK,QAAQ,KAAK,MAAM;AAAA,IACxC;AACA,QAAI,OAAO;AACT,WAAK,MAAM;AAAA,IACb;AACA,WAAO;AAAA,EACT;AACF;;;ACzEA,IAAMC,mBAAkB;AACxB,IAAMC,mBAAkB;AACxB,IAAMC,wBAAuB,CAAC;AAC9BA,sBAAqB,EAAE,IAAI;AAC3BA,sBAAqB,EAAE,IAAI;AAC3BA,sBAAqB,EAAE,IAAI;AAC3BA,sBAAqB,EAAE,IAAI;AAC3BA,sBAAqB,EAAE,IAAI;AAC3B,SAASC,kBAAiB,MAAM,KAAK,MAAM;AACzC,MAAI,KAAK,SAAS,MAAM,MAAM;AAC5B,UAAM,IAAI,MAAM,GAAIH,gBAAgB,2BAA2B;AAAA,EACjE;AACF;;;ACJO,IAAMI,kBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,OAAO,sBAAsB;AAC/B;AACO,SAASC,WAAU,MAAM,QAAQ,SAAS;AAC/C,EAAAC,kBAAiB,MAAM,QAAQ,CAAC;AAChC,QAAM,QAAQ,KAAK,MAAM;AACzB,MAAI,QAAQ,WAAW,QAAQ,QAAQF,gBAAe,CAAC,GAAG;AACxD,UAAM,IAAI,MAAM,GAAIG,gBAAgB,+DAA+D;AAAA,EACrG;AACA,SAAO;AACT;AACO,SAASC,YAAW,MAAM,QAAQ,SAAS;AAChD,EAAAF,kBAAiB,MAAM,QAAQ,CAAC;AAChC,QAAM,QAAQ,KAAK,MAAM,KAAK,IAAI,KAAK,SAAS,CAAC;AACjD,MAAI,QAAQ,WAAW,QAAQ,QAAQF,gBAAe,CAAC,GAAG;AACxD,UAAM,IAAI,MAAM,GAAIG,gBAAgB,+DAA+D;AAAA,EACrG;AACA,SAAO;AACT;AACO,SAASE,YAAW,MAAM,QAAQ,SAAS;AAChD,EAAAH,kBAAiB,MAAM,QAAQ,CAAC;AAChC,QAAM,QAAQ,KAAK,MAAM,IAAI,YAAY,KAAK,SAAS,CAAC,KAAK,OAAO,KAAK,SAAS,CAAC,KAAK,KAAK,KAAK,SAAS,CAAC;AAC5G,MAAI,QAAQ,WAAW,QAAQ,QAAQF,gBAAe,CAAC,GAAG;AACxD,UAAM,IAAI,MAAM,GAAIG,gBAAgB,+DAA+D;AAAA,EACrG;AACA,SAAO;AACT;AACO,SAASG,YAAW,MAAM,QAAQ,SAAS;AAChD,EAAAJ,kBAAiB,MAAM,QAAQ,CAAC;AAChC,QAAM,KAAK,KAAK,MAAM,IAAI,YAAY,KAAK,SAAS,CAAC,KAAK,OAAO,KAAK,SAAS,CAAC,KAAK,KAAK,KAAK,SAAS,CAAC;AACzG,QAAM,KAAK,KAAK,SAAS,CAAC,IAAI,YAAY,KAAK,SAAS,CAAC,KAAK,OAAO,KAAK,SAAS,CAAC,KAAK,KAAK,KAAK,SAAS,CAAC;AAC7G,QAAM,SAAS,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE;AACpD,MAAI,QAAQ,WAAW,QAAQ,QAAQF,gBAAe,CAAC,GAAG;AACxD,UAAM,IAAI,MAAM,GAAIG,gBAAgB,+DAA+D;AAAA,EACrG;AACA,MAAI,SAAS,OAAO,kBAAkB;AACpC,WAAO,OAAO,KAAK;AAAA,EACrB;AACA,MAAI,QAAQ,gBAAgB,MAAM;AAChC,WAAO;AAAA,EACT;AACA,QAAM,IAAI,MAAM,GAAIA,gBAAgB,+DAA+D;AACrG;AACO,SAASI,aAAY,MAAM,KAAK,QAAQ,SAAS;AACtD,SAAO,IAAIC,OAAMC,MAAK,MAAMR,WAAU,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AAClE;AACO,SAASS,cAAa,MAAM,KAAK,QAAQ,SAAS;AACvD,SAAO,IAAIF,OAAMC,MAAK,MAAML,YAAW,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AACnE;AACO,SAASO,cAAa,MAAM,KAAK,QAAQ,SAAS;AACvD,SAAO,IAAIH,OAAMC,MAAK,MAAMJ,YAAW,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AACnE;AACO,SAASO,cAAa,MAAM,KAAK,QAAQ,SAAS;AACvD,SAAO,IAAIJ,OAAMC,MAAK,MAAMH,YAAW,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AACnE;AACO,SAASO,YAAWC,MAAK,OAAO;AACrC,SAAOC,iBAAgBD,MAAK,GAAG,MAAM,KAAK;AAC5C;AACO,SAASC,iBAAgBD,MAAK,OAAO,MAAM;AAChD,MAAI,OAAOd,gBAAe,CAAC,GAAG;AAC5B,UAAM,QAAQ,OAAO,IAAI;AACzB,IAAAc,KAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;AAAA,EAC1B,WAAW,OAAOd,gBAAe,CAAC,GAAG;AACnC,UAAM,QAAQ,OAAO,IAAI;AACzB,IAAAc,KAAI,KAAK;AAAA,MACP,QAAQ;AAAA,MACR;AAAA,IACF,CAAC;AAAA,EACH,WAAW,OAAOd,gBAAe,CAAC,GAAG;AACnC,UAAM,QAAQ,OAAO,IAAI;AACzB,IAAAc,KAAI,KAAK;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,QAAQ;AAAA,IACV,CAAC;AAAA,EACH,WAAW,OAAOd,gBAAe,CAAC,GAAG;AACnC,UAAM,QAAQ,OAAO,IAAI;AACzB,IAAAc,KAAI,KAAK;AAAA,MACP,QAAQ;AAAA,MACR,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,MACf,UAAU,IAAI;AAAA,MACd,QAAQ;AAAA,IACV,CAAC;AAAA,EACH,OAAO;AACL,UAAM,QAAQ,OAAO,IAAI;AACzB,QAAI,QAAQd,gBAAe,CAAC,GAAG;AAC7B,YAAM,MAAM;AAAA,QACV,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,UAAI,KAAK,OAAO,QAAQ,OAAO,UAAU,CAAC;AAC1C,UAAI,KAAK,OAAO,SAAS,OAAO,EAAE,IAAI,OAAO,UAAU,CAAC;AACxD,UAAI,CAAC,IAAI,KAAK;AACd,WAAK,MAAM;AACX,UAAI,CAAC,IAAI,KAAK;AACd,WAAK,MAAM;AACX,UAAI,CAAC,IAAI,KAAK;AACd,WAAK,MAAM;AACX,UAAI,CAAC,IAAI,KAAK;AACd,UAAI,CAAC,IAAI,KAAK;AACd,WAAK,MAAM;AACX,UAAI,CAAC,IAAI,KAAK;AACd,WAAK,MAAM;AACX,UAAI,CAAC,IAAI,KAAK;AACd,WAAK,MAAM;AACX,UAAI,CAAC,IAAI,KAAK;AACd,MAAAc,KAAI,KAAK,GAAG;AAAA,IACd,OAAO;AACL,YAAM,IAAI,MAAM,GAAIX,gBAAgB,iDAAiD;AAAA,IACvF;AAAA,EACF;AACF;AACAU,YAAW,cAAc,SAASG,aAAY,OAAO;AACnD,SAAOD,iBAAgB,YAAY,MAAM,KAAK;AAChD;AACAA,iBAAgB,cAAc,SAASC,cAAY,MAAM;AACvD,MAAI,OAAOhB,gBAAe,CAAC,GAAG;AAC5B,WAAO;AAAA,EACT;AACA,MAAI,OAAOA,gBAAe,CAAC,GAAG;AAC5B,WAAO;AAAA,EACT;AACA,MAAI,OAAOA,gBAAe,CAAC,GAAG;AAC5B,WAAO;AAAA,EACT;AACA,MAAI,OAAOA,gBAAe,CAAC,GAAG;AAC5B,WAAO;AAAA,EACT;AACA,SAAO;AACT;AACAa,YAAW,gBAAgB,SAASI,eAAc,MAAM,MAAM;AAC5D,SAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,KAAK,QAAQ,KAAK,QAAQ,IAAI;AACtE;;;ACjJO,SAASC,eAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAO,IAAIC,OAAMC,MAAK,QAAQ,KAAUC,WAAU,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AAC9E;AACO,SAASC,gBAAe,MAAM,KAAK,QAAQ,SAAS;AACzD,SAAO,IAAIH,OAAMC,MAAK,QAAQ,KAAUG,YAAW,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AAC/E;AACO,SAASC,gBAAe,MAAM,KAAK,QAAQ,SAAS;AACzD,SAAO,IAAIL,OAAMC,MAAK,QAAQ,KAAUK,YAAW,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AAC/E;AACA,IAAMC,SAAQ,OAAO,EAAE;AACvB,IAAMC,SAAQ,OAAO,CAAC;AACf,SAASC,gBAAe,MAAM,KAAK,QAAQ,SAAS;AACzD,QAAM,MAAWC,YAAW,MAAM,MAAM,GAAG,OAAO;AAClD,MAAI,OAAO,QAAQ,UAAU;AAC3B,UAAM,QAAQ,KAAK;AACnB,QAAI,SAAS,OAAO,kBAAkB;AACpC,aAAO,IAAIV,OAAMC,MAAK,QAAQ,OAAO,CAAC;AAAA,IACxC;AAAA,EACF;AACA,MAAI,QAAQ,gBAAgB,MAAM;AAChC,UAAM,IAAI,MAAM,GAAIU,gBAAgB,+DAA+D;AAAA,EACrG;AACA,SAAO,IAAIX,OAAMC,MAAK,QAAQM,SAAQ,OAAO,GAAG,GAAG,CAAC;AACtD;AACO,SAASK,cAAaC,MAAK,OAAO;AACvC,QAAM,SAAS,MAAM;AACrB,QAAM,WAAW,OAAO,WAAW,WAAW,SAASN,SAAQC,SAAQ,SAAS,KAAK;AACrF,EAAKM,iBAAgBD,MAAK,MAAM,KAAK,cAAc,QAAQ;AAC7D;AACAD,cAAa,cAAc,SAASG,cAAY,OAAO;AACrD,QAAM,SAAS,MAAM;AACrB,QAAM,WAAW,OAAO,WAAW,WAAW,SAASR,SAAQC,SAAQ,SAAS,KAAK;AACrF,MAAI,WAAgBQ,gBAAe,CAAC,GAAG;AACrC,WAAO;AAAA,EACT;AACA,MAAI,WAAgBA,gBAAe,CAAC,GAAG;AACrC,WAAO;AAAA,EACT;AACA,MAAI,WAAgBA,gBAAe,CAAC,GAAG;AACrC,WAAO;AAAA,EACT;AACA,MAAI,WAAgBA,gBAAe,CAAC,GAAG;AACrC,WAAO;AAAA,EACT;AACA,SAAO;AACT;AACAJ,cAAa,gBAAgB,SAASK,eAAc,MAAM,MAAM;AAC9D,SAAO,KAAK,QAAQ,KAAK,QAAQ,IAAI,KAAK,QAAQ,KAAK,QAAQ,KAAK;AACtE;;;ACxCA,SAASC,SAAQ,MAAM,KAAK,QAAQC,SAAQ;AAC1C,EAAAC,kBAAiB,MAAM,KAAK,SAASD,OAAM;AAC3C,QAAME,OAAMC,OAAM,MAAM,MAAM,QAAQ,MAAM,SAASH,OAAM;AAC3D,SAAO,IAAII,OAAMC,MAAK,OAAOH,MAAK,SAASF,OAAM;AACnD;AACO,SAASM,oBAAmB,MAAM,KAAK,OAAO,UAAU;AAC7D,SAAOP,SAAQ,MAAM,KAAK,GAAG,KAAK;AACpC;AACO,SAASQ,cAAa,MAAM,KAAK,QAAQ,SAAS;AACvD,SAAOR,SAAQ,MAAM,KAAK,GAAQS,WAAU,MAAM,MAAM,GAAG,OAAO,CAAC;AACrE;AACO,SAASC,eAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAOV,SAAQ,MAAM,KAAK,GAAQW,YAAW,MAAM,MAAM,GAAG,OAAO,CAAC;AACtE;AACO,SAASC,eAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAOZ,SAAQ,MAAM,KAAK,GAAQa,YAAW,MAAM,MAAM,GAAG,OAAO,CAAC;AACtE;AACO,SAASC,eAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,QAAM,IAASC,YAAW,MAAM,MAAM,GAAG,OAAO;AAChD,MAAI,OAAO,MAAM,UAAU;AACzB,UAAM,IAAI,MAAM,GAAIC,gBAAgB,6CAA6C;AAAA,EACnF;AACA,SAAOhB,SAAQ,MAAM,KAAK,GAAG,CAAC;AAChC;AACA,SAASiB,YAAW,OAAO;AACzB,MAAI,MAAM,iBAAiB,QAAW;AACpC,UAAM,eAAe,MAAM,SAASX,MAAK,SAASY,YAAW,MAAM,KAAK,IAAI,MAAM;AAAA,EACpF;AACA,SAAO,MAAM;AACf;AACO,SAASC,aAAYhB,MAAK,OAAO;AACtC,QAAM,QAAQc,YAAW,KAAK;AAC9B,EAAKG,iBAAgBjB,MAAK,MAAM,KAAK,cAAc,MAAM,MAAM;AAC/D,EAAAA,KAAI,KAAK,KAAK;AAChB;AACAgB,aAAY,cAAc,SAASE,cAAY,OAAO;AACpD,QAAM,QAAQJ,YAAW,KAAK;AAC9B,SAAYG,iBAAgB,YAAY,MAAM,MAAM,IAAI,MAAM;AAChE;AACAD,aAAY,gBAAgB,SAASG,eAAc,MAAM,MAAM;AAC7D,SAAOC,cAAaN,YAAW,IAAI,GAAGA,YAAW,IAAI,CAAC;AACxD;AACO,SAASM,cAAa,IAAI,IAAI;AACnC,SAAO,GAAG,SAAS,GAAG,SAAS,KAAK,GAAG,SAAS,GAAG,SAAS,IAAIC,SAAQ,IAAI,EAAE;AAChF;;;AC5CA,SAASC,SAAQ,MAAM,KAAK,QAAQC,SAAQ,SAAS;AACnD,QAAM,YAAY,SAASA;AAC3B,EAAAC,kBAAiB,MAAM,KAAK,SAAS;AACrC,QAAM,MAAM,IAAIC,OAAMC,MAAK,QAAQC,UAAS,MAAM,MAAM,QAAQ,MAAM,SAAS,GAAG,SAAS;AAC3F,MAAI,QAAQ,sBAAsB,MAAM;AACtC,QAAI,YAAYC,OAAM,MAAM,MAAM,QAAQ,MAAM,SAAS;AAAA,EAC3D;AACA,SAAO;AACT;AACO,SAASC,qBAAoB,MAAM,KAAK,OAAO,SAAS;AAC7D,SAAOP,SAAQ,MAAM,KAAK,GAAG,OAAO,OAAO;AAC7C;AACO,SAASQ,eAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAOR,SAAQ,MAAM,KAAK,GAAQS,WAAU,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO;AAC9E;AACO,SAASC,gBAAe,MAAM,KAAK,QAAQ,SAAS;AACzD,SAAOV,SAAQ,MAAM,KAAK,GAAQW,YAAW,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO;AAC/E;AACO,SAASC,gBAAe,MAAM,KAAK,QAAQ,SAAS;AACzD,SAAOZ,SAAQ,MAAM,KAAK,GAAQa,YAAW,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO;AAC/E;AACO,SAASC,gBAAe,MAAM,KAAK,QAAQ,SAAS;AACzD,QAAM,IAASC,YAAW,MAAM,MAAM,GAAG,OAAO;AAChD,MAAI,OAAO,MAAM,UAAU;AACzB,UAAM,IAAI,MAAM,GAAIC,gBAAgB,8CAA8C;AAAA,EACpF;AACA,SAAOhB,SAAQ,MAAM,KAAK,GAAG,GAAG,OAAO;AACzC;AACO,IAAMiB,gBAAeC;;;ACpC5B,SAASC,SAAQ,OAAO,MAAM,QAAQC,SAAQ;AAC5C,SAAO,IAAIC,OAAMC,MAAK,OAAOF,SAAQ,MAAM;AAC7C;AACO,SAASG,oBAAmB,MAAM,KAAK,OAAO,UAAU;AAC7D,SAAOJ,SAAQ,MAAM,KAAK,GAAG,KAAK;AACpC;AACO,SAASK,cAAa,MAAM,KAAK,QAAQ,SAAS;AACvD,SAAOL,SAAQ,MAAM,KAAK,GAAQM,WAAU,MAAM,MAAM,GAAG,OAAO,CAAC;AACrE;AACO,SAASC,eAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAOP,SAAQ,MAAM,KAAK,GAAQQ,YAAW,MAAM,MAAM,GAAG,OAAO,CAAC;AACtE;AACO,SAASC,eAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAOT,SAAQ,MAAM,KAAK,GAAQU,YAAW,MAAM,MAAM,GAAG,OAAO,CAAC;AACtE;AACO,SAASC,eAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,QAAM,IAASC,YAAW,MAAM,MAAM,GAAG,OAAO;AAChD,MAAI,OAAO,MAAM,UAAU;AACzB,UAAM,IAAI,MAAM,GAAIC,gBAAgB,6CAA6C;AAAA,EACnF;AACA,SAAOb,SAAQ,MAAM,KAAK,GAAG,CAAC;AAChC;AACO,SAASc,uBAAsB,MAAM,KAAK,QAAQ,SAAS;AAChE,MAAI,QAAQ,oBAAoB,OAAO;AACrC,UAAM,IAAI,MAAM,GAAID,gBAAgB,sCAAsC;AAAA,EAC5E;AACA,SAAOb,SAAQ,MAAM,KAAK,GAAG,QAAQ;AACvC;AACO,SAASe,aAAYC,MAAK,OAAO;AACtC,EAAKC,iBAAgBD,MAAKb,MAAK,MAAM,cAAc,MAAM,KAAK;AAChE;AACAY,aAAY,gBAAqBG,YAAW;AAC5CH,aAAY,cAAc,SAASI,cAAY,OAAO;AACpD,SAAYF,iBAAgB,YAAY,MAAM,KAAK;AACrD;;;AClCA,SAASG,SAAQ,OAAO,MAAM,QAAQC,SAAQ;AAC5C,SAAO,IAAIC,OAAMC,MAAK,KAAKF,SAAQ,MAAM;AAC3C;AACO,SAASG,kBAAiB,MAAM,KAAK,OAAO,UAAU;AAC3D,SAAOJ,SAAQ,MAAM,KAAK,GAAG,KAAK;AACpC;AACO,SAASK,YAAW,MAAM,KAAK,QAAQ,SAAS;AACrD,SAAOL,SAAQ,MAAM,KAAK,GAAQM,WAAU,MAAM,MAAM,GAAG,OAAO,CAAC;AACrE;AACO,SAASC,aAAY,MAAM,KAAK,QAAQ,SAAS;AACtD,SAAOP,SAAQ,MAAM,KAAK,GAAQQ,YAAW,MAAM,MAAM,GAAG,OAAO,CAAC;AACtE;AACO,SAASC,aAAY,MAAM,KAAK,QAAQ,SAAS;AACtD,SAAOT,SAAQ,MAAM,KAAK,GAAQU,YAAW,MAAM,MAAM,GAAG,OAAO,CAAC;AACtE;AACO,SAASC,aAAY,MAAM,KAAK,QAAQ,SAAS;AACtD,QAAM,IAASC,YAAW,MAAM,MAAM,GAAG,OAAO;AAChD,MAAI,OAAO,MAAM,UAAU;AACzB,UAAM,IAAI,MAAM,GAAIC,gBAAgB,2CAA2C;AAAA,EACjF;AACA,SAAOb,SAAQ,MAAM,KAAK,GAAG,CAAC;AAChC;AACO,SAASc,qBAAoB,MAAM,KAAK,QAAQ,SAAS;AAC9D,MAAI,QAAQ,oBAAoB,OAAO;AACrC,UAAM,IAAI,MAAM,GAAID,gBAAgB,sCAAsC;AAAA,EAC5E;AACA,SAAOb,SAAQ,MAAM,KAAK,GAAG,QAAQ;AACvC;AACO,SAASe,WAAUC,MAAK,OAAO;AACpC,EAAKC,iBAAgBD,MAAKb,MAAK,IAAI,cAAc,MAAM,KAAK;AAC9D;AACAY,WAAU,gBAAqBG,YAAW;AAC1CH,WAAU,cAAc,SAASI,cAAY,OAAO;AAClD,SAAYF,iBAAgB,YAAY,MAAM,KAAK;AACrD;;;ACnCO,SAASG,kBAAiB,OAAO,MAAM,OAAO,UAAU;AAC7D,SAAO,IAAIC,OAAMC,MAAK,KAAK,OAAO,CAAC;AACrC;AACO,SAASC,YAAW,MAAM,KAAK,QAAQ,SAAS;AACrD,SAAO,IAAIF,OAAMC,MAAK,KAAUE,WAAU,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AACtE;AACO,SAASC,aAAY,MAAM,KAAK,QAAQ,SAAS;AACtD,SAAO,IAAIJ,OAAMC,MAAK,KAAUI,YAAW,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AACvE;AACO,SAASC,aAAY,MAAM,KAAK,QAAQ,SAAS;AACtD,SAAO,IAAIN,OAAMC,MAAK,KAAUM,YAAW,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AACvE;AACO,SAASC,aAAY,MAAM,KAAK,QAAQ,SAAS;AACtD,SAAO,IAAIR,OAAMC,MAAK,KAAUQ,YAAW,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC;AACvE;AACO,SAASC,WAAUC,MAAK,OAAO;AACpC,EAAKC,iBAAgBD,MAAKV,MAAK,IAAI,cAAc,MAAM,KAAK;AAC9D;AACAS,WAAU,gBAAqBG,YAAW;AAC1CH,WAAU,cAAc,SAASI,cAAY,OAAO;AAClD,SAAYF,iBAAgB,YAAY,MAAM,KAAK;AACrD;;;ACpBA,IAAMG,eAAc;AACpB,IAAMC,cAAa;AACnB,IAAMC,cAAa;AACnB,IAAMC,mBAAkB;AACjB,SAASC,iBAAgB,OAAO,MAAM,QAAQ,SAAS;AAC5D,MAAI,QAAQ,mBAAmB,OAAO;AACpC,UAAM,IAAI,MAAM,GAAIC,gBAAgB,qCAAqC;AAAA,EAC3E,WAAW,QAAQ,0BAA0B,MAAM;AACjD,WAAO,IAAIC,OAAMC,MAAK,MAAM,MAAM,CAAC;AAAA,EACrC;AACA,SAAO,IAAID,OAAMC,MAAK,WAAW,QAAW,CAAC;AAC/C;AACO,SAASC,aAAY,OAAO,MAAM,QAAQ,SAAS;AACxD,MAAI,QAAQ,oBAAoB,OAAO;AACrC,UAAM,IAAI,MAAM,GAAIH,gBAAgB,sCAAsC;AAAA,EAC5E;AACA,SAAO,IAAIC,OAAMC,MAAK,OAAO,QAAW,CAAC;AAC3C;AACA,SAASE,aAAY,OAAO,OAAO,SAAS;AAC1C,MAAI,SAAS;AACX,QAAI,QAAQ,aAAa,SAAS,OAAO,MAAM,KAAK,GAAG;AACrD,YAAM,IAAI,MAAM,GAAIJ,gBAAgB,+BAA+B;AAAA,IACrE;AACA,QAAI,QAAQ,kBAAkB,UAAU,UAAU,YAAY,UAAU,YAAY;AAClF,YAAM,IAAI,MAAM,GAAIA,gBAAgB,oCAAoC;AAAA,IAC1E;AAAA,EACF;AACA,SAAO,IAAIC,OAAMC,MAAK,OAAO,OAAO,KAAK;AAC3C;AACO,SAASG,eAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAOD,aAAYE,aAAY,MAAM,MAAM,CAAC,GAAG,GAAG,OAAO;AAC3D;AACO,SAASC,eAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAOH,aAAYI,aAAY,MAAM,MAAM,CAAC,GAAG,GAAG,OAAO;AAC3D;AACO,SAASC,eAAc,MAAM,KAAK,QAAQ,SAAS;AACxD,SAAOL,aAAYM,aAAY,MAAM,MAAM,CAAC,GAAG,GAAG,OAAO;AAC3D;AACO,SAASC,aAAYC,MAAK,OAAO,SAAS;AAC/C,QAAM,QAAQ,MAAM;AACpB,MAAI,UAAU,OAAO;AACnB,IAAAA,KAAI,KAAK,CAACV,MAAK,MAAM,eAAeP,YAAW,CAAC;AAAA,EAClD,WAAW,UAAU,MAAM;AACzB,IAAAiB,KAAI,KAAK,CAACV,MAAK,MAAM,eAAeN,WAAU,CAAC;AAAA,EACjD,WAAW,UAAU,MAAM;AACzB,IAAAgB,KAAI,KAAK,CAACV,MAAK,MAAM,eAAeL,WAAU,CAAC;AAAA,EACjD,WAAW,UAAU,QAAW;AAC9B,IAAAe,KAAI,KAAK,CAACV,MAAK,MAAM,eAAeJ,gBAAe,CAAC;AAAA,EACtD,OAAO;AACL,QAAI;AACJ,QAAI,UAAU;AACd,QAAI,CAAC,WAAW,QAAQ,YAAY,MAAM;AACxC,MAAAe,eAAc,KAAK;AACnB,gBAAUP,aAAYQ,OAAM,CAAC;AAC7B,UAAI,UAAU,WAAW,OAAO,MAAM,KAAK,GAAG;AAC5C,QAAAA,MAAK,CAAC,IAAI;AACV,QAAAF,KAAI,KAAKE,MAAK,MAAM,GAAG,CAAC,CAAC;AACzB,kBAAU;AAAA,MACZ,OAAO;AACL,QAAAC,eAAc,KAAK;AACnB,kBAAUP,aAAYM,OAAM,CAAC;AAC7B,YAAI,UAAU,SAAS;AACrB,UAAAA,MAAK,CAAC,IAAI;AACV,UAAAF,KAAI,KAAKE,MAAK,MAAM,GAAG,CAAC,CAAC;AACzB,oBAAU;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AACA,QAAI,CAAC,SAAS;AACZ,MAAAE,eAAc,KAAK;AACnB,gBAAUN,aAAYI,OAAM,CAAC;AAC7B,MAAAA,MAAK,CAAC,IAAI;AACV,MAAAF,KAAI,KAAKE,MAAK,MAAM,GAAG,CAAC,CAAC;AAAA,IAC3B;AAAA,EACF;AACF;AACAH,aAAY,cAAc,SAASM,cAAY,OAAO,SAAS;AAC7D,QAAM,QAAQ,MAAM;AACpB,MAAI,UAAU,SAAS,UAAU,QAAQ,UAAU,QAAQ,UAAU,QAAW;AAC9E,WAAO;AAAA,EACT;AACA,MAAI,CAAC,WAAW,QAAQ,YAAY,MAAM;AACxC,IAAAJ,eAAc,KAAK;AACnB,QAAI,UAAUP,aAAYQ,OAAM,CAAC;AACjC,QAAI,UAAU,WAAW,OAAO,MAAM,KAAK,GAAG;AAC5C,aAAO;AAAA,IACT;AACA,IAAAC,eAAc,KAAK;AACnB,cAAUP,aAAYM,OAAM,CAAC;AAC7B,QAAI,UAAU,SAAS;AACrB,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO;AACT;AACA,IAAMI,UAAS,IAAI,YAAY,CAAC;AAChC,IAAMC,YAAW,IAAI,SAASD,SAAQ,CAAC;AACvC,IAAMJ,QAAO,IAAI,WAAWI,SAAQ,CAAC;AACrC,SAASL,eAAc,KAAK;AAC1B,MAAI,QAAQ,UAAU;AACpB,IAAAM,UAAS,UAAU,GAAG,OAAO,KAAK;AAAA,EACpC,WAAW,QAAQ,WAAW;AAC5B,IAAAA,UAAS,UAAU,GAAG,OAAO,KAAK;AAAA,EACpC,WAAW,OAAO,MAAM,GAAG,GAAG;AAC5B,IAAAA,UAAS,UAAU,GAAG,OAAO,KAAK;AAAA,EACpC,OAAO;AACL,IAAAA,UAAS,WAAW,GAAG,GAAG;AAC1B,UAAM,SAASA,UAAS,UAAU,CAAC;AACnC,UAAM,YAAY,SAAS,eAAe;AAC1C,UAAM,WAAW,SAAS;AAC1B,QAAI,aAAa,KAAK;AACpB,MAAAA,UAAS,UAAU,GAAG,OAAO,KAAK;AAAA,IACpC,WAAW,aAAa,GAAG;AACzB,MAAAA,UAAS,UAAU,IAAI,MAAM,eAAe,KAAK,YAAY,IAAI,KAAK;AAAA,IACxE,OAAO;AACL,YAAM,kBAAkB,WAAW;AACnC,UAAI,kBAAkB,KAAK;AACzB,QAAAA,UAAS,UAAU,GAAG,CAAC;AAAA,MACzB,WAAW,kBAAkB,KAAK;AAChC,QAAAA,UAAS,UAAU,IAAI,SAAS,eAAe,KAAK,KAAK,KAAK,iBAAiB,KAAK;AAAA,MACtF,OAAO;AACL,QAAAA,UAAS,UAAU,IAAI,SAAS,eAAe,KAAK,kBAAkB,MAAM,KAAK,YAAY,IAAI,KAAK;AAAA,MACxG;AAAA,IACF;AAAA,EACF;AACF;AACA,SAASb,aAAYQ,OAAM,KAAK;AAC9B,MAAIA,MAAK,SAAS,MAAM,GAAG;AACzB,UAAM,IAAI,MAAM,GAAId,gBAAgB,8BAA8B;AAAA,EACpE;AACA,QAAM,QAAQc,MAAK,GAAG,KAAK,KAAKA,MAAK,MAAM,CAAC;AAC5C,MAAI,SAAS,OAAO;AAClB,WAAO;AAAA,EACT;AACA,MAAI,SAAS,OAAO;AAClB,WAAO;AAAA,EACT;AACA,MAAI,SAAS,OAAO;AAClB,WAAO;AAAA,EACT;AACA,QAAM,MAAM,QAAQ,KAAK;AACzB,QAAM,OAAO,OAAO;AACpB,MAAI;AACJ,MAAI,QAAQ,GAAG;AACb,UAAM,OAAO,KAAK;AAAA,EACpB,WAAW,QAAQ,IAAI;AACrB,WAAO,OAAO,QAAQ,MAAM,MAAM;AAAA,EACpC,OAAO;AACL,UAAM,SAAS,IAAI,WAAW;AAAA,EAChC;AACA,SAAO,OAAO,QAAQ,CAAC,MAAM;AAC/B;AACA,SAASC,eAAc,KAAK;AAC1B,EAAAI,UAAS,WAAW,GAAG,KAAK,KAAK;AACnC;AACA,SAASX,aAAYM,OAAM,KAAK;AAC9B,MAAIA,MAAK,SAAS,MAAM,GAAG;AACzB,UAAM,IAAI,MAAM,GAAId,gBAAgB,8BAA8B;AAAA,EACpE;AACA,QAAM,UAAUc,MAAK,cAAc,KAAK;AACxC,SAAO,IAAI,SAASA,MAAK,QAAQ,QAAQ,CAAC,EAAE,WAAW,GAAG,KAAK;AACjE;AACA,SAASE,eAAc,KAAK;AAC1B,EAAAG,UAAS,WAAW,GAAG,KAAK,KAAK;AACnC;AACA,SAAST,aAAYI,OAAM,KAAK;AAC9B,MAAIA,MAAK,SAAS,MAAM,GAAG;AACzB,UAAM,IAAI,MAAM,GAAId,gBAAgB,8BAA8B;AAAA,EACpE;AACA,QAAM,UAAUc,MAAK,cAAc,KAAK;AACxC,SAAO,IAAI,SAASA,MAAK,QAAQ,QAAQ,CAAC,EAAE,WAAW,GAAG,KAAK;AACjE;AACAH,aAAY,gBAAgBS,YAAW;;;ACpKvC,SAASC,cAAa,MAAM,KAAK,OAAO;AACtC,QAAM,IAAI,MAAM,GAAIC,gBAAgB,+BAAgC,KAAM,eAAgB,KAAK,GAAG,MAAM,CAAE,EAAE;AAC9G;AACA,SAASC,SAAQ,KAAK;AACpB,SAAO,MAAM;AACX,UAAM,IAAI,MAAM,GAAID,gBAAgB,IAAK,GAAI,EAAE;AAAA,EACjD;AACF;AACO,IAAME,QAAO,CAAC;AACrB,SAAS,IAAI,GAAG,KAAK,IAAI,KAAK;AAC5B,EAAAA,MAAK,CAAC,IAAIH;AACZ;AACAG,MAAK,EAAE,IAASC;AAChBD,MAAK,EAAE,IAASE;AAChBF,MAAK,EAAE,IAASG;AAChBH,MAAK,EAAE,IAASI;AAChBJ,MAAK,EAAE,IAAIH;AACXG,MAAK,EAAE,IAAIH;AACXG,MAAK,EAAE,IAAIH;AACXG,MAAK,EAAE,IAAIH;AACX,SAAS,IAAI,IAAI,KAAK,IAAI,KAAK;AAC7B,EAAAG,MAAK,CAAC,IAAIH;AACZ;AACAG,MAAK,EAAE,IAAWK;AAClBL,MAAK,EAAE,IAAWM;AAClBN,MAAK,EAAE,IAAWO;AAClBP,MAAK,EAAE,IAAWQ;AAClBR,MAAK,EAAE,IAAIH;AACXG,MAAK,EAAE,IAAIH;AACXG,MAAK,EAAE,IAAIH;AACXG,MAAK,EAAE,IAAIH;AACX,SAAS,IAAI,IAAI,KAAK,IAAI,KAAK;AAC7B,EAAAG,MAAK,CAAC,IAAUS;AAClB;AACAT,MAAK,EAAE,IAAUU;AACjBV,MAAK,EAAE,IAAUW;AACjBX,MAAK,EAAE,IAAUY;AACjBZ,MAAK,EAAE,IAAUa;AACjBb,MAAK,EAAE,IAAIH;AACXG,MAAK,EAAE,IAAIH;AACXG,MAAK,EAAE,IAAIH;AACXG,MAAK,EAAE,IAAID,SAAQ,mDAAmD;AACtE,SAAS,IAAI,IAAI,KAAK,KAAK,KAAK;AAC9B,EAAAC,MAAK,CAAC,IAAWc;AACnB;AACAd,MAAK,GAAG,IAAWe;AACnBf,MAAK,GAAG,IAAWgB;AACnBhB,MAAK,GAAG,IAAWiB;AACnBjB,MAAK,GAAG,IAAWkB;AACnBlB,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAID,SAAQ,mDAAmD;AACvE,SAAS,IAAI,KAAK,KAAK,KAAK,KAAK;AAC/B,EAAAC,MAAK,CAAC,IAAUmB;AAClB;AACAnB,MAAK,GAAG,IAAUoB;AAClBpB,MAAK,GAAG,IAAUqB;AAClBrB,MAAK,GAAG,IAAUsB;AAClBtB,MAAK,GAAG,IAAUuB;AAClBvB,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAUwB;AAClB,SAAS,IAAI,KAAK,KAAK,KAAK,KAAK;AAC/B,EAAAxB,MAAK,CAAC,IAAQyB;AAChB;AACAzB,MAAK,GAAG,IAAQ0B;AAChB1B,MAAK,GAAG,IAAQ2B;AAChB3B,MAAK,GAAG,IAAQ4B;AAChB5B,MAAK,GAAG,IAAQ6B;AAChB7B,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAQ8B;AAChB,SAAS,IAAI,KAAK,KAAK,KAAK,KAAK;AAC/B,EAAA9B,MAAK,CAAC,IAAQ+B;AAChB;AACA/B,MAAK,GAAG,IAAQgC;AAChBhC,MAAK,GAAG,IAAQiC;AAChBjC,MAAK,GAAG,IAAQkC;AAChBlC,MAAK,GAAG,IAAQmC;AAChBnC,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAIH;AACZ,SAAS,IAAI,KAAK,KAAK,KAAK,KAAK;AAC/B,EAAAG,MAAK,CAAC,IAAID,SAAQ,iCAAiC;AACrD;AACAC,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAUoC;AAClBpC,MAAK,GAAG,IAAID,SAAQ,iCAAiC;AACrDC,MAAK,GAAG,IAAUqC;AAClBrC,MAAK,GAAG,IAAUsC;AAClBtC,MAAK,GAAG,IAAUuC;AAClBvC,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAIH;AACZG,MAAK,GAAG,IAAUwC;AACX,IAAMC,SAAQ,CAAC;AACtB,SAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAC3B,EAAAA,OAAM,CAAC,IAAI,IAAIC,OAAMC,MAAK,MAAM,GAAG,CAAC;AACtC;AACA,SAAS,IAAI,IAAI,KAAK,KAAK,KAAK;AAC9B,EAAAF,OAAM,KAAK,CAAC,IAAI,IAAIC,OAAMC,MAAK,QAAQ,GAAG,CAAC;AAC7C;AACAF,OAAM,EAAE,IAAI,IAAIC,OAAMC,MAAK,OAAO,IAAI,WAAW,CAAC,GAAG,CAAC;AACtDF,OAAM,EAAE,IAAI,IAAIC,OAAMC,MAAK,QAAQ,IAAI,CAAC;AACxCF,OAAM,GAAG,IAAI,IAAIC,OAAMC,MAAK,OAAO,GAAG,CAAC;AACvCF,OAAM,GAAG,IAAI,IAAIC,OAAMC,MAAK,KAAK,GAAG,CAAC;AACrCF,OAAM,GAAG,IAAI,IAAIC,OAAMC,MAAK,OAAO,OAAO,CAAC;AAC3CF,OAAM,GAAG,IAAI,IAAIC,OAAMC,MAAK,MAAM,MAAM,CAAC;AACzCF,OAAM,GAAG,IAAI,IAAIC,OAAMC,MAAK,MAAM,MAAM,CAAC;AAClC,SAASC,kBAAiB,OAAO;AACtC,UAAQ,MAAM,MAAM;AAAA,IACpB,KAAKD,MAAK;AACR,aAAOE,WAAU,CAAC,GAAG,CAAC;AAAA,IACxB,KAAKF,MAAK;AACR,aAAOE,WAAU,CAAC,GAAG,CAAC;AAAA,IACxB,KAAKF,MAAK;AACR,aAAOE,WAAU,CAAC,GAAG,CAAC;AAAA,IACxB,KAAKF,MAAK;AACR,UAAI,CAAC,MAAM,MAAM,QAAQ;AACvB,eAAOE,WAAU,CAAC,EAAE,CAAC;AAAA,MACvB;AACA;AAAA,IACF,KAAKF,MAAK;AACR,UAAI,MAAM,UAAU,IAAI;AACtB,eAAOE,WAAU,CAAC,EAAE,CAAC;AAAA,MACvB;AACA;AAAA,IACF,KAAKF,MAAK;AACR,UAAI,MAAM,UAAU,GAAG;AACrB,eAAOE,WAAU,CAAC,GAAG,CAAC;AAAA,MACxB;AACA;AAAA,IACF,KAAKF,MAAK;AACR,UAAI,MAAM,UAAU,GAAG;AACrB,eAAOE,WAAU,CAAC,GAAG,CAAC;AAAA,MACxB;AACA;AAAA,IACF,KAAKF,MAAK;AACR,UAAI,MAAM,QAAQ,IAAI;AACpB,eAAOE,WAAU,CAAC,OAAO,MAAM,KAAK,CAAC,CAAC;AAAA,MACxC;AACA;AAAA,IACF,KAAKF,MAAK;AACR,UAAI,MAAM,SAAS,KAAK;AACtB,eAAOE,WAAU,CAAC,KAAK,OAAO,MAAM,KAAK,CAAC,CAAC;AAAA,MAC7C;AAAA,EACF;AACF;;;ACtJA,IAAMC,wBAAuB;AAAA,EAC3B,SAAS;AAAA,EACT;AAAA,EACA,kBAAAC;AACF;AACO,SAASC,oBAAmB;AACjC,QAAM,WAAW,CAAC;AAClB,WAASC,MAAK,KAAK,KAAK,IAAIC;AAC5B,WAASD,MAAK,OAAO,KAAK,IAAIE;AAC9B,WAASF,MAAK,MAAM,KAAK,IAAIG;AAC7B,WAASH,MAAK,OAAO,KAAK,IAAII;AAC9B,WAASJ,MAAK,MAAM,KAAK,IAAIK;AAC7B,WAASL,MAAK,IAAI,KAAK,IAAIM;AAC3B,WAASN,MAAK,IAAI,KAAK,IAAIO;AAC3B,WAASP,MAAK,MAAM,KAAK,IAAIQ;AAC7B,SAAO;AACT;AACA,IAAMC,gBAAeV,kBAAiB;AACtC,IAAMW,OAAM,IAAIC,IAAG;AACnB,IAAMC,OAAN,MAAM,KAAI;AAAA,EACR,YAAY,KAAK,QAAQ;AACvB,SAAK,MAAM;AACX,SAAK,SAAS;AAAA,EAChB;AAAA,EACA,SAAS,KAAK;AACZ,QAAI,IAAI;AACR,OAAG;AACD,UAAI,EAAE,QAAQ,KAAK;AACjB,eAAO;AAAA,MACT;AAAA,IACF,SAAS,IAAI,EAAE;AACf,WAAO;AAAA,EACT;AAAA,EACA,OAAO,YAAY,OAAO,KAAK;AAC7B,QAAI,SAAS,MAAM,SAAS,GAAG,GAAG;AAChC,YAAM,IAAI,MAAM,GAAIC,gBAAgB,sCAAsC;AAAA,IAC5E;AACA,WAAO,IAAI,KAAI,KAAK,KAAK;AAAA,EAC3B;AACF;AACA,IAAMC,gBAAe;AAAA,EACnB,MAAM,IAAIC,OAAMf,MAAK,MAAM,IAAI;AAAA,EAC/B,WAAW,IAAIe,OAAMf,MAAK,WAAW,MAAS;AAAA,EAC9C,MAAM,IAAIe,OAAMf,MAAK,MAAM,IAAI;AAAA,EAC/B,OAAO,IAAIe,OAAMf,MAAK,OAAO,KAAK;AAAA,EAClC,YAAY,IAAIe,OAAMf,MAAK,OAAO,CAAC;AAAA,EACnC,UAAU,IAAIe,OAAMf,MAAK,KAAK,CAAC;AACjC;AACA,IAAMgB,gBAAe;AAAA,EACnB,OAAO,KAAK,MAAM,UAAU,WAAW;AACrC,QAAI,CAAC,OAAO,UAAU,GAAG,KAAK,CAAC,OAAO,cAAc,GAAG,GAAG;AACxD,aAAO,IAAID,OAAMf,MAAK,OAAO,GAAG;AAAA,IAClC,WAAW,OAAO,GAAG;AACnB,aAAO,IAAIe,OAAMf,MAAK,MAAM,GAAG;AAAA,IACjC,OAAO;AACL,aAAO,IAAIe,OAAMf,MAAK,QAAQ,GAAG;AAAA,IACnC;AAAA,EACF;AAAA,EACA,OAAO,KAAK,MAAM,UAAU,WAAW;AACrC,QAAI,OAAO,OAAO,CAAC,GAAG;AACpB,aAAO,IAAIe,OAAMf,MAAK,MAAM,GAAG;AAAA,IACjC,OAAO;AACL,aAAO,IAAIe,OAAMf,MAAK,QAAQ,GAAG;AAAA,IACnC;AAAA,EACF;AAAA,EACA,WAAW,KAAK,MAAM,UAAU,WAAW;AACzC,WAAO,IAAIe,OAAMf,MAAK,OAAO,GAAG;AAAA,EAClC;AAAA,EACA,OAAO,KAAK,MAAM,UAAU,WAAW;AACrC,WAAO,IAAIe,OAAMf,MAAK,QAAQ,GAAG;AAAA,EACnC;AAAA,EACA,QAAQ,KAAK,MAAM,UAAU,WAAW;AACtC,WAAO,MAAMc,cAAa,OAAOA,cAAa;AAAA,EAChD;AAAA,EACA,KAAK,MAAM,MAAM,UAAU,WAAW;AACpC,WAAOA,cAAa;AAAA,EACtB;AAAA,EACA,UAAU,MAAM,MAAM,UAAU,WAAW;AACzC,WAAOA,cAAa;AAAA,EACtB;AAAA,EACA,YAAY,KAAK,MAAM,UAAU,WAAW;AAC1C,WAAO,IAAIC,OAAMf,MAAK,OAAO,IAAI,WAAW,GAAG,CAAC;AAAA,EAClD;AAAA,EACA,SAAS,KAAK,MAAM,UAAU,WAAW;AACvC,WAAO,IAAIe,OAAMf,MAAK,OAAO,IAAI,WAAW,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU,CAAC;AAAA,EACzF;AAAA,EACA,MAAM,KAAK,MAAM,SAAS,UAAU;AAClC,QAAI,CAAC,IAAI,QAAQ;AACf,UAAI,QAAQ,mBAAmB,MAAM;AACnC,eAAO;AAAA,UACLc,cAAa;AAAA,UACb,IAAIC,OAAMf,MAAK,KAAK;AAAA,QACtB;AAAA,MACF;AACA,aAAOc,cAAa;AAAA,IACtB;AACA,eAAWF,KAAI,YAAY,UAAU,GAAG;AACxC,UAAM,UAAU,CAAC;AACjB,QAAI,IAAI;AACR,eAAW,KAAK,KAAK;AACnB,cAAQ,GAAG,IAAIK,gBAAe,GAAG,SAAS,QAAQ;AAAA,IACpD;AACA,QAAI,QAAQ,gBAAgB;AAC1B,aAAO;AAAA,QACL,IAAIF,OAAMf,MAAK,OAAO,IAAI,MAAM;AAAA,QAChC;AAAA,QACA,IAAIe,OAAMf,MAAK,KAAK;AAAA,MACtB;AAAA,IACF;AACA,WAAO;AAAA,MACL,IAAIe,OAAMf,MAAK,OAAO,IAAI,MAAM;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AAAA,EACA,OAAO,KAAK,KAAK,SAAS,UAAU;AAClC,UAAM,QAAQ,QAAQ;AACtB,UAAM,OAAO,QAAQ,IAAI,KAAK,IAAI,OAAO,KAAK,GAAG;AACjD,UAAMkB,UAAS,QAAQ,IAAI,OAAO,KAAK;AACvC,QAAI,CAACA,SAAQ;AACX,UAAI,QAAQ,mBAAmB,MAAM;AACnC,eAAO;AAAA,UACLJ,cAAa;AAAA,UACb,IAAIC,OAAMf,MAAK,KAAK;AAAA,QACtB;AAAA,MACF;AACA,aAAOc,cAAa;AAAA,IACtB;AACA,eAAWF,KAAI,YAAY,UAAU,GAAG;AACxC,UAAM,UAAU,CAAC;AACjB,QAAI,IAAI;AACR,eAAW,OAAO,MAAM;AACtB,cAAQ,GAAG,IAAI;AAAA,QACbK,gBAAe,KAAK,SAAS,QAAQ;AAAA,QACrCA,gBAAe,QAAQ,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,SAAS,QAAQ;AAAA,MACnE;AAAA,IACF;AACA,IAAAE,gBAAe,SAAS,OAAO;AAC/B,QAAI,QAAQ,gBAAgB;AAC1B,aAAO;AAAA,QACL,IAAIJ,OAAMf,MAAK,KAAKkB,OAAM;AAAA,QAC1B;AAAA,QACA,IAAIH,OAAMf,MAAK,KAAK;AAAA,MACtB;AAAA,IACF;AACA,WAAO;AAAA,MACL,IAAIe,OAAMf,MAAK,KAAKkB,OAAM;AAAA,MAC1B;AAAA,IACF;AAAA,EACF;AACF;AACAF,cAAa,MAAMA,cAAa;AAChCA,cAAa,SAASA,cAAa;AACnC,WAAW,OAAO,iFAAiF,MAAM,GAAG,GAAG;AAC7G,EAAAA,cAAa,GAAI,GAAI,OAAO,IAAIA,cAAa;AAC/C;AACA,SAASC,gBAAe,KAAK,UAAU,CAAC,GAAG,UAAU;AACnD,QAAM,MAAMG,IAAG,GAAG;AAClB,QAAM,oBAAoB,WAAW,QAAQ,gBAAgB,QAAQ,aAAa,GAAG,KAAKJ,cAAa,GAAG;AAC1G,MAAI,OAAO,sBAAsB,YAAY;AAC3C,UAAM,SAAS,kBAAkB,KAAK,KAAK,SAAS,QAAQ;AAC5D,QAAI,UAAU,MAAM;AAClB,aAAO;AAAA,IACT;AAAA,EACF;AACA,QAAM,cAAcA,cAAa,GAAG;AACpC,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI,MAAM,GAAIH,gBAAgB,sBAAuB,GAAI,EAAE;AAAA,EACnE;AACA,SAAO,YAAY,KAAK,KAAK,SAAS,QAAQ;AAChD;AACA,SAASM,gBAAe,SAAS,SAAS;AACxC,MAAI,QAAQ,WAAW;AACrB,YAAQ,KAAK,QAAQ,SAAS;AAAA,EAChC;AACF;AACA,SAAS,UAAU,IAAI,IAAI;AACzB,QAAM,YAAY,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC;AACxD,QAAM,YAAY,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC;AACxD,MAAI,UAAU,SAAS,UAAU,MAAM;AACrC,WAAO,UAAU,KAAK,QAAQ,UAAU,IAAI;AAAA,EAC9C;AACA,QAAM,QAAQ,UAAU,KAAK;AAC7B,QAAM,OAAOV,cAAa,KAAK,EAAE,cAAc,WAAW,SAAS;AACnE,MAAI,SAAS,GAAG;AACd,YAAQ,KAAK,uEAAuE;AAAA,EACtF;AACA,SAAO;AACT;AACA,SAAS,gBAAgBC,MAAK,QAAQ,UAAU,SAAS;AACvD,MAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,eAAW,SAAS,QAAQ;AAC1B,sBAAgBA,MAAK,OAAO,UAAU,OAAO;AAAA,IAC/C;AAAA,EACF,OAAO;AACL,aAAS,OAAO,KAAK,KAAK,EAAEA,MAAK,QAAQ,OAAO;AAAA,EAClD;AACF;AACA,SAAS,aAAa,MAAM,UAAU,SAAS;AAC7C,QAAM,SAASO,gBAAe,MAAM,OAAO;AAC3C,MAAI,CAAC,MAAM,QAAQ,MAAM,KAAK,QAAQ,kBAAkB;AACtD,UAAM,aAAa,QAAQ,iBAAiB,MAAM;AAClD,QAAI,YAAY;AACd,aAAO;AAAA,IACT;AACA,UAAM,UAAU,SAAS,OAAO,KAAK,KAAK;AAC1C,QAAI,QAAQ,aAAa;AACvB,YAAM,OAAO,QAAQ,YAAY,QAAQ,OAAO;AAChD,YAAMP,OAAM,IAAIC,IAAG,IAAI;AACvB,cAAQD,MAAK,QAAQ,OAAO;AAC5B,UAAIA,KAAI,OAAO,WAAW,GAAG;AAC3B,cAAM,IAAI,MAAM,+CAAgD,MAAO,YAAY;AAAA,MACrF;AACA,aAAOW,OAAMX,KAAI,OAAO,CAAC,CAAC;AAAA,IAC5B;AAAA,EACF;AACA,EAAAA,KAAI,MAAM;AACV,kBAAgBA,MAAK,QAAQ,UAAU,OAAO;AAC9C,SAAOA,KAAI,QAAQ,IAAI;AACzB;AACA,SAASY,QAAO,MAAM,SAAS;AAC7B,YAAU,OAAO,OAAO,CAAC,GAAGzB,uBAAsB,OAAO;AACzD,SAAO,aAAa,MAAMY,eAAc,OAAO;AACjD;;;ACzOA,IAAM,uBAAuB;AAAA,EAC3B,QAAQ;AAAA,EACR,iBAAiB;AAAA,EACjB,gBAAgB;AAAA,EAChB,aAAa;AACf;AACA,IAAM,YAAN,MAAgB;AAAA,EACd,YAAY,MAAM,UAAU,CAAC,GAAG;AAC9B,SAAK,MAAM;AACX,SAAK,OAAO;AACZ,SAAK,UAAU;AAAA,EACjB;AAAA,EACA,OAAO;AACL,WAAO,KAAK,OAAO,KAAK,KAAK;AAAA,EAC/B;AAAA,EACA,OAAO;AACL,UAAM,MAAM,KAAK,KAAK,KAAK,GAAG;AAC9B,QAAI,QAAQc,OAAM,GAAG;AACrB,QAAI,UAAU,QAAW;AACvB,YAAM,UAAUC,MAAK,GAAG;AACxB,UAAI,CAAC,SAAS;AACZ,cAAM,IAAI,MAAM,GAAIC,gBAAgB,8BAA+B,QAAQ,CAAE,YAAa,IAAI,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAE,GAAG;AAAA,MACjI;AACA,YAAM,QAAQ,MAAM;AACpB,cAAQ,QAAQ,KAAK,MAAM,KAAK,KAAK,OAAO,KAAK,OAAO;AAAA,IAC1D;AACA,SAAK,OAAO,MAAM;AAClB,WAAO;AAAA,EACT;AACF;AACA,IAAMC,QAAO,OAAO,IAAI,MAAM;AAC9B,IAAMC,SAAQ,OAAO,IAAI,OAAO;AAChC,SAAS,aAAa,OAAO,WAAW,SAAS;AAC/C,QAAM,MAAM,CAAC;AACb,WAAS,IAAI,GAAG,IAAI,MAAM,OAAO,KAAK;AACpC,UAAM,QAAQ,eAAe,WAAW,OAAO;AAC/C,QAAI,UAAUA,QAAO;AACnB,UAAI,MAAM,UAAU,UAAU;AAC5B;AAAA,MACF;AACA,YAAM,IAAI,MAAM,GAAIF,gBAAgB,yCAAyC;AAAA,IAC/E;AACA,QAAI,UAAUC,OAAM;AAClB,YAAM,IAAI,MAAM,GAAID,gBAAgB,4CAA6C,CAAE,cAAe,MAAM,KAAM,GAAG;AAAA,IACnH;AACA,QAAI,CAAC,IAAI;AAAA,EACX;AACA,SAAO;AACT;AACA,SAAS,WAAW,OAAO,WAAW,SAAS;AAC7C,QAAM,UAAU,QAAQ,YAAY;AACpC,QAAM,MAAM,UAAU,SAAY,CAAC;AACnC,QAAM,IAAI,UAAU,oBAAI,IAAI,IAAI;AAChC,WAAS,IAAI,GAAG,IAAI,MAAM,OAAO,KAAK;AACpC,UAAM,MAAM,eAAe,WAAW,OAAO;AAC7C,QAAI,QAAQE,QAAO;AACjB,UAAI,MAAM,UAAU,UAAU;AAC5B;AAAA,MACF;AACA,YAAM,IAAI,MAAM,GAAIF,gBAAgB,uCAAuC;AAAA,IAC7E;AACA,QAAI,QAAQC,OAAM;AAChB,YAAM,IAAI,MAAM,GAAID,gBAAgB,0CAA2C,CAAE,uBAAwB,MAAM,KAAM,GAAG;AAAA,IAC1H;AACA,QAAI,YAAY,QAAQ,OAAO,QAAQ,UAAU;AAC/C,YAAM,IAAI,MAAM,GAAIA,gBAAgB,uCAAwC,OAAO,GAAI,GAAG;AAAA,IAC5F;AACA,QAAI,QAAQ,2BAA2B,MAAM;AAC3C,UAAI,WAAW,EAAE,IAAI,GAAG,KAAK,CAAC,WAAW,OAAO,KAAK;AACnD,cAAM,IAAI,MAAM,GAAIA,gBAAgB,0BAA2B,GAAI,GAAG;AAAA,MACxE;AAAA,IACF;AACA,UAAM,QAAQ,eAAe,WAAW,OAAO;AAC/C,QAAI,UAAUC,OAAM;AAClB,YAAM,IAAI,MAAM,GAAID,gBAAgB,0CAA2C,CAAE,yBAA0B,MAAM,KAAM,GAAG;AAAA,IAC5H;AACA,QAAI,SAAS;AACX,QAAE,IAAI,KAAK,KAAK;AAAA,IAClB,OAAO;AACL,UAAI,GAAG,IAAI;AAAA,IACb;AAAA,EACF;AACA,SAAO,UAAU,IAAI;AACvB;AACA,SAAS,eAAe,WAAW,SAAS;AAC1C,MAAI,UAAU,KAAK,GAAG;AACpB,WAAOC;AAAA,EACT;AACA,QAAM,QAAQ,UAAU,KAAK;AAC7B,MAAI,MAAM,SAASE,MAAK,OAAO;AAC7B,WAAOD;AAAA,EACT;AACA,MAAI,MAAM,KAAK,UAAU;AACvB,WAAO,MAAM;AAAA,EACf;AACA,MAAI,MAAM,SAASC,MAAK,OAAO;AAC7B,WAAO,aAAa,OAAO,WAAW,OAAO;AAAA,EAC/C;AACA,MAAI,MAAM,SAASA,MAAK,KAAK;AAC3B,WAAO,WAAW,OAAO,WAAW,OAAO;AAAA,EAC7C;AACA,MAAI,MAAM,SAASA,MAAK,KAAK;AAC3B,QAAI,QAAQ,QAAQ,OAAO,QAAQ,KAAK,MAAM,KAAK,MAAM,YAAY;AACnE,YAAM,SAAS,eAAe,WAAW,OAAO;AAChD,aAAO,QAAQ,KAAK,MAAM,KAAK,EAAE,MAAM;AAAA,IACzC;AACA,UAAM,IAAI,MAAM,GAAIH,gBAAgB,uBAAwB,MAAM,KAAM,GAAG;AAAA,EAC7E;AACA,QAAM,IAAI,MAAM,aAAa;AAC/B;AACA,SAASI,QAAO,MAAM,SAAS;AAC7B,MAAI,EAAE,gBAAgB,aAAa;AACjC,UAAM,IAAI,MAAM,GAAIJ,gBAAgB,sCAAsC;AAAA,EAC5E;AACA,YAAU,OAAO,OAAO,CAAC,GAAG,sBAAsB,OAAO;AACzD,QAAM,YAAY,QAAQ,aAAa,IAAI,UAAU,MAAM,OAAO;AAClE,QAAM,UAAU,eAAe,WAAW,OAAO;AACjD,MAAI,YAAYC,OAAM;AACpB,UAAM,IAAI,MAAM,GAAID,gBAAgB,qCAAqC;AAAA,EAC3E;AACA,MAAI,YAAYE,QAAO;AACrB,UAAM,IAAI,MAAM,GAAIF,gBAAgB,uBAAuB;AAAA,EAC7D;AACA,MAAI,CAAC,UAAU,KAAK,GAAG;AACrB,UAAM,IAAI,MAAM,GAAIA,gBAAgB,0CAA0C;AAAA,EAChF;AACA,SAAO;AACT;;;AhBjIA,IAAM,eAAe;AAerB,SAAS,WAAY,KAAK;AACxB,MAAI,IAAI,UAAU,OAAO,IAAI,GAAG,MAAM,IAAI,OAAO;AAC/C,WAAO;AAAA,EACT;AACA,QAAM,MAAM,IAAI,MAAM,GAAG;AAGzB,MAAI,CAAC,KAAK;AACR,WAAO;AAAA,EACT;AACA,QAAM,QAAQ,IAAI,WAAW,IAAI,MAAM,aAAa,CAAC;AACrD,QAAM,IAAI,IAAI,OAAO,CAAC;AACtB,SAAO;AAAA,IACL,IAAUK,OAAYC,MAAK,KAAK,YAAY;AAAA,IAC5C,IAAUD,OAAYC,MAAK,OAAO,KAAK;AAAA,EACzC;AACF;AASA,SAAS,mBAAoB;AAC3B,QAAM,IAAI,MAAM,2EAA2E;AAC7F;AAUA,SAAS,cAAe,KAAK;AAC3B,MAAI,OAAO,MAAM,GAAG,GAAG;AACrB,UAAM,IAAI,MAAM,qEAAqE;AAAA,EACvF;AACA,MAAI,QAAQ,YAAY,QAAQ,WAAW;AACzC,UAAM,IAAI,MAAM,0FAA0F;AAAA,EAC5G;AACA,SAAO;AACT;AAEA,IAAM,gBAAgB;AAAA,EACpB,SAAS;AAAA,EACT,cAAc;AAAA,IACZ,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,QAAQ;AAAA,EACV;AACF;AAMA,SAAS,WAAY,OAAO;AAC1B,MAAI,MAAM,CAAC,MAAM,GAAG;AAClB,UAAM,IAAI,MAAM,oDAAoD;AAAA,EACtE;AACA,SAAO,IAAI,OAAO,MAAM,SAAS,CAAC,CAAC;AACrC;AAEA,IAAM,gBAAgB;AAAA,EACpB,iBAAiB;AAAA,EACjB,uBAAuB;AAAA,EACvB,UAAU;AAAA,EACV,eAAe;AAAA,EACf,aAAa;AAAA;AAAA;AAAA,EAEb,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,wBAAwB;AAAA;AAAA,EAExB,MAAM,CAAC;AACT;AACA,cAAc,KAAK,YAAY,IAAI;AAE5B,IAAMC,QAAO;AACb,IAAMC,QAAO;AAOb,IAAMC,UAAS,CAAC,SAAeA,QAAO,MAAM,aAAa;AAOzD,IAAMC,UAAS,CAAC,SAAeA,QAAO,MAAM,aAAa;;;AlBhGhE,IAAM,kBAAN,MAAsB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKpB,YAAa,OAAO,YAAY;AAE9B,SAAK,QAAQ;AACb,SAAK,aAAa;AAMlB,SAAK,QAAQ,CAAC;AACd,SAAK,aAAa;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,QAAS,MAAM,SAAS;AACtB,YAAQ,MAAM,MAAM,OAAO;AAC3B,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAO,OAAO;AACZ,aAAS,MAAM,KAAK;AACpB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAO,SAAS;AACd,WAAO,MAAM,MAAM,OAAO;AAAA,EAC5B;AACF;AAOO,IAAM,UAAU,CAAC,QAAQ,MAAM,UAAU,CAAC,MAAM;AACrD,QAAM,EAAE,SAAS,MAAM,IAAI;AAC3B,QAAM,EAAE,OAAO,YAAY,YAAY,MAAM,IAAI;AACjD,SAAO,MAAM,KAAK,IAAI;AACtB,QAAM,OAAO,aAAa,MAAM;AAEhC,MAAI,OAAO,YAAY;AAErB,QAAI,OAAO,aAAa,aAAa,MAAM,YAAY;AAErD,UAAI,QAAQ;AACV,qBAAa,QAAQ,IAAI;AAAA,MAE3B,OAAO;AACL,cAAM,IAAI;AACV,cAAM,IAAI,WAAW,kBAAkB,UAAU,iCAAiC,IAAI;AAAA,4IAC8C;AAAA,MACtI;AAAA,IAEF,OAAO;AACL,YAAM,IAAI;AACV,YAAM,IAAI,WAAW,yCAAyC,IAAI,EAAE;AAAA,IACtE;AAAA,EACF;AACF;AAUO,IAAM,cAAc,CAAC,EAAE,KAAK,MAAM,MAAM;AAC7C,QAAM,OAAO,IAAI,MAAM,aAAa,MAAM;AAC1C,SAAO,eAAAC,QAAO,eAAe,IAAI,IAAI;AACvC;AAMO,IAAM,WAAW,CAAC,QAAQ,EAAE,KAAK,MAAM,MAAM;AAClD,QAAM,aAAa,IAAI,MAAM,aAAa,MAAM;AAChD,QAAM,OAAO,eAAAA,QAAO,OAAO,UAAU;AACrC,MAAI,OAAO,aAAa,KAAK,SAAS,aAAa,OAAO,MAAM,YAAY;AAC1E,UAAM,IAAI,WAAW,uCAAuC;AAAA,EAC9D,OAAO;AACL,eAAW,QAAQ,IAAI;AACvB,eAAW,QAAQ,IAAI,KAAK;AAC5B,eAAW,QAAQ,KAAK;AAAA,EAC1B;AACF;AAOO,IAAM,QAAQ,CAAC,QAAQ,UAAU,CAAC,MAAM;AAC7C,QAAM,EAAE,SAAS,MAAM,IAAI;AAC3B,QAAM,EAAE,OAAO,OAAO,YAAY,WAAW,IAAI;AAEjD,QAAM,cAAmBC,QAAO,EAAE,SAAS,GAAG,MAAM,CAAC;AACrD,QAAM,cAAc,eAAAD,QAAO,OAAO,YAAY,MAAM;AAEpD,QAAM,OAAO,YAAY,SAAS,YAAY;AAC9C,QAAM,SAAS,aAAa;AAI5B,MAAI,WAAW,GAAG;AAChB,gBAAY,QAAQ,aAAa,WAAW;AAC5C,WAAO,MAAM,SAAS,GAAG,UAAU;AAAA,EAErC,WAAW,QAAQ;AACjB,iBAAa,QAAQ,IAAI;AACzB,gBAAY,QAAQ,aAAa,WAAW;AAC5C,WAAO,MAAM,SAAS,GAAG,OAAO,UAAU;AAAA,EAC5C,OAAO;AACL,UAAM,IAAI,WAAW;AAAA,qDAC4B;AAAA,EACnD;AACF;AAMO,IAAM,eAAe,CAAC,QAAQ,eAAe;AAClD,QAAM,EAAE,OAAO,WAAW,IAAI;AAE9B,QAAM,IAAI,MAAM,SAAS,YAAY,OAAO,UAAU,GAAG,UAAU;AAEnE,SAAO,cAAc,aAAa;AAClC,SAAO,aAAa;AACtB;AAOA,IAAM,aAAa,CAAC,QAAQ,UAAU;AACpC,SAAO,MAAM,IAAI,OAAO,OAAO,UAAU;AACzC,SAAO,cAAc,MAAM;AAC7B;AAMA,IAAM,cAAc,CAAC,EAAE,MAAM,GAAGA,SAAQ,WAAW;AACjD,QAAM,IAAIA,OAAM;AAChB,QAAM,IAAI,QAAQA,QAAO,MAAM;AACjC;AAEA,IAAM,sBAAsB;AAAA,EAC1B,IAAI,MAAM,KAAK,KAAK,CAAC;AAAA,EACrB,IAAI,MAAM,KAAK,QAAQ,SAAS;AAAA,EAChC,IAAI,MAAM,KAAK,MAAM,CAAC;AAAA,EACtB,IAAI,MAAM,KAAK,QAAQ,OAAO;AAChC;AAEA,IAAM,UAAU,IAAI,MAAM,KAAK,KAAK,EAAE;AAS/B,IAAM,wBAAwB,CAAC,gBAAgB;AACpD,QAAM,SAAS,CAAC,GAAG,mBAAmB;AACtC,SAAO,KAAK,IAAI,MAAM,KAAK,OAAO,YAAY,MAAM,CAAC;AACrD,aAAW,cAAc,aAAa;AACpC,WAAO,KAAK,OAAO;AACnB,WAAO,KAAK,IAAI,MAAM,KAAK,OAAO,EAAE,QAAQ,aAAa,EAAE,CAAC,CAAC;AAAA,EAC/D;AACA,QAAME,UAAS,eAAe,MAAM;AACpC,SAAO,eAAAF,QAAO,eAAeE,OAAM,IAAIA;AACzC;AAUO,IAAM,eAAe,CAAC,EAAE,MAAM,MACnC,sBAAsB,MAAM,IAAI,SAAO,IAAI,MAAM,UAAU,CAAC;AAoCvD,IAAM,eAAe,CAACC,SAAQ,UAAU,CAAC,MAAM;AACpD,QAAM;AAAA,IACJ,QAAQ,CAAC;AAAA,IACT,aAAa;AAAA,IACb,aAAaA,QAAO;AAAA,IACpB,aAAa,aAAa,EAAE,MAAM,CAAC;AAAA,EACrC,IAAI;AACJ,QAAM,QAAQ,IAAI,WAAWA,SAAQ,YAAY,UAAU;AAE3D,QAAM,SAAS,IAAI,gBAAgB,OAAO,UAAU;AACpD,aAAW,QAAQ,OAAO;AACxB,WAAO,QAAQ,IAAI;AAAA,EACrB;AAEA,SAAO;AACT;;;AmClRA,eAAsB,YACpB,GACA,EAAE,KAAK,GACP,MACgD;AAChD,MAAI,CAAC;AAAM,UAAM,IAAI,MAAM,SAAS;AAEpC,QAAM,mBAAoB,MAAMC,QAAO;AAAA,IACrC,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,EAAE;AAAA,IAC5B;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,EAAE,IAAI,iBAAiB,KAAK,iBAAiB,KAAK;AAExD,MAAI,OAAO;AACX,QAAM,aAAiB,aAAa,EAAE,OAAO,CAAC,iBAAiB,GAAsC,EAAE,CAAC;AACxG,UAAQ;AACR,aAAW,EAAE,KAAK,MAAM,KAAK,EAAE,QAAQ,GAAG;AACxC,YAAY,YAAY,EAAE,KAAK,MAAM,CAAsC;AAAA,EAC7E;AACA,QAAMC,UAAS,IAAI,WAAW,IAAI;AAClC,QAAM,SAAa,aAAaA,SAAQ,EAAE,WAAW,CAAC;AAEtD,SAAO,QAAQ,iBAAiB,GAAsC;AAEtE,aAAW,EAAE,KAAK,MAAM,KAAK,EAAE,QAAQ,GAAG;AACxC,WAAO,MAAM,EAAE,KAAK,MAAM,CAAsC;AAAA,EAClE;AACA,SAAO,MAAM;AACb,SAAO,MAAMD,QAAO,EAAE,OAAO,OAAO,OAAO,gBAAQ,OAAO,YAAI,CAAC;AACjE;AAEA,eAAsB,aAAa,QAAkE;AACnG,QAAM,QAAQ,MAAM,OAAO,SAAS;AACpC,QAAM,SAAS,MAAM,OAAO,IAAI,MAAM,CAAC,CAAC;AACxC,MAAI,CAAC;AAAQ,UAAM,IAAI,MAAM,sBAAsB;AACnD,QAAM,MAAM,MAAME,QAAO,EAAE,OAAO,OAAO,OAAO,gBAAQ,mBAAM,CAAC;AAC/D,QAAM;AAAA,IACJ,IAAI,EAAE,MAAM,KAAK;AAAA,EACnB,IAAI,IAAI;AACR,SAAO,EAAE,MAAM,KAAK;AACtB;",
6
- "names": ["encode", "MSB", "REST", "MSBALL", "INT", "read", "MSB", "REST", "buf", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "buf", "decode", "code", "code", "decode", "equals", "name", "encode", "length", "i", "j", "decode", "buffer", "name", "encode", "decode", "buffer", "base", "baseCache", "code", "equals", "base", "decode", "length", "cache", "cid", "from", "name", "code", "encode", "base", "encode", "decode", "from", "decode", "encode", "encode", "decode", "import_varint", "name", "isBuffer", "buf", "length", "isBuffer", "length", "buf", "buf", "encodedSize", "buf", "encodedSize", "compareTokens", "length", "buf", "encodedSize", "compareTokens", "toToken", "length", "toToken", "length", "buf", "encodedSize", "toToken", "length", "buf", "encodedSize", "buf", "encodedSize", "buf", "encodedSize", "ui8a", "length", "cborEncoders", "cborEncoders", "code", "decode", "encode", "name", "typeofs", "objectTypeNames", "is", "isBuffer", "getObjectType", "Type", "name", "Token", "useBuffer", "textDecoder", "textEncoder", "isBuffer", "buf", "asU8A", "toString", "utf8Slice", "fromString", "utf8ToBytes", "fromArray", "slice", "concat", "length", "alloc", "compare", "isBuffer", "utf8ToBytes", "length", "utf8Slice", "buf", "decodeCodePointsArray", "MAX_ARGUMENTS_LENGTH", "defaultChunkSize", "Bl", "alloc", "slice", "concat", "decodeErrPrefix", "encodeErrPrefix", "uintMinorPrefixBytes", "assertEnoughData", "uintBoundaries", "readUint8", "assertEnoughData", "decodeErrPrefix", "readUint16", "readUint32", "readUint64", "decodeUint8", "Token", "Type", "decodeUint16", "decodeUint32", "decodeUint64", "encodeUint", "buf", "encodeUintValue", "encodedSize", "compareTokens", "decodeNegint8", "Token", "Type", "readUint8", "decodeNegint16", "readUint16", "decodeNegint32", "readUint32", "neg1b", "pos1b", "decodeNegint64", "readUint64", "decodeErrPrefix", "encodeNegint", "buf", "encodeUintValue", "encodedSize", "uintBoundaries", "compareTokens", "toToken", "length", "assertEnoughData", "buf", "slice", "Token", "Type", "decodeBytesCompact", "decodeBytes8", "readUint8", "decodeBytes16", "readUint16", "decodeBytes32", "readUint32", "decodeBytes64", "readUint64", "decodeErrPrefix", "tokenBytes", "fromString", "encodeBytes", "encodeUintValue", "encodedSize", "compareTokens", "compareBytes", "compare", "toToken", "length", "assertEnoughData", "Token", "Type", "toString", "slice", "decodeStringCompact", "decodeString8", "readUint8", "decodeString16", "readUint16", "decodeString32", "readUint32", "decodeString64", "readUint64", "decodeErrPrefix", "encodeString", "encodeBytes", "toToken", "length", "Token", "Type", "decodeArrayCompact", "decodeArray8", "readUint8", "decodeArray16", "readUint16", "decodeArray32", "readUint32", "decodeArray64", "readUint64", "decodeErrPrefix", "decodeArrayIndefinite", "encodeArray", "buf", "encodeUintValue", "encodeUint", "encodedSize", "toToken", "length", "Token", "Type", "decodeMapCompact", "decodeMap8", "readUint8", "decodeMap16", "readUint16", "decodeMap32", "readUint32", "decodeMap64", "readUint64", "decodeErrPrefix", "decodeMapIndefinite", "encodeMap", "buf", "encodeUintValue", "encodeUint", "encodedSize", "decodeTagCompact", "Token", "Type", "decodeTag8", "readUint8", "decodeTag16", "readUint16", "decodeTag32", "readUint32", "decodeTag64", "readUint64", "encodeTag", "buf", "encodeUintValue", "encodeUint", "encodedSize", "MINOR_FALSE", "MINOR_TRUE", "MINOR_NULL", "MINOR_UNDEFINED", "decodeUndefined", "decodeErrPrefix", "Token", "Type", "decodeBreak", "createToken", "decodeFloat16", "readFloat16", "decodeFloat32", "readFloat32", "decodeFloat64", "readFloat64", "encodeFloat", "buf", "encodeFloat16", "ui8a", "encodeFloat32", "encodeFloat64", "encodedSize", "buffer", "dataView", "encodeUint", "invalidMinor", "decodeErrPrefix", "errorer", "jump", "decodeUint8", "decodeUint16", "decodeUint32", "decodeUint64", "decodeNegint8", "decodeNegint16", "decodeNegint32", "decodeNegint64", "decodeBytesCompact", "decodeBytes8", "decodeBytes16", "decodeBytes32", "decodeBytes64", "decodeStringCompact", "decodeString8", "decodeString16", "decodeString32", "decodeString64", "decodeArrayCompact", "decodeArray8", "decodeArray16", "decodeArray32", "decodeArray64", "decodeArrayIndefinite", "decodeMapCompact", "decodeMap8", "decodeMap16", "decodeMap32", "decodeMap64", "decodeMapIndefinite", "decodeTagCompact", "decodeTag8", "decodeTag16", "decodeTag32", "decodeTag64", "decodeUndefined", "decodeFloat16", "decodeFloat32", "decodeFloat64", "decodeBreak", "quick", "Token", "Type", "quickEncodeToken", "fromArray", "defaultEncodeOptions", "quickEncodeToken", "makeCborEncoders", "Type", "encodeUint", "encodeNegint", "encodeBytes", "encodeString", "encodeArray", "encodeMap", "encodeTag", "encodeFloat", "cborEncoders", "buf", "Bl", "Ref", "encodeErrPrefix", "simpleTokens", "Token", "typeEncoders", "objectToTokens", "length", "sortMapEntries", "is", "asU8A", "encode", "quick", "jump", "decodeErrPrefix", "DONE", "BREAK", "Type", "decode", "Token", "Type", "name", "code", "encode", "decode", "varint", "encode", "length", "buffer", "encode", "buffer", "decode"]
7
- }