{"version":3,"file":"Royh6j-X.js","sources":["../../../../node_modules/@heroicons/vue/outline/esm/BadgeCheckIcon.js","../../../../node_modules/@heroicons/vue/outline/esm/CheckCircleIcon.js","../../../../node_modules/@heroicons/vue/outline/esm/CheckIcon.js","../../../../components/mint/MintDidSelector.client.vue","../../../../components/mint/MintCollectionSelector.vue","../../../../node_modules/multiformats/dist/src/bytes.js","../../../../node_modules/multiformats/dist/src/vendor/base-x.js","../../../../node_modules/multiformats/dist/src/bases/base.js","../../../../node_modules/multiformats/dist/src/bases/base32.js","../../../../node_modules/multiformats/dist/src/bases/base58.js","../../../../node_modules/multiformats/dist/src/vendor/varint.js","../../../../node_modules/multiformats/dist/src/varint.js","../../../../node_modules/multiformats/dist/src/hashes/digest.js","../../../../node_modules/multiformats/dist/src/cid.js","../../../../node_modules/@ipld/dag-pb/src/pb-decode.js","../../../../node_modules/@ipld/dag-pb/src/pb-encode.js","../../../../node_modules/@ipld/dag-pb/src/util.js","../../../../node_modules/@ipld/dag-pb/src/index.js","../../../../node_modules/@protobufjs/aspromise/index.js","../../../../node_modules/@protobufjs/base64/index.js","../../../../node_modules/@protobufjs/eventemitter/index.js","../../../../node_modules/@protobufjs/float/index.js","../../../../node_modules/@protobufjs/inquire/index.js","../../../../node_modules/@protobufjs/utf8/index.js","../../../../node_modules/@protobufjs/pool/index.js","../../../../node_modules/protobufjs/src/util/longbits.js","../../../../node_modules/protobufjs/src/util/minimal.js","../../../../node_modules/protobufjs/src/writer.js","../../../../node_modules/protobufjs/src/writer_buffer.js","../../../../node_modules/protobufjs/src/reader.js","../../../../node_modules/protobufjs/src/reader_buffer.js","../../../../node_modules/protobufjs/src/rpc/service.js","../../../../node_modules/protobufjs/src/rpc.js","../../../../node_modules/protobufjs/src/roots.js","../../../../node_modules/protobufjs/src/index-minimal.js","../../../../node_modules/protobufjs/minimal.js","../../../../node_modules/@ipld/unixfs/gen/unixfs.js","../../../../node_modules/@ipld/unixfs/src/unixfs.js","../../../../node_modules/@ipld/unixfs/src/codec.js","../../../../node_modules/actor/src/lib.js","../../../../node_modules/@ipld/unixfs/src/file/chunker/indexed.js","../../../../node_modules/@ipld/unixfs/src/file/chunker/buffer.js","../../../../node_modules/@ipld/unixfs/src/writer/util.js","../../../../node_modules/@ipld/unixfs/src/file/chunker.js","../../../../node_modules/@ipld/unixfs/src/file/layout/queue.js","../../../../node_modules/@ipld/unixfs/src/file/writer.js","../../../../node_modules/@ipld/unixfs/src/file/chunker/fixed.js","../../../../node_modules/multiformats/dist/src/hashes/hasher.js","../../../../node_modules/multiformats/dist/src/hashes/sha2-browser.js","../../../../node_modules/@ipld/unixfs/src/file/layout/balanced.js","../../../../node_modules/@ipld/unixfs/src/file.js","../../../../node_modules/@ipld/unixfs/src/directory.js","../../../../node_modules/@perma/map/src/bitfield/Uint32.js","../../../../node_modules/murmurhash3js-revisited/lib/murmurHash3js.js","../../../../node_modules/murmurhash3js-revisited/index.js","../../../../node_modules/@perma/map/src/path/Uint32.js","../../../../node_modules/@perma/map/src/node.js","../../../../node_modules/@multiformats/murmur3/src/index.js","../../../../node_modules/@perma/map/src/path/Uint8Array.js","../../../../node_modules/@perma/map/src/bitfield/Uint8Array.js","../../../../node_modules/@perma/map/src/lib.js","../../../../node_modules/@perma/map/src/path/InfiniteUint8Array.js","../../../../node_modules/@perma/map/src/unixfs.js","../../../../node_modules/multiformats/dist/src/block.js","../../../../node_modules/@ipld/unixfs/src/sharded-directory.js","../../../../node_modules/@ipld/unixfs/src/lib.js","../../../../node_modules/multiformats/dist/src/codecs/raw.js","../../../../node_modules/ipfs-car/unixfs.js","../../../../node_modules/varint/encode.js","../../../../node_modules/varint/decode.js","../../../../node_modules/varint/length.js","../../../../node_modules/varint/index.js","../../../../node_modules/cborg/lib/is.js","../../../../node_modules/cborg/lib/token.js","../../../../node_modules/cborg/lib/byte-utils.js","../../../../node_modules/cborg/lib/bl.js","../../../../node_modules/cborg/lib/common.js","../../../../node_modules/cborg/lib/0uint.js","../../../../node_modules/cborg/lib/1negint.js","../../../../node_modules/cborg/lib/2bytes.js","../../../../node_modules/cborg/lib/3string.js","../../../../node_modules/cborg/lib/4array.js","../../../../node_modules/cborg/lib/5map.js","../../../../node_modules/cborg/lib/6tag.js","../../../../node_modules/cborg/lib/7float.js","../../../../node_modules/cborg/lib/jump.js","../../../../node_modules/cborg/lib/encode.js","../../../../node_modules/@ipld/dag-cbor/src/index.js","../../../../node_modules/ipfs-car/car.js","../../../../utilities/filebase-uploader.ts","../../../../components/goby/GobyUrlInputWithUpload.vue","../../../../components/goby/GobyCreateCollectionForm.vue","../../../../components/mint/MintDropZone.vue","../../../../node_modules/papaparse/papaparse.min.js","../../../../types/minting.ts","../../../../components/mint/MintFolderUploader.vue","../../../../components/mint/MintSingleDetailsForm.vue","../../../../node_modules/base64-js/index.js","../../../../node_modules/ieee754/index.js","../../../../node_modules/buffer/index.js","../../../../components/goby/GobyCreateCollectionModal.vue","../../../../types/store.ts","../../../../utilities/files.ts","../../../../components/mint/MintSingleForm.client.vue","../../../../pages/mint/index.vue"],"sourcesContent":["import { createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\"\n }, [\n _createVNode(\"path\", {\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n d: \"M9 12l2 2 4-4M7.835 4.697a3.42 3.42 0 001.946-.806 3.42 3.42 0 014.438 0 3.42 3.42 0 001.946.806 3.42 3.42 0 013.138 3.138 3.42 3.42 0 00.806 1.946 3.42 3.42 0 010 4.438 3.42 3.42 0 00-.806 1.946 3.42 3.42 0 01-3.138 3.138 3.42 3.42 0 00-1.946.806 3.42 3.42 0 01-4.438 0 3.42 3.42 0 00-1.946-.806 3.42 3.42 0 01-3.138-3.138 3.42 3.42 0 00-.806-1.946 3.42 3.42 0 010-4.438 3.42 3.42 0 00.806-1.946 3.42 3.42 0 013.138-3.138z\"\n })\n ]))\n}","import { createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\"\n }, [\n _createVNode(\"path\", {\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n d: \"M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z\"\n })\n ]))\n}","import { createVNode as _createVNode, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"2\",\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\"\n }, [\n _createVNode(\"path\", {\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n d: \"M5 13l4 4L19 7\"\n })\n ]))\n}","\n\n","\n\n","export const empty = new Uint8Array(0);\nexport function toHex(d) {\n return d.reduce((hex, byte) => hex + byte.toString(16).padStart(2, '0'), '');\n}\nexport function fromHex(hex) {\n const hexes = hex.match(/../g);\n return hexes != null ? new Uint8Array(hexes.map(b => parseInt(b, 16))) : empty;\n}\nexport function equals(aa, bb) {\n if (aa === bb)\n return true;\n if (aa.byteLength !== bb.byteLength) {\n return false;\n }\n for (let ii = 0; ii < aa.byteLength; ii++) {\n if (aa[ii] !== bb[ii]) {\n return false;\n }\n }\n return true;\n}\nexport function coerce(o) {\n if (o instanceof Uint8Array && o.constructor.name === 'Uint8Array')\n return o;\n if (o instanceof ArrayBuffer)\n 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}\nexport function isBinary(o) {\n return o instanceof ArrayBuffer || ArrayBuffer.isView(o);\n}\nexport function fromString(str) {\n return new TextEncoder().encode(str);\n}\nexport function toString(b) {\n return new TextDecoder().decode(b);\n}\n//# sourceMappingURL=bytes.js.map","/* eslint-disable */\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.\n/**\n * @param {string} ALPHABET\n * @param {any} name\n */\nfunction base(ALPHABET, name) {\n if (ALPHABET.length >= 255) {\n throw new TypeError('Alphabet too long');\n }\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) {\n throw new TypeError(x + ' is ambiguous');\n }\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 /**\n * @param {any[] | Iterable} source\n */\n function encode(source) {\n // @ts-ignore\n if (source instanceof Uint8Array)\n ;\n else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength);\n }\n else if (Array.isArray(source)) {\n source = Uint8Array.from(source);\n }\n if (!(source instanceof Uint8Array)) {\n throw new TypeError('Expected Uint8Array');\n }\n if (source.length === 0) {\n return '';\n }\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) {\n throw new Error('Non-zero carry');\n }\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) {\n str += ALPHABET.charAt(b58[it2]);\n }\n return str;\n }\n /**\n * @param {string | string[]} source\n */\n function decodeUnsafe(source) {\n if (typeof source !== 'string') {\n throw new TypeError('Expected String');\n }\n if (source.length === 0) {\n return new Uint8Array();\n }\n var psz = 0;\n // Skip leading spaces.\n if (source[psz] === ' ') {\n return;\n }\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) {\n return;\n }\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) {\n throw new Error('Non-zero carry');\n }\n length = i;\n psz++;\n }\n // Skip trailing spaces.\n if (source[psz] === ' ') {\n return;\n }\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 /**\n * @param {string | string[]} string\n */\n function decode(string) {\n var buffer = decodeUnsafe(string);\n if (buffer) {\n return buffer;\n }\n throw new Error(`Non-${name} character`);\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n };\n}\nvar src = base;\nvar _brrp__multiformats_scope_baseX = src;\nexport default _brrp__multiformats_scope_baseX;\n//# sourceMappingURL=base-x.js.map","import { coerce } from '../bytes.js';\nimport basex from '../vendor/base-x.js';\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 */\nclass Encoder {\n name;\n prefix;\n baseEncode;\n constructor(name, prefix, baseEncode) {\n this.name = name;\n this.prefix = prefix;\n this.baseEncode = baseEncode;\n }\n encode(bytes) {\n if (bytes instanceof Uint8Array) {\n return `${this.prefix}${this.baseEncode(bytes)}`;\n }\n else {\n throw Error('Unknown type, must be binary type');\n }\n }\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 */\nclass Decoder {\n name;\n prefix;\n baseDecode;\n prefixCodePoint;\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 this.prefixCodePoint = prefix.codePointAt(0);\n this.baseDecode = baseDecode;\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 }\n else {\n throw Error('Can only multibase decode strings');\n }\n }\n or(decoder) {\n return or(this, decoder);\n }\n}\nclass ComposedDecoder {\n decoders;\n constructor(decoders) {\n this.decoders = decoders;\n }\n or(decoder) {\n return or(this, decoder);\n }\n decode(input) {\n const prefix = input[0];\n const decoder = this.decoders[prefix];\n if (decoder != null) {\n return decoder.decode(input);\n }\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}\nexport function or(left, right) {\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n return new ComposedDecoder({\n ...(left.decoders ?? { [left.prefix]: left }),\n ...(right.decoders ?? { [right.prefix]: right })\n });\n}\nexport class Codec {\n name;\n prefix;\n baseEncode;\n baseDecode;\n encoder;\n decoder;\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 encode(input) {\n return this.encoder.encode(input);\n }\n decode(input) {\n return this.decoder.decode(input);\n }\n}\nexport function from({ name, prefix, encode, decode }) {\n return new Codec(name, prefix, encode, decode);\n}\nexport function baseX({ name, prefix, alphabet }) {\n const { encode, decode } = basex(alphabet, name);\n return from({\n prefix,\n name,\n encode,\n decode: (text) => coerce(decode(text))\n });\n}\nfunction decode(string, alphabet, bitsPerChar, name) {\n // Build the character lookup table:\n const codes = {};\n for (let i = 0; i < alphabet.length; ++i) {\n codes[alphabet[i]] = i;\n }\n // Count the padding bytes:\n let end = string.length;\n while (string[end - 1] === '=') {\n --end;\n }\n // Allocate the output:\n const out = new Uint8Array((end * bitsPerChar / 8) | 0);\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 // Append the bits to the buffer:\n buffer = (buffer << bitsPerChar) | value;\n bits += bitsPerChar;\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 // Verify that we have received just enough bits:\n if (bits >= bitsPerChar || (0xff & (buffer << (8 - bits))) !== 0) {\n throw new SyntaxError('Unexpected end of data');\n }\n return out;\n}\nfunction encode(data, alphabet, bitsPerChar) {\n const pad = alphabet[alphabet.length - 1] === '=';\n const mask = (1 << bitsPerChar) - 1;\n let out = '';\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 // Write out as much as we can:\n while (bits > bitsPerChar) {\n bits -= bitsPerChar;\n out += alphabet[mask & (buffer >> bits)];\n }\n }\n // Partial character:\n if (bits !== 0) {\n out += alphabet[mask & (buffer << (bitsPerChar - bits))];\n }\n // Add padding characters until we hit a byte boundary:\n if (pad) {\n while (((out.length * bitsPerChar) & 7) !== 0) {\n out += '=';\n }\n }\n return out;\n}\n/**\n * RFC4648 Factory\n */\nexport function 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//# sourceMappingURL=base.js.map","import { rfc4648 } from './base.js';\nexport const base32 = rfc4648({\n prefix: 'b',\n name: 'base32',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567',\n bitsPerChar: 5\n});\nexport const base32upper = rfc4648({\n prefix: 'B',\n name: 'base32upper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567',\n bitsPerChar: 5\n});\nexport const base32pad = rfc4648({\n prefix: 'c',\n name: 'base32pad',\n alphabet: 'abcdefghijklmnopqrstuvwxyz234567=',\n bitsPerChar: 5\n});\nexport const base32padupper = rfc4648({\n prefix: 'C',\n name: 'base32padupper',\n alphabet: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=',\n bitsPerChar: 5\n});\nexport const base32hex = rfc4648({\n prefix: 'v',\n name: 'base32hex',\n alphabet: '0123456789abcdefghijklmnopqrstuv',\n bitsPerChar: 5\n});\nexport const base32hexupper = rfc4648({\n prefix: 'V',\n name: 'base32hexupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV',\n bitsPerChar: 5\n});\nexport const base32hexpad = rfc4648({\n prefix: 't',\n name: 'base32hexpad',\n alphabet: '0123456789abcdefghijklmnopqrstuv=',\n bitsPerChar: 5\n});\nexport const base32hexpadupper = rfc4648({\n prefix: 'T',\n name: 'base32hexpadupper',\n alphabet: '0123456789ABCDEFGHIJKLMNOPQRSTUV=',\n bitsPerChar: 5\n});\nexport const base32z = rfc4648({\n prefix: 'h',\n name: 'base32z',\n alphabet: 'ybndrfg8ejkmcpqxot1uwisza345h769',\n bitsPerChar: 5\n});\n//# sourceMappingURL=base32.js.map","import { baseX } from './base.js';\nexport const base58btc = baseX({\n name: 'base58btc',\n prefix: 'z',\n alphabet: '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n});\nexport const base58flickr = baseX({\n name: 'base58flickr',\n prefix: 'Z',\n alphabet: '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'\n});\n//# sourceMappingURL=base58.js.map","/* eslint-disable */\nvar encode_1 = encode;\nvar MSB = 0x80, REST = 0x7F, MSBALL = ~REST, INT = Math.pow(2, 31);\n/**\n * @param {number} num\n * @param {number[]} out\n * @param {number} offset\n */\nfunction encode(num, out, offset) {\n out = out || [];\n offset = offset || 0;\n var oldOffset = offset;\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 // @ts-ignore\n encode.bytes = offset - oldOffset + 1;\n return out;\n}\nvar decode = read;\nvar MSB$1 = 0x80, REST$1 = 0x7F;\n/**\n * @param {string | any[]} buf\n * @param {number} offset\n */\nfunction read(buf, offset) {\n var res = 0, offset = offset || 0, shift = 0, counter = offset, b, l = buf.length;\n do {\n if (counter >= l) {\n // @ts-ignore\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 // @ts-ignore\n read.bytes = counter - offset;\n return res;\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);\nvar length = function (/** @type {number} */ value) {\n return (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};\nvar varint = {\n encode: encode_1,\n decode: decode,\n encodingLength: length\n};\nvar _brrp_varint = varint;\nexport default _brrp_varint;\n//# sourceMappingURL=varint.js.map","import varint from './vendor/varint.js';\nexport function decode(data, offset = 0) {\n const code = varint.decode(data, offset);\n return [code, varint.decode.bytes];\n}\nexport function encodeTo(int, target, offset = 0) {\n varint.encode(int, target, offset);\n return target;\n}\nexport function encodingLength(int) {\n return varint.encodingLength(int);\n}\n//# sourceMappingURL=varint.js.map","import { coerce, equals as equalBytes } from '../bytes.js';\nimport * as varint from '../varint.js';\n/**\n * Creates a multihash digest.\n */\nexport function create(code, digest) {\n const size = digest.byteLength;\n const sizeOffset = varint.encodingLength(code);\n const digestOffset = sizeOffset + varint.encodingLength(size);\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 return new Digest(code, size, digest, bytes);\n}\n/**\n * Turns bytes representation of multihash digest into an instance.\n */\nexport function 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 if (digest.byteLength !== size) {\n throw new Error('Incorrect length');\n }\n return new Digest(code, size, digest, bytes);\n}\nexport function equals(a, b) {\n if (a === b) {\n return true;\n }\n else {\n const data = b;\n return (a.code === data.code &&\n a.size === data.size &&\n data.bytes instanceof Uint8Array &&\n equalBytes(a.bytes, data.bytes));\n }\n}\n/**\n * Represents a multihash digest which carries information about the\n * hashing algorithm and an actual hash digest.\n */\nexport class Digest {\n code;\n size;\n digest;\n bytes;\n /**\n * Creates a multihash digest.\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//# sourceMappingURL=digest.js.map","import { base32 } from './bases/base32.js';\nimport { base58btc } from './bases/base58.js';\nimport { coerce } from './bytes.js';\nimport * as Digest from './hashes/digest.js';\nimport * as varint from './varint.js';\n// This way TS will also expose all the types from module\nexport * from './link/interface.js';\nexport function format(link, base) {\n const { bytes, version } = link;\n switch (version) {\n case 0:\n return toStringV0(bytes, baseCache(link), base ?? base58btc.encoder);\n default:\n return toStringV1(bytes, baseCache(link), (base ?? base32.encoder));\n }\n}\nexport function toJSON(link) {\n return {\n '/': format(link)\n };\n}\nexport function fromJSON(json) {\n return CID.parse(json['/']);\n}\nconst cache = new WeakMap();\nfunction 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}\nexport class CID {\n code;\n version;\n multihash;\n bytes;\n '/';\n /**\n * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param multihash - (Multi)hash of the of the content.\n */\n constructor(version, code, multihash, bytes) {\n this.code = code;\n this.version = version;\n this.multihash = multihash;\n this.bytes = bytes;\n // flag to serializers that this is a CID and\n // should be treated specially\n this['/'] = bytes;\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 // ArrayBufferView\n get byteOffset() {\n return this.bytes.byteOffset;\n }\n // ArrayBufferView\n get byteLength() {\n return this.bytes.byteLength;\n }\n toV0() {\n switch (this.version) {\n case 0: {\n return this;\n }\n case 1: {\n const { code, multihash } = this;\n if (code !== DAG_PB_CODE) {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0');\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 return (CID.createV0(multihash));\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 0. This is a bug please report`);\n }\n }\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 (CID.createV1(this.code, multihash));\n }\n case 1: {\n return this;\n }\n default: {\n throw Error(`Can not convert CID version ${this.version} to version 1. This is a bug please report`);\n }\n }\n }\n equals(other) {\n return CID.equals(this, other);\n }\n static equals(self, other) {\n const unknown = other;\n return (unknown != null &&\n self.code === unknown.code &&\n self.version === unknown.version &&\n Digest.equals(self.multihash, unknown.multihash));\n }\n toString(base) {\n return format(this, base);\n }\n toJSON() {\n return { '/': format(this) };\n }\n link() {\n return this;\n }\n [Symbol.toStringTag] = 'CID';\n // Legacy\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return `CID(${this.toString()})`;\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 static asCID(input) {\n if (input == null) {\n return null;\n }\n const value = input;\n if (value instanceof CID) {\n // If value is instance of CID then we're all set.\n return value;\n }\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(version, code, multihash, 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 = Digest.decode(multihash);\n return CID.create(version, code, digest);\n }\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 * @param version - Version of the CID\n * @param code - Code of the codec content is encoded in, see https://github.com/multiformats/multicodec/blob/master/table.csv\n * @param digest - (Multi)hash of the of the content.\n */\n static create(version, code, digest) {\n if (typeof code !== 'number') {\n throw new Error('String codecs are no longer supported');\n }\n if (!(digest.bytes instanceof Uint8Array)) {\n throw new Error('Invalid digest');\n }\n switch (version) {\n case 0: {\n if (code !== DAG_PB_CODE) {\n throw new Error(`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 * Simplified version of `create` for CIDv0.\n */\n static createV0(digest) {\n return CID.create(0, DAG_PB_CODE, digest);\n }\n /**\n * Simplified version of `create` for CIDv1.\n *\n * @param code - Content encoding format code.\n * @param digest - Multihash of the content.\n */\n static createV1(code, digest) {\n return CID.create(1, code, digest);\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 static decode(bytes) {\n const [cid, remainder] = CID.decodeFirst(bytes);\n if (remainder.length !== 0) {\n throw new Error('Incorrect length');\n }\n return cid;\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 static decodeFirst(bytes) {\n const specs = CID.inspectBytes(bytes);\n const prefixSize = specs.size - specs.multihashSize;\n const multihashBytes = coerce(bytes.subarray(prefixSize, prefixSize + specs.multihashSize));\n if (multihashBytes.byteLength !== specs.multihashSize) {\n throw new Error('Incorrect length');\n }\n const digestBytes = multihashBytes.subarray(specs.multihashSize - specs.digestSize);\n const digest = new Digest.Digest(specs.multihashCode, specs.digestSize, digestBytes, multihashBytes);\n const cid = specs.version === 0\n ? CID.createV0(digest)\n : CID.createV1(specs.codec, digest);\n return [cid, bytes.subarray(specs.size)];\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 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 let version = next();\n let codec = DAG_PB_CODE;\n if (version === 18) {\n // CIDv0\n version = 0;\n offset = 0;\n }\n else {\n codec = next();\n }\n if (version !== 0 && version !== 1) {\n throw new RangeError(`Invalid CID version ${version}`);\n }\n const prefixSize = offset;\n const multihashCode = next(); // multihash code\n const digestSize = next(); // multihash length\n const size = offset + digestSize;\n const multihashSize = size - prefixSize;\n return { version, codec, multihashCode, digestSize, multihashSize, size };\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 static parse(source, base) {\n const [prefix, bytes] = parseCIDtoBytes(source, base);\n const cid = CID.decode(bytes);\n if (cid.version === 0 && source[0] !== 'Q') {\n throw Error('Version 0 CID string must not include multibase prefix');\n }\n // Cache string representation to avoid computing it on `this.toString()`\n baseCache(cid).set(prefix, source);\n return cid;\n }\n}\nfunction parseCIDtoBytes(source, base) {\n switch (source[0]) {\n // CIDv0 is parsed differently\n case 'Q': {\n const decoder = base ?? base58btc;\n return [\n base58btc.prefix,\n decoder.decode(`${base58btc.prefix}${source}`)\n ];\n }\n case base58btc.prefix: {\n const decoder = base ?? base58btc;\n return [base58btc.prefix, decoder.decode(source)];\n }\n case base32.prefix: {\n const decoder = base ?? base32;\n return [base32.prefix, decoder.decode(source)];\n }\n default: {\n if (base == null) {\n throw Error('To parse non base32 or base58btc encoded CID multibase decoder must be provided');\n }\n return [source[0], base.decode(source)];\n }\n }\n}\nfunction 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 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 }\n else {\n return cid;\n }\n}\nfunction 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 }\n else {\n return cid;\n }\n}\nconst DAG_PB_CODE = 0x70;\nconst SHA_256_CODE = 0x12;\nfunction 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}\nconst cidSymbol = Symbol.for('@ipld/js-cid/CID');\n//# sourceMappingURL=cid.js.map","const textDecoder = new TextDecoder()\n\n/**\n * @typedef {import('./interface.js').RawPBLink} RawPBLink\n */\n\n/**\n * @typedef {import('./interface.js').RawPBNode} RawPBNode\n */\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} offset\n * @returns {[number, number]}\n */\nfunction decodeVarint (bytes, offset) {\n let v = 0\n\n for (let shift = 0; ; shift += 7) {\n /* c8 ignore next 3 */\n if (shift >= 64) {\n throw new Error('protobuf: varint overflow')\n }\n /* c8 ignore next 3 */\n if (offset >= bytes.length) {\n throw new Error('protobuf: unexpected end of data')\n }\n\n const b = bytes[offset++]\n v += shift < 28 ? (b & 0x7f) << shift : (b & 0x7f) * (2 ** shift)\n if (b < 0x80) {\n break\n }\n }\n return [v, offset]\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} offset\n * @returns {[Uint8Array, number]}\n */\nfunction decodeBytes (bytes, offset) {\n let byteLen\n ;[byteLen, offset] = decodeVarint(bytes, offset)\n const postOffset = offset + byteLen\n\n /* c8 ignore next 3 */\n if (byteLen < 0 || postOffset < 0) {\n throw new Error('protobuf: invalid length')\n }\n /* c8 ignore next 3 */\n if (postOffset > bytes.length) {\n throw new Error('protobuf: unexpected end of data')\n }\n\n return [bytes.subarray(offset, postOffset), postOffset]\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} index\n * @returns {[number, number, number]}\n */\nfunction decodeKey (bytes, index) {\n let wire\n ;[wire, index] = decodeVarint(bytes, index)\n // [wireType, fieldNum, newIndex]\n return [wire & 0x7, wire >> 3, index]\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {RawPBLink}\n */\nfunction decodeLink (bytes) {\n /** @type {RawPBLink} */\n const link = {}\n const l = bytes.length\n let index = 0\n\n while (index < l) {\n let wireType, fieldNum\n ;[wireType, fieldNum, index] = decodeKey(bytes, index)\n\n if (fieldNum === 1) {\n if (link.Hash) {\n throw new Error('protobuf: (PBLink) duplicate Hash section')\n }\n if (wireType !== 2) {\n throw new Error(`protobuf: (PBLink) wrong wireType (${wireType}) for Hash`)\n }\n if (link.Name !== undefined) {\n throw new Error('protobuf: (PBLink) invalid order, found Name before Hash')\n }\n if (link.Tsize !== undefined) {\n throw new Error('protobuf: (PBLink) invalid order, found Tsize before Hash')\n }\n\n [link.Hash, index] = decodeBytes(bytes, index)\n } else if (fieldNum === 2) {\n if (link.Name !== undefined) {\n throw new Error('protobuf: (PBLink) duplicate Name section')\n }\n if (wireType !== 2) {\n throw new Error(`protobuf: (PBLink) wrong wireType (${wireType}) for Name`)\n }\n if (link.Tsize !== undefined) {\n throw new Error('protobuf: (PBLink) invalid order, found Tsize before Name')\n }\n\n let byts\n ;[byts, index] = decodeBytes(bytes, index)\n link.Name = textDecoder.decode(byts)\n } else if (fieldNum === 3) {\n if (link.Tsize !== undefined) {\n throw new Error('protobuf: (PBLink) duplicate Tsize section')\n }\n if (wireType !== 0) {\n throw new Error(`protobuf: (PBLink) wrong wireType (${wireType}) for Tsize`)\n }\n\n [link.Tsize, index] = decodeVarint(bytes, index)\n } else {\n throw new Error(`protobuf: (PBLink) invalid fieldNumber, expected 1, 2 or 3, got ${fieldNum}`)\n }\n }\n\n /* c8 ignore next 3 */\n if (index > l) {\n throw new Error('protobuf: (PBLink) unexpected end of data')\n }\n\n return link\n}\n\n/**\n * @param {Uint8Array} bytes\n * @returns {RawPBNode}\n */\nexport function decodeNode (bytes) {\n const l = bytes.length\n let index = 0\n /** @type {RawPBLink[]|void} */\n let links = undefined // eslint-disable-line no-undef-init\n let linksBeforeData = false\n /** @type {Uint8Array|void} */\n let data = undefined // eslint-disable-line no-undef-init\n\n while (index < l) {\n let wireType, fieldNum\n ;[wireType, fieldNum, index] = decodeKey(bytes, index)\n\n if (wireType !== 2) {\n throw new Error(`protobuf: (PBNode) invalid wireType, expected 2, got ${wireType}`)\n }\n\n if (fieldNum === 1) {\n if (data) {\n throw new Error('protobuf: (PBNode) duplicate Data section')\n }\n\n [data, index] = decodeBytes(bytes, index)\n if (links) {\n linksBeforeData = true\n }\n } else if (fieldNum === 2) {\n if (linksBeforeData) { // interleaved Links/Data/Links\n throw new Error('protobuf: (PBNode) duplicate Links section')\n } else if (!links) {\n links = []\n }\n let byts\n ;[byts, index] = decodeBytes(bytes, index)\n links.push(decodeLink(byts))\n } else {\n throw new Error(`protobuf: (PBNode) invalid fieldNumber, expected 1 or 2, got ${fieldNum}`)\n }\n }\n\n /* c8 ignore next 3 */\n if (index > l) {\n throw new Error('protobuf: (PBNode) unexpected end of data')\n }\n\n /** @type {RawPBNode} */\n const node = {}\n if (data) {\n node.Data = data\n }\n node.Links = links || []\n return node\n}\n","const textEncoder = new TextEncoder()\nconst maxInt32 = 2 ** 32\nconst maxUInt32 = 2 ** 31\n\n/**\n * @typedef {import('./interface.js').RawPBLink} RawPBLink\n */\n\n/**\n * @typedef {import('./interface.js').RawPBNode} RawPBNode\n */\n\n// the encoders work backward from the end of the bytes array\n\n/**\n * encodeLink() is passed a slice of the parent byte array that ends where this\n * link needs to end, so it packs to the right-most part of the passed `bytes`\n *\n * @param {RawPBLink} link\n * @param {Uint8Array} bytes\n * @returns {number}\n */\nfunction encodeLink (link, bytes) {\n let i = bytes.length\n\n if (typeof link.Tsize === 'number') {\n if (link.Tsize < 0) {\n throw new Error('Tsize cannot be negative')\n }\n if (!Number.isSafeInteger(link.Tsize)) {\n throw new Error('Tsize too large for encoding')\n }\n i = encodeVarint(bytes, i, link.Tsize) - 1\n bytes[i] = 0x18\n }\n\n if (typeof link.Name === 'string') {\n const nameBytes = textEncoder.encode(link.Name)\n i -= nameBytes.length\n bytes.set(nameBytes, i)\n i = encodeVarint(bytes, i, nameBytes.length) - 1\n bytes[i] = 0x12\n }\n\n if (link.Hash) {\n i -= link.Hash.length\n bytes.set(link.Hash, i)\n i = encodeVarint(bytes, i, link.Hash.length) - 1\n bytes[i] = 0xa\n }\n\n return bytes.length - i\n}\n\n/**\n * Encodes a PBNode into a new byte array of precisely the correct size\n *\n * @param {RawPBNode} node\n * @returns {Uint8Array}\n */\nexport function encodeNode (node) {\n const size = sizeNode(node)\n const bytes = new Uint8Array(size)\n let i = size\n\n if (node.Data) {\n i -= node.Data.length\n bytes.set(node.Data, i)\n i = encodeVarint(bytes, i, node.Data.length) - 1\n bytes[i] = 0xa\n }\n\n if (node.Links) {\n for (let index = node.Links.length - 1; index >= 0; index--) {\n const size = encodeLink(node.Links[index], bytes.subarray(0, i))\n i -= size\n i = encodeVarint(bytes, i, size) - 1\n bytes[i] = 0x12\n }\n }\n\n return bytes\n}\n\n/**\n * work out exactly how many bytes this link takes up\n *\n * @param {RawPBLink} link\n * @returns\n */\nfunction sizeLink (link) {\n let n = 0\n\n if (link.Hash) {\n const l = link.Hash.length\n n += 1 + l + sov(l)\n }\n\n if (typeof link.Name === 'string') {\n const l = textEncoder.encode(link.Name).length\n n += 1 + l + sov(l)\n }\n\n if (typeof link.Tsize === 'number') {\n n += 1 + sov(link.Tsize)\n }\n\n return n\n}\n\n/**\n * Work out exactly how many bytes this node takes up\n *\n * @param {RawPBNode} node\n * @returns {number}\n */\nfunction sizeNode (node) {\n let n = 0\n\n if (node.Data) {\n const l = node.Data.length\n n += 1 + l + sov(l)\n }\n\n if (node.Links) {\n for (const link of node.Links) {\n const l = sizeLink(link)\n n += 1 + l + sov(l)\n }\n }\n\n return n\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} offset\n * @param {number} v\n * @returns {number}\n */\nfunction encodeVarint (bytes, offset, v) {\n offset -= sov(v)\n const base = offset\n\n while (v >= maxUInt32) {\n bytes[offset++] = (v & 0x7f) | 0x80\n v /= 128\n }\n\n while (v >= 128) {\n bytes[offset++] = (v & 0x7f) | 0x80\n v >>>= 7\n }\n\n bytes[offset] = v\n\n return base\n}\n\n/**\n * size of varint\n *\n * @param {number} x\n * @returns {number}\n */\nfunction sov (x) {\n if (x % 2 === 0) {\n x++\n }\n return Math.floor((len64(x) + 6) / 7)\n}\n\n/**\n * golang math/bits, how many bits does it take to represent this integer?\n *\n * @param {number} x\n * @returns {number}\n */\nfunction len64 (x) {\n let n = 0\n if (x >= maxInt32) {\n x = Math.floor(x / maxInt32)\n n = 32\n }\n if (x >= (1 << 16)) {\n x >>>= 16\n n += 16\n }\n if (x >= (1 << 8)) {\n x >>>= 8\n n += 8\n }\n return n + len8tab[x]\n}\n\n// golang math/bits\nconst len8tab = [\n 0, 1, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,\n 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,\n 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,\n 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,\n 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8\n]\n","import { CID } from 'multiformats/cid'\n\n/**\n * @typedef {import('./interface.js').PBLink} PBLink\n * @typedef {import('./interface.js').PBNode} PBNode\n */\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView} ByteView\n */\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ArrayBufferView} ArrayBufferView\n */\n\nconst pbNodeProperties = ['Data', 'Links']\nconst pbLinkProperties = ['Hash', 'Name', 'Tsize']\n\nconst textEncoder = new TextEncoder()\n\n/**\n * @param {PBLink} a\n * @param {PBLink} b\n * @returns {number}\n */\nfunction linkComparator (a, b) {\n if (a === b) {\n return 0\n }\n\n const abuf = a.Name ? textEncoder.encode(a.Name) : []\n const bbuf = b.Name ? textEncoder.encode(b.Name) : []\n\n let x = abuf.length\n let y = bbuf.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (abuf[i] !== bbuf[i]) {\n x = abuf[i]\n y = bbuf[i]\n break\n }\n }\n\n return x < y ? -1 : y < x ? 1 : 0\n}\n\n/**\n * @param {any} node\n * @param {string[]} properties\n * @returns {boolean}\n */\nfunction hasOnlyProperties (node, properties) {\n return !Object.keys(node).some((p) => !properties.includes(p))\n}\n\n/**\n * Converts a CID, or a PBLink-like object to a PBLink\n *\n * @param {any} link\n * @returns {PBLink}\n */\nfunction asLink (link) {\n if (typeof link.asCID === 'object') {\n const Hash = CID.asCID(link)\n if (!Hash) {\n throw new TypeError('Invalid DAG-PB form')\n }\n return { Hash }\n }\n\n if (typeof link !== 'object' || Array.isArray(link)) {\n throw new TypeError('Invalid DAG-PB form')\n }\n\n const pbl = {}\n\n if (link.Hash) {\n let cid = CID.asCID(link.Hash)\n try {\n if (!cid) {\n if (typeof link.Hash === 'string') {\n cid = CID.parse(link.Hash)\n } else if (link.Hash instanceof Uint8Array) {\n cid = CID.decode(link.Hash)\n }\n }\n } catch (/** @type {any} */ e) {\n throw new TypeError(`Invalid DAG-PB form: ${e.message}`)\n }\n\n if (cid) {\n pbl.Hash = cid\n }\n }\n\n if (!pbl.Hash) {\n throw new TypeError('Invalid DAG-PB form')\n }\n\n if (typeof link.Name === 'string') {\n pbl.Name = link.Name\n }\n\n if (typeof link.Tsize === 'number') {\n pbl.Tsize = link.Tsize\n }\n\n return pbl\n}\n\n/**\n * @param {any} node\n * @returns {PBNode}\n */\nexport function prepare (node) {\n if (node instanceof Uint8Array || typeof node === 'string') {\n node = { Data: node }\n }\n\n if (typeof node !== 'object' || Array.isArray(node)) {\n throw new TypeError('Invalid DAG-PB form')\n }\n\n /** @type {PBNode} */\n const pbn = {}\n\n if (node.Data !== undefined) {\n if (typeof node.Data === 'string') {\n pbn.Data = textEncoder.encode(node.Data)\n } else if (node.Data instanceof Uint8Array) {\n pbn.Data = node.Data\n } else {\n throw new TypeError('Invalid DAG-PB form')\n }\n }\n\n if (node.Links !== undefined) {\n if (Array.isArray(node.Links)) {\n pbn.Links = node.Links.map(asLink)\n pbn.Links.sort(linkComparator)\n } else {\n throw new TypeError('Invalid DAG-PB form')\n }\n } else {\n pbn.Links = []\n }\n\n return pbn\n}\n\n/**\n * @param {PBNode} node\n */\nexport function validate (node) {\n /*\n type PBLink struct {\n Hash optional Link\n Name optional String\n Tsize optional Int\n }\n\n type PBNode struct {\n Links [PBLink]\n Data optional Bytes\n }\n */\n // @ts-ignore private property for TS\n if (!node || typeof node !== 'object' || Array.isArray(node) || node instanceof Uint8Array || (node['/'] && node['/'] === node.bytes)) {\n throw new TypeError('Invalid DAG-PB form')\n }\n\n if (!hasOnlyProperties(node, pbNodeProperties)) {\n throw new TypeError('Invalid DAG-PB form (extraneous properties)')\n }\n\n if (node.Data !== undefined && !(node.Data instanceof Uint8Array)) {\n throw new TypeError('Invalid DAG-PB form (Data must be bytes)')\n }\n\n if (!Array.isArray(node.Links)) {\n throw new TypeError('Invalid DAG-PB form (Links must be a list)')\n }\n\n for (let i = 0; i < node.Links.length; i++) {\n const link = node.Links[i]\n // @ts-ignore private property for TS\n if (!link || typeof link !== 'object' || Array.isArray(link) || link instanceof Uint8Array || (link['/'] && link['/'] === link.bytes)) {\n throw new TypeError('Invalid DAG-PB form (bad link)')\n }\n\n if (!hasOnlyProperties(link, pbLinkProperties)) {\n throw new TypeError('Invalid DAG-PB form (extraneous properties on link)')\n }\n\n if (link.Hash === undefined) {\n throw new TypeError('Invalid DAG-PB form (link must have a Hash)')\n }\n\n // @ts-ignore private property for TS\n if (link.Hash == null || !link.Hash['/'] || link.Hash['/'] !== link.Hash.bytes) {\n throw new TypeError('Invalid DAG-PB form (link Hash must be a CID)')\n }\n\n if (link.Name !== undefined && typeof link.Name !== 'string') {\n throw new TypeError('Invalid DAG-PB form (link Name must be a string)')\n }\n\n if (link.Tsize !== undefined) {\n if (typeof link.Tsize !== 'number' || link.Tsize % 1 !== 0) {\n throw new TypeError('Invalid DAG-PB form (link Tsize must be an integer)')\n }\n if (link.Tsize < 0) {\n throw new TypeError('Invalid DAG-PB form (link Tsize cannot be negative)')\n }\n }\n\n if (i > 0 && linkComparator(link, node.Links[i - 1]) === -1) {\n throw new TypeError('Invalid DAG-PB form (links must be sorted by Name bytes)')\n }\n }\n}\n\n/**\n * @param {Uint8Array} data\n * @param {PBLink[]} [links=[]]\n * @returns {PBNode}\n */\nexport function createNode (data, links = []) {\n return prepare({ Data: data, Links: links })\n}\n\n/**\n * @param {string} name\n * @param {number} size\n * @param {CID} cid\n * @returns {PBLink}\n */\nexport function createLink (name, size, cid) {\n return asLink({ Hash: cid, Name: name, Tsize: size })\n}\n\n/**\n * @template T\n * @param {ByteView | ArrayBufferView} buf\n * @returns {ByteView}\n */\nexport function toByteView (buf) {\n if (buf instanceof ArrayBuffer) {\n return new Uint8Array(buf, 0, buf.byteLength)\n }\n\n return buf\n}\n","import { CID } from 'multiformats/cid'\nimport { decodeNode } from './pb-decode.js'\nimport { encodeNode } from './pb-encode.js'\nimport { prepare, validate, createNode, createLink, toByteView } from './util.js'\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ByteView} ByteView\n */\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ArrayBufferView} ArrayBufferView\n */\n\n/**\n * @typedef {import('./interface.js').PBLink} PBLink\n * @typedef {import('./interface.js').PBNode} PBNode\n */\n\nexport const name = 'dag-pb'\nexport const code = 0x70\n\n/**\n * @param {PBNode} node\n * @returns {ByteView}\n */\nexport function encode (node) {\n validate(node)\n\n const pbn = {}\n if (node.Links) {\n pbn.Links = node.Links.map((l) => {\n const link = {}\n if (l.Hash) {\n link.Hash = l.Hash.bytes // cid -> bytes\n }\n if (l.Name !== undefined) {\n link.Name = l.Name\n }\n if (l.Tsize !== undefined) {\n link.Tsize = l.Tsize\n }\n return link\n })\n }\n if (node.Data) {\n pbn.Data = node.Data\n }\n\n return encodeNode(pbn)\n}\n\n/**\n * @param {ByteView | ArrayBufferView} bytes\n * @returns {PBNode}\n */\nexport function decode (bytes) {\n const buf = toByteView(bytes)\n const pbn = decodeNode(buf)\n\n const node = {}\n\n if (pbn.Data) {\n node.Data = pbn.Data\n }\n\n if (pbn.Links) {\n node.Links = pbn.Links.map((l) => {\n const link = {}\n try {\n link.Hash = CID.decode(l.Hash)\n } catch (e) {}\n if (!link.Hash) {\n throw new Error('Invalid Hash field found in link, expected CID')\n }\n if (l.Name !== undefined) {\n link.Name = l.Name\n }\n if (l.Tsize !== undefined) {\n link.Tsize = l.Tsize\n }\n return link\n })\n }\n\n return node\n}\n\nexport { prepare, validate, createNode, createLink }\n","\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0,\r\n index = 2,\r\n pending = true;\r\n while (index < arguments.length)\r\n params[offset++] = arguments[index++];\r\n return new Promise(function executor(resolve, reject) {\r\n params[offset] = function callback(err/*, varargs */) {\r\n if (pending) {\r\n pending = false;\r\n if (err)\r\n reject(err);\r\n else {\r\n var params = new Array(arguments.length - 1),\r\n offset = 0;\r\n while (offset < params.length)\r\n params[offset++] = arguments[offset];\r\n resolve.apply(null, params);\r\n }\r\n }\r\n };\r\n try {\r\n fn.apply(ctx || null, params);\r\n } catch (err) {\r\n if (pending) {\r\n pending = false;\r\n reject(err);\r\n }\r\n }\r\n });\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n var p = string.length;\r\n if (!p)\r\n return 0;\r\n var n = 0;\r\n while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n ++n;\r\n return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n var parts = null,\r\n chunk = [];\r\n var i = 0, // output index\r\n j = 0, // goto index\r\n t; // temporary\r\n while (start < end) {\r\n var b = buffer[start++];\r\n switch (j) {\r\n case 0:\r\n chunk[i++] = b64[b >> 2];\r\n t = (b & 3) << 4;\r\n j = 1;\r\n break;\r\n case 1:\r\n chunk[i++] = b64[t | b >> 4];\r\n t = (b & 15) << 2;\r\n j = 2;\r\n break;\r\n case 2:\r\n chunk[i++] = b64[t | b >> 6];\r\n chunk[i++] = b64[b & 63];\r\n j = 0;\r\n break;\r\n }\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (j) {\r\n chunk[i++] = b64[t];\r\n chunk[i++] = 61;\r\n if (j === 1)\r\n chunk[i++] = 61;\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n var start = offset;\r\n var j = 0, // goto index\r\n t; // temporary\r\n for (var i = 0; i < string.length;) {\r\n var c = string.charCodeAt(i++);\r\n if (c === 61 && j > 1)\r\n break;\r\n if ((c = s64[c]) === undefined)\r\n throw Error(invalidEncoding);\r\n switch (j) {\r\n case 0:\r\n t = c;\r\n j = 1;\r\n break;\r\n case 1:\r\n buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n t = c;\r\n j = 2;\r\n break;\r\n case 2:\r\n buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n t = c;\r\n j = 3;\r\n break;\r\n case 3:\r\n buffer[offset++] = (t & 3) << 6 | c;\r\n j = 0;\r\n break;\r\n }\r\n }\r\n if (j === 1)\r\n throw Error(invalidEncoding);\r\n return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n","\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n /**\r\n * Registered listeners.\r\n * @type {Object.}\r\n * @private\r\n */\r\n this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n fn : fn,\r\n ctx : ctx || this\r\n });\r\n return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n if (evt === undefined)\r\n this._listeners = {};\r\n else {\r\n if (fn === undefined)\r\n this._listeners[evt] = [];\r\n else {\r\n var listeners = this._listeners[evt];\r\n for (var i = 0; i < listeners.length;)\r\n if (listeners[i].fn === fn)\r\n listeners.splice(i, 1);\r\n else\r\n ++i;\r\n }\r\n }\r\n return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n var listeners = this._listeners[evt];\r\n if (listeners) {\r\n var args = [],\r\n i = 1;\r\n for (; i < arguments.length;)\r\n args.push(arguments[i++]);\r\n for (i = 0; i < listeners.length;)\r\n listeners[i].fn.apply(listeners[i++].ctx, args);\r\n }\r\n return this;\r\n};\r\n","\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n // float: typed array\r\n if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n var f32 = new Float32Array([ -0 ]),\r\n f8b = new Uint8Array(f32.buffer),\r\n le = f8b[3] === 128;\r\n\r\n function writeFloat_f32_cpy(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n }\r\n\r\n function writeFloat_f32_rev(val, buf, pos) {\r\n f32[0] = val;\r\n buf[pos ] = f8b[3];\r\n buf[pos + 1] = f8b[2];\r\n buf[pos + 2] = f8b[1];\r\n buf[pos + 3] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n function readFloat_f32_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n function readFloat_f32_rev(buf, pos) {\r\n f8b[3] = buf[pos ];\r\n f8b[2] = buf[pos + 1];\r\n f8b[1] = buf[pos + 2];\r\n f8b[0] = buf[pos + 3];\r\n return f32[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n /* istanbul ignore next */\r\n exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n // float: ieee754\r\n })(); else (function() {\r\n\r\n function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0)\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n else if (isNaN(val))\r\n writeUint(2143289344, buf, pos);\r\n else if (val > 3.4028234663852886e+38) // +-Infinity\r\n writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n else if (val < 1.1754943508222875e-38) // denormal\r\n writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n }\r\n }\r\n\r\n exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n function readFloat_ieee754(readUint, buf, pos) {\r\n var uint = readUint(buf, pos),\r\n sign = (uint >> 31) * 2 + 1,\r\n exponent = uint >>> 23 & 255,\r\n mantissa = uint & 8388607;\r\n return exponent === 255\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 1.401298464324817e-45 * mantissa\r\n : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n }\r\n\r\n exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n })();\r\n\r\n // double: typed array\r\n if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n var f64 = new Float64Array([-0]),\r\n f8b = new Uint8Array(f64.buffer),\r\n le = f8b[7] === 128;\r\n\r\n function writeDouble_f64_cpy(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[0];\r\n buf[pos + 1] = f8b[1];\r\n buf[pos + 2] = f8b[2];\r\n buf[pos + 3] = f8b[3];\r\n buf[pos + 4] = f8b[4];\r\n buf[pos + 5] = f8b[5];\r\n buf[pos + 6] = f8b[6];\r\n buf[pos + 7] = f8b[7];\r\n }\r\n\r\n function writeDouble_f64_rev(val, buf, pos) {\r\n f64[0] = val;\r\n buf[pos ] = f8b[7];\r\n buf[pos + 1] = f8b[6];\r\n buf[pos + 2] = f8b[5];\r\n buf[pos + 3] = f8b[4];\r\n buf[pos + 4] = f8b[3];\r\n buf[pos + 5] = f8b[2];\r\n buf[pos + 6] = f8b[1];\r\n buf[pos + 7] = f8b[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n function readDouble_f64_cpy(buf, pos) {\r\n f8b[0] = buf[pos ];\r\n f8b[1] = buf[pos + 1];\r\n f8b[2] = buf[pos + 2];\r\n f8b[3] = buf[pos + 3];\r\n f8b[4] = buf[pos + 4];\r\n f8b[5] = buf[pos + 5];\r\n f8b[6] = buf[pos + 6];\r\n f8b[7] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n function readDouble_f64_rev(buf, pos) {\r\n f8b[7] = buf[pos ];\r\n f8b[6] = buf[pos + 1];\r\n f8b[5] = buf[pos + 2];\r\n f8b[4] = buf[pos + 3];\r\n f8b[3] = buf[pos + 4];\r\n f8b[2] = buf[pos + 5];\r\n f8b[1] = buf[pos + 6];\r\n f8b[0] = buf[pos + 7];\r\n return f64[0];\r\n }\r\n\r\n /* istanbul ignore next */\r\n exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n /* istanbul ignore next */\r\n exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n // double: ieee754\r\n })(); else (function() {\r\n\r\n function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n var sign = val < 0 ? 1 : 0;\r\n if (sign)\r\n val = -val;\r\n if (val === 0) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n } else if (isNaN(val)) {\r\n writeUint(0, buf, pos + off0);\r\n writeUint(2146959360, buf, pos + off1);\r\n } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n writeUint(0, buf, pos + off0);\r\n writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n } else {\r\n var mantissa;\r\n if (val < 2.2250738585072014e-308) { // denormal\r\n mantissa = val / 5e-324;\r\n writeUint(mantissa >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n } else {\r\n var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n if (exponent === 1024)\r\n exponent = 1023;\r\n mantissa = val * Math.pow(2, -exponent);\r\n writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n }\r\n }\r\n }\r\n\r\n exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n var lo = readUint(buf, pos + off0),\r\n hi = readUint(buf, pos + off1);\r\n var sign = (hi >> 31) * 2 + 1,\r\n exponent = hi >>> 20 & 2047,\r\n mantissa = 4294967296 * (hi & 1048575) + lo;\r\n return exponent === 2047\r\n ? mantissa\r\n ? NaN\r\n : sign * Infinity\r\n : exponent === 0 // denormal\r\n ? sign * 5e-324 * mantissa\r\n : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n }\r\n\r\n exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n })();\r\n\r\n return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n buf[pos ] = val & 255;\r\n buf[pos + 1] = val >>> 8 & 255;\r\n buf[pos + 2] = val >>> 16 & 255;\r\n buf[pos + 3] = val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n buf[pos ] = val >>> 24;\r\n buf[pos + 1] = val >>> 16 & 255;\r\n buf[pos + 2] = val >>> 8 & 255;\r\n buf[pos + 3] = val & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n return (buf[pos ]\r\n | buf[pos + 1] << 8\r\n | buf[pos + 2] << 16\r\n | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n return (buf[pos ] << 24\r\n | buf[pos + 1] << 16\r\n | buf[pos + 2] << 8\r\n | buf[pos + 3]) >>> 0;\r\n}\r\n","\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n try {\r\n var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n if (mod && (mod.length || Object.keys(mod).length))\r\n return mod;\r\n } catch (e) {} // eslint-disable-line no-empty\r\n return null;\r\n}\r\n","\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n var len = 0,\r\n c = 0;\r\n for (var i = 0; i < string.length; ++i) {\r\n c = string.charCodeAt(i);\r\n if (c < 128)\r\n len += 1;\r\n else if (c < 2048)\r\n len += 2;\r\n else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n ++i;\r\n len += 4;\r\n } else\r\n len += 3;\r\n }\r\n return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n var len = end - start;\r\n if (len < 1)\r\n return \"\";\r\n var parts = null,\r\n chunk = [],\r\n i = 0, // char offset\r\n t; // temporary\r\n while (start < end) {\r\n t = buffer[start++];\r\n if (t < 128)\r\n chunk[i++] = t;\r\n else if (t > 191 && t < 224)\r\n chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n else if (t > 239 && t < 365) {\r\n t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n chunk[i++] = 0xD800 + (t >> 10);\r\n chunk[i++] = 0xDC00 + (t & 1023);\r\n } else\r\n chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n if (i > 8191) {\r\n (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n i = 0;\r\n }\r\n }\r\n if (parts) {\r\n if (i)\r\n parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n return parts.join(\"\");\r\n }\r\n return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n var start = offset,\r\n c1, // character 1\r\n c2; // character 2\r\n for (var i = 0; i < string.length; ++i) {\r\n c1 = string.charCodeAt(i);\r\n if (c1 < 128) {\r\n buffer[offset++] = c1;\r\n } else if (c1 < 2048) {\r\n buffer[offset++] = c1 >> 6 | 192;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n ++i;\r\n buffer[offset++] = c1 >> 18 | 240;\r\n buffer[offset++] = c1 >> 12 & 63 | 128;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n } else {\r\n buffer[offset++] = c1 >> 12 | 224;\r\n buffer[offset++] = c1 >> 6 & 63 | 128;\r\n buffer[offset++] = c1 & 63 | 128;\r\n }\r\n }\r\n return offset - start;\r\n};\r\n","\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n var SIZE = size || 8192;\r\n var MAX = SIZE >>> 1;\r\n var slab = null;\r\n var offset = SIZE;\r\n return function pool_alloc(size) {\r\n if (size < 1 || size > MAX)\r\n return alloc(size);\r\n if (offset + size > SIZE) {\r\n slab = alloc(SIZE);\r\n offset = 0;\r\n }\r\n var buf = slice.call(slab, offset, offset += size);\r\n if (offset & 7) // align to 32 bit\r\n offset = (offset | 7) + 1;\r\n return buf;\r\n };\r\n}\r\n","\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n // note that the casts below are theoretically unnecessary as of today, but older statically\n // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n /**\n * Low bits.\n * @type {number}\n */\n this.lo = lo >>> 0;\n\n /**\n * High bits.\n * @type {number}\n */\n this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n if (value === 0)\n return zero;\n var sign = value < 0;\n if (sign)\n value = -value;\n var lo = value >>> 0,\n hi = (value - lo) / 4294967296 >>> 0;\n if (sign) {\n hi = ~hi >>> 0;\n lo = ~lo >>> 0;\n if (++lo > 4294967295) {\n lo = 0;\n if (++hi > 4294967295)\n hi = 0;\n }\n }\n return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {Long|number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n if (typeof value === \"number\")\n return LongBits.fromNumber(value);\n if (util.isString(value)) {\n /* istanbul ignore else */\n if (util.Long)\n value = util.Long.fromString(value);\n else\n return LongBits.fromNumber(parseInt(value, 10));\n }\n return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n if (!unsigned && this.hi >>> 31) {\n var lo = ~this.lo + 1 >>> 0,\n hi = ~this.hi >>> 0;\n if (!lo)\n hi = hi + 1 >>> 0;\n return -(lo + hi * 4294967296);\n }\n return this.lo + this.hi * 4294967296;\n};\n\n/**\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n return util.Long\n ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n /* istanbul ignore next */\n : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n if (hash === zeroHash)\n return zero;\n return new LongBits(\n ( charCodeAt.call(hash, 0)\n | charCodeAt.call(hash, 1) << 8\n | charCodeAt.call(hash, 2) << 16\n | charCodeAt.call(hash, 3) << 24) >>> 0\n ,\n ( charCodeAt.call(hash, 4)\n | charCodeAt.call(hash, 5) << 8\n | charCodeAt.call(hash, 6) << 16\n | charCodeAt.call(hash, 7) << 24) >>> 0\n );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n return String.fromCharCode(\n this.lo & 255,\n this.lo >>> 8 & 255,\n this.lo >>> 16 & 255,\n this.lo >>> 24 ,\n this.hi & 255,\n this.hi >>> 8 & 255,\n this.hi >>> 16 & 255,\n this.hi >>> 24\n );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n var mask = this.hi >> 31;\n this.hi = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n this.lo = ( this.lo << 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n var mask = -(this.lo & 1);\n this.lo = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n this.hi = ( this.hi >>> 1 ^ mask) >>> 0;\n return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n var part0 = this.lo,\n part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n part2 = this.hi >>> 24;\n return part2 === 0\n ? part1 === 0\n ? part0 < 16384\n ? part0 < 128 ? 1 : 2\n : part0 < 2097152 ? 3 : 4\n : part1 < 16384\n ? part1 < 128 ? 5 : 6\n : part1 < 2097152 ? 7 : 8\n : part2 < 128 ? 9 : 10;\n};\n","\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n */\nutil.isNode = Boolean(typeof global !== \"undefined\"\n && global\n && global.process\n && global.process.versions\n && global.process.versions.node);\n\n/**\n * Global object reference.\n * @memberof util\n * @type {Object}\n */\nutil.global = util.isNode && global\n || typeof window !== \"undefined\" && window\n || typeof self !== \"undefined\" && self\n || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n var value = obj[prop];\n if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor}\n */\nutil.Buffer = (function() {\n try {\n var Buffer = util.inquire(\"buffer\").Buffer;\n // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n } catch (e) {\n /* istanbul ignore next */\n return null;\n }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n /* istanbul ignore next */\n return typeof sizeOrArray === \"number\"\n ? util.Buffer\n ? util._Buffer_allocUnsafe(sizeOrArray)\n : new util.Array(sizeOrArray)\n : util.Buffer\n ? util._Buffer_from(sizeOrArray)\n : typeof Uint8Array === \"undefined\"\n ? sizeOrArray\n : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/**\n * Any compatible Long instance.\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\n * @interface Long\n * @property {number} low Low bits\n * @property {number} high High bits\n * @property {boolean} unsigned Whether unsigned or not\n */\n\n/**\n * Long.js's Long class if available.\n * @type {Constructor}\n */\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n || /* istanbul ignore next */ util.global.Long\n || util.inquire(\"long\");\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/**\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n return value\n ? util.LongBits.from(value).toHash()\n : util.LongBits.zeroHash;\n};\n\n/**\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n var bits = util.LongBits.fromHash(hash);\n if (util.Long)\n return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.} dst Destination object\n * @param {Object.} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n if (dst[keys[i]] === undefined || !ifNotSet)\n dst[keys[i]] = src[keys[i]];\n return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor} Custom error constructor\n */\nfunction newError(name) {\n\n function CustomError(message, properties) {\n\n if (!(this instanceof CustomError))\n return new CustomError(message, properties);\n\n // Error.call(this, message);\n // ^ just returns a new error instance because the ctor can be called as a function\n\n Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n /* istanbul ignore next */\n if (Error.captureStackTrace) // node\n Error.captureStackTrace(this, CustomError);\n else\n Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\n\n if (properties)\n merge(this, properties);\n }\n\n CustomError.prototype = Object.create(Error.prototype, {\n constructor: {\n value: CustomError,\n writable: true,\n enumerable: false,\n configurable: true,\n },\n name: {\n get: function get() { return name; },\n set: undefined,\n enumerable: false,\n // configurable: false would accurately preserve the behavior of\n // the original, but I'm guessing that was not intentional.\n // For an actual error subclass, this property would\n // be configurable.\n configurable: true,\n },\n toString: {\n value: function value() { return this.name + \": \" + this.message; },\n writable: true,\n enumerable: false,\n configurable: true,\n },\n });\n\n return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message\n * @constructor\n * @param {string} message Error message\n * @param {Object.} [properties] Additional properties\n * @example\n * try {\n * MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n * if (e instanceof ProtocolError && e.instance)\n * console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n var fieldMap = {};\n for (var i = 0; i < fieldNames.length; ++i)\n fieldMap[fieldNames[i]] = 1;\n\n /**\n * @returns {string|undefined} Set field name, if any\n * @this Object\n * @ignore\n */\n return function() { // eslint-disable-line consistent-return\n for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n return keys[i];\n };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n /**\n * @param {string} name Field name\n * @returns {undefined}\n * @this Object\n * @ignore\n */\n return function(name) {\n for (var i = 0; i < fieldNames.length; ++i)\n if (fieldNames[i] !== name)\n delete this[fieldNames[i]];\n };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n longs: String,\n enums: String,\n bytes: String,\n json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n var Buffer = util.Buffer;\n /* istanbul ignore if */\n if (!Buffer) {\n util._Buffer_from = util._Buffer_allocUnsafe = null;\n return;\n }\n // because node 4.x buffers are incompatible & immutable\n // see: https://github.com/dcodeIO/protobuf.js/pull/665\n util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n /* istanbul ignore next */\n function Buffer_from(value, encoding) {\n return new Buffer(value, encoding);\n };\n util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n /* istanbul ignore next */\n function Buffer_allocUnsafe(size) {\n return new Buffer(size);\n };\n};\n","\"use strict\";\nmodule.exports = Writer;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits = util.LongBits,\n base64 = util.base64,\n utf8 = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n /**\n * Function to call.\n * @type {function(Uint8Array, number, *)}\n */\n this.fn = fn;\n\n /**\n * Value byte length.\n * @type {number}\n */\n this.len = len;\n\n /**\n * Next operation.\n * @type {Writer.Op|undefined}\n */\n this.next = undefined;\n\n /**\n * Value to write.\n * @type {*}\n */\n this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n /**\n * Current head.\n * @type {Writer.Op}\n */\n this.head = writer.head;\n\n /**\n * Current tail.\n * @type {Writer.Op}\n */\n this.tail = writer.tail;\n\n /**\n * Current buffer length.\n * @type {number}\n */\n this.len = writer.len;\n\n /**\n * Next state.\n * @type {State|null}\n */\n this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n /**\n * Current length.\n * @type {number}\n */\n this.len = 0;\n\n /**\n * Operations head.\n * @type {Object}\n */\n this.head = new Op(noop, 0, 0);\n\n /**\n * Operations tail\n * @type {Object}\n */\n this.tail = this.head;\n\n /**\n * Linked forked states.\n * @type {Object|null}\n */\n this.states = null;\n\n // When a value is written, the writer calculates its byte length and puts it into a linked\n // list of operations to perform when finish() is called. This both allows us to allocate\n // buffers of the exact required size and reduces the amount of work we have to do compared\n // to first calculating over objects and then encoding over objects. In our case, the encoding\n // part is just a linked list walk calling operations with already prepared values.\n}\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup() {\n return (Writer.create = function create_buffer() {\n return new BufferWriter();\n })();\n }\n /* istanbul ignore next */\n : function create_array() {\n return new Writer();\n };\n};\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = create();\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n this.tail = this.tail.next = new Op(fn, len, val);\n this.len += len;\n return this;\n};\n\nfunction writeByte(val, buf, pos) {\n buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n while (val > 127) {\n buf[pos++] = val & 127 | 128;\n val >>>= 7;\n }\n buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n this.len = len;\n this.next = undefined;\n this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n // uint32 is by far the most frequently used operation and benefits significantly from this.\n this.len += (this.tail = this.tail.next = new VarintOp(\n (value = value >>> 0)\n < 128 ? 1\n : value < 16384 ? 2\n : value < 2097152 ? 3\n : value < 268435456 ? 4\n : 5,\n value)).len;\n return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n return value < 0\n ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n while (val.hi) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n val.hi >>>= 7;\n }\n while (val.lo > 127) {\n buf[pos++] = val.lo & 127 | 128;\n val.lo = val.lo >>> 7;\n }\n buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n var bits = LongBits.from(value);\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n var bits = LongBits.from(value).zzEncode();\n return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n buf[pos ] = val & 255;\n buf[pos + 1] = val >>> 8 & 255;\n buf[pos + 2] = val >>> 16 & 255;\n buf[pos + 3] = val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n var bits = LongBits.from(value);\n return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n ? function writeBytes_set(val, buf, pos) {\n buf.set(val, pos); // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytes_for(val, buf, pos) {\n for (var i = 0; i < val.length; ++i)\n buf[pos + i] = val[i];\n };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n var len = value.length >>> 0;\n if (!len)\n return this._push(writeByte, 1, 0);\n if (util.isString(value)) {\n var buf = Writer.alloc(len = base64.length(value));\n base64.decode(value, buf, 0);\n value = buf;\n }\n return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n var len = utf8.length(value);\n return len\n ? this.uint32(len)._push(utf8.write, len, value)\n : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n this.states = new State(this);\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n if (this.states) {\n this.head = this.states.head;\n this.tail = this.states.tail;\n this.len = this.states.len;\n this.states = this.states.next;\n } else {\n this.head = this.tail = new Op(noop, 0, 0);\n this.len = 0;\n }\n return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n var head = this.head,\n tail = this.tail,\n len = this.len;\n this.reset().uint32(len);\n if (len) {\n this.tail.next = head.next; // skip noop\n this.tail = tail;\n this.len += len;\n }\n return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n var head = this.head.next, // skip noop\n buf = this.constructor.alloc(this.len),\n pos = 0;\n while (head) {\n head.fn(head.val, buf, pos);\n pos += head.len;\n head = head.next;\n }\n // this.head = this.tail = null;\n return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n BufferWriter = BufferWriter_;\n Writer.create = create();\n BufferWriter._configure();\n};\n","\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n Writer.call(this);\n}\n\nBufferWriter._configure = function () {\n /**\n * Allocates a buffer of the specified size.\n * @function\n * @param {number} size Buffer size\n * @returns {Buffer} Buffer\n */\n BufferWriter.alloc = util._Buffer_allocUnsafe;\n\n BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\n ? function writeBytesBuffer_set(val, buf, pos) {\n buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n // also works for plain array values\n }\n /* istanbul ignore next */\n : function writeBytesBuffer_copy(val, buf, pos) {\n if (val.copy) // Buffer values\n val.copy(buf, pos, 0, val.length);\n else for (var i = 0; i < val.length;) // plain array values\n buf[pos++] = val[i++];\n };\n};\n\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n if (util.isString(value))\n value = util._Buffer_from(value, \"base64\");\n var len = value.length >>> 0;\n this.uint32(len);\n if (len)\n this._push(BufferWriter.writeBytesBuffer, len, value);\n return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n util.utf8.write(val, buf, pos);\n else if (buf.utf8Write)\n buf.utf8Write(val, pos);\n else\n buf.write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n var len = util.Buffer.byteLength(value);\n this.uint32(len);\n if (len)\n this._push(writeStringBuffer, len, value);\n return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n\nBufferWriter._configure();\n","\"use strict\";\nmodule.exports = Reader;\n\nvar util = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits = util.LongBits,\n utf8 = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n /**\n * Read buffer.\n * @type {Uint8Array}\n */\n this.buf = buffer;\n\n /**\n * Read buffer position.\n * @type {number}\n */\n this.pos = 0;\n\n /**\n * Read buffer length.\n * @type {number}\n */\n this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n ? function create_typed_array(buffer) {\n if (buffer instanceof Uint8Array || Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n }\n /* istanbul ignore next */\n : function create_array(buffer) {\n if (Array.isArray(buffer))\n return new Reader(buffer);\n throw Error(\"illegal buffer\");\n };\n\nvar create = function create() {\n return util.Buffer\n ? function create_buffer_setup(buffer) {\n return (Reader.create = function create_buffer(buffer) {\n return util.Buffer.isBuffer(buffer)\n ? new BufferReader(buffer)\n /* istanbul ignore next */\n : create_array(buffer);\n })(buffer);\n }\n /* istanbul ignore next */\n : create_array;\n};\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = create();\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n return function read_uint32() {\n value = ( this.buf[this.pos] & 127 ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n value = (value | (this.buf[this.pos] & 15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n /* istanbul ignore if */\n if ((this.pos += 5) > this.len) {\n this.pos = this.len;\n throw indexOutOfRange(this, 10);\n }\n return value;\n };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n var value = this.uint32();\n return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n // tends to deopt with local vars for octet etc.\n var bits = new LongBits(0, 0);\n var i = 0;\n if (this.len - this.pos > 4) { // fast route (lo)\n for (; i < 4; ++i) {\n // 1st..4th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 5th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) >> 4) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n i = 0;\n } else {\n for (; i < 3; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 1st..3th\n bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n // 4th\n bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n return bits;\n }\n if (this.len - this.pos > 4) { // fast route (hi)\n for (; i < 5; ++i) {\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n } else {\n for (; i < 5; ++i) {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n // 6th..10th\n bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n if (this.buf[this.pos++] < 128)\n return bits;\n }\n }\n /* istanbul ignore next */\n throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n return (buf[end - 4]\n | buf[end - 3] << 8\n | buf[end - 2] << 16\n | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 8);\n\n return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n /* istanbul ignore if */\n if (this.pos + 4 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readFloatLE(this.buf, this.pos);\n this.pos += 4;\n return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n /* istanbul ignore if */\n if (this.pos + 8 > this.len)\n throw indexOutOfRange(this, 4);\n\n var value = util.float.readDoubleLE(this.buf, this.pos);\n this.pos += 8;\n return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n var length = this.uint32(),\n start = this.pos,\n end = this.pos + length;\n\n /* istanbul ignore if */\n if (end > this.len)\n throw indexOutOfRange(this, length);\n\n this.pos += length;\n if (Array.isArray(this.buf)) // plain array\n return this.buf.slice(start, end);\n\n if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1\n var nativeBuffer = util.Buffer;\n return nativeBuffer\n ? nativeBuffer.alloc(0)\n : new this.buf.constructor(0);\n }\n return this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n var bytes = this.bytes();\n return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n if (typeof length === \"number\") {\n /* istanbul ignore if */\n if (this.pos + length > this.len)\n throw indexOutOfRange(this, length);\n this.pos += length;\n } else {\n do {\n /* istanbul ignore if */\n if (this.pos >= this.len)\n throw indexOutOfRange(this);\n } while (this.buf[this.pos++] & 128);\n }\n return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n switch (wireType) {\n case 0:\n this.skip();\n break;\n case 1:\n this.skip(8);\n break;\n case 2:\n this.skip(this.uint32());\n break;\n case 3:\n while ((wireType = this.uint32() & 7) !== 4) {\n this.skipType(wireType);\n }\n break;\n case 5:\n this.skip(4);\n break;\n\n /* istanbul ignore next */\n default:\n throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n }\n return this;\n};\n\nReader._configure = function(BufferReader_) {\n BufferReader = BufferReader_;\n Reader.create = create();\n BufferReader._configure();\n\n var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n util.merge(Reader.prototype, {\n\n int64: function read_int64() {\n return readLongVarint.call(this)[fn](false);\n },\n\n uint64: function read_uint64() {\n return readLongVarint.call(this)[fn](true);\n },\n\n sint64: function read_sint64() {\n return readLongVarint.call(this).zzDecode()[fn](false);\n },\n\n fixed64: function read_fixed64() {\n return readFixed64.call(this)[fn](true);\n },\n\n sfixed64: function read_sfixed64() {\n return readFixed64.call(this)[fn](false);\n }\n\n });\n};\n","\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n Reader.call(this, buffer);\n\n /**\n * Read buffer.\n * @name BufferReader#buf\n * @type {Buffer}\n */\n}\n\nBufferReader._configure = function () {\n /* istanbul ignore else */\n if (util.Buffer)\n BufferReader.prototype._slice = util.Buffer.prototype.slice;\n};\n\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n var len = this.uint32(); // modifies pos\n return this.buf.utf8Slice\n ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\n : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n\nBufferReader._configure();\n","\"use strict\";\nmodule.exports = Service;\n\nvar util = require(\"../util/minimal\");\n\n// Extends EventEmitter\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\n\n/**\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\n *\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\n * @typedef rpc.ServiceMethodCallback\n * @template TRes extends Message\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {TRes} [response] Response message\n * @returns {undefined}\n */\n\n/**\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\n * @typedef rpc.ServiceMethod\n * @template TReq extends Message\n * @template TRes extends Message\n * @type {function}\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} [callback] Node-style callback called with the error, if any, and the response message\n * @returns {Promise>} Promise if `callback` has been omitted, otherwise `undefined`\n */\n\n/**\n * Constructs a new RPC service instance.\n * @classdesc An RPC service as returned by {@link Service#create}.\n * @exports rpc.Service\n * @extends util.EventEmitter\n * @constructor\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\n\n if (typeof rpcImpl !== \"function\")\n throw TypeError(\"rpcImpl must be a function\");\n\n util.EventEmitter.call(this);\n\n /**\n * RPC implementation. Becomes `null` once the service is ended.\n * @type {RPCImpl|null}\n */\n this.rpcImpl = rpcImpl;\n\n /**\n * Whether requests are length-delimited.\n * @type {boolean}\n */\n this.requestDelimited = Boolean(requestDelimited);\n\n /**\n * Whether responses are length-delimited.\n * @type {boolean}\n */\n this.responseDelimited = Boolean(responseDelimited);\n}\n\n/**\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\n * @param {Method|rpc.ServiceMethod} method Reflected or static method\n * @param {Constructor} requestCtor Request constructor\n * @param {Constructor} responseCtor Response constructor\n * @param {TReq|Properties} request Request message or plain object\n * @param {rpc.ServiceMethodCallback} callback Service callback\n * @returns {undefined}\n * @template TReq extends Message\n * @template TRes extends Message\n */\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\n\n if (!request)\n throw TypeError(\"request must be specified\");\n\n var self = this;\n if (!callback)\n return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\n\n if (!self.rpcImpl) {\n setTimeout(function() { callback(Error(\"already ended\")); }, 0);\n return undefined;\n }\n\n try {\n return self.rpcImpl(\n method,\n requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\n function rpcCallback(err, response) {\n\n if (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n\n if (response === null) {\n self.end(/* endedByRPC */ true);\n return undefined;\n }\n\n if (!(response instanceof responseCtor)) {\n try {\n response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\n } catch (err) {\n self.emit(\"error\", err, method);\n return callback(err);\n }\n }\n\n self.emit(\"data\", response, method);\n return callback(null, response);\n }\n );\n } catch (err) {\n self.emit(\"error\", err, method);\n setTimeout(function() { callback(err); }, 0);\n return undefined;\n }\n};\n\n/**\n * Ends this service and emits the `end` event.\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\n * @returns {rpc.Service} `this`\n */\nService.prototype.end = function end(endedByRPC) {\n if (this.rpcImpl) {\n if (!endedByRPC) // signal end to rpcImpl\n this.rpcImpl(null, null, null);\n this.rpcImpl = null;\n this.emit(\"end\").off();\n }\n return this;\n};\n","\"use strict\";\n\n/**\n * Streaming RPC helpers.\n * @namespace\n */\nvar rpc = exports;\n\n/**\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\n * @typedef RPCImpl\n * @type {function}\n * @param {Method|rpc.ServiceMethod,Message<{}>>} method Reflected or static method being called\n * @param {Uint8Array} requestData Request data\n * @param {RPCImplCallback} callback Callback function\n * @returns {undefined}\n * @example\n * function rpcImpl(method, requestData, callback) {\n * if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\n * throw Error(\"no such method\");\n * asynchronouslyObtainAResponse(requestData, function(err, responseData) {\n * callback(err, responseData);\n * });\n * }\n */\n\n/**\n * Node-style callback as used by {@link RPCImpl}.\n * @typedef RPCImplCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\n * @returns {undefined}\n */\n\nrpc.Service = require(\"./rpc/service\");\n","\"use strict\";\nmodule.exports = {};\n\n/**\n * Named roots.\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\n * Can also be used manually to make roots available across modules.\n * @name roots\n * @type {Object.}\n * @example\n * // pbjs -r myroot -o compiled.js ...\n *\n * // in another module:\n * require(\"./compiled.js\");\n *\n * // in any subsequent module:\n * var root = protobuf.roots[\"myroot\"];\n */\n","\"use strict\";\nvar protobuf = exports;\n\n/**\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\n * @name build\n * @type {string}\n * @const\n */\nprotobuf.build = \"minimal\";\n\n// Serialization\nprotobuf.Writer = require(\"./writer\");\nprotobuf.BufferWriter = require(\"./writer_buffer\");\nprotobuf.Reader = require(\"./reader\");\nprotobuf.BufferReader = require(\"./reader_buffer\");\n\n// Utility\nprotobuf.util = require(\"./util/minimal\");\nprotobuf.rpc = require(\"./rpc\");\nprotobuf.roots = require(\"./roots\");\nprotobuf.configure = configure;\n\n/* istanbul ignore next */\n/**\n * Reconfigures the library according to the environment.\n * @returns {undefined}\n */\nfunction configure() {\n protobuf.util._configure();\n protobuf.Writer._configure(protobuf.BufferWriter);\n protobuf.Reader._configure(protobuf.BufferReader);\n}\n\n// Set up buffer utility according to the environment\nconfigure();\n","// minimal library entry point.\n\n\"use strict\";\nmodule.exports = require(\"./src/index-minimal\");\n","/*eslint-disable*/\nimport $protobuf from \"protobufjs/minimal.js\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots.unixfs || ($protobuf.roots.unixfs = {});\n\nexport const Data = $root.Data = (() => {\n\n /**\n * Properties of a Data.\n * @exports IData\n * @interface IData\n * @property {Data.DataType} Type Data Type\n * @property {Uint8Array|null} [Data] Data Data\n * @property {number|null} [filesize] Data filesize\n * @property {Array.|null} [blocksizes] Data blocksizes\n * @property {number|null} [hashType] Data hashType\n * @property {number|null} [fanout] Data fanout\n * @property {number|null} [mode] Data mode\n * @property {IUnixTime|null} [mtime] Data mtime\n */\n\n /**\n * Constructs a new Data.\n * @exports Data\n * @classdesc Represents a Data.\n * @implements IData\n * @constructor\n * @param {IData=} [p] Properties to set\n */\n function Data(p) {\n this.blocksizes = [];\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * Data Type.\n * @member {Data.DataType} Type\n * @memberof Data\n * @instance\n */\n Data.prototype.Type = 0;\n\n /**\n * Data Data.\n * @member {Uint8Array} Data\n * @memberof Data\n * @instance\n */\n Data.prototype.Data = $util.newBuffer([]);\n\n /**\n * Data filesize.\n * @member {number} filesize\n * @memberof Data\n * @instance\n */\n Data.prototype.filesize = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Data blocksizes.\n * @member {Array.} blocksizes\n * @memberof Data\n * @instance\n */\n Data.prototype.blocksizes = $util.emptyArray;\n\n /**\n * Data hashType.\n * @member {number} hashType\n * @memberof Data\n * @instance\n */\n Data.prototype.hashType = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Data fanout.\n * @member {number} fanout\n * @memberof Data\n * @instance\n */\n Data.prototype.fanout = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Data mode.\n * @member {number} mode\n * @memberof Data\n * @instance\n */\n Data.prototype.mode = 0;\n\n /**\n * Data mtime.\n * @member {IUnixTime|null|undefined} mtime\n * @memberof Data\n * @instance\n */\n Data.prototype.mtime = null;\n\n /**\n * Encodes the specified Data message. Does not implicitly {@link Data.verify|verify} messages.\n * @function encode\n * @memberof Data\n * @static\n * @param {IData} m Data message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Data.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n w.uint32(8).int32(m.Type);\n if (m.Data != null && Object.hasOwnProperty.call(m, \"Data\"))\n w.uint32(18).bytes(m.Data);\n if (m.filesize != null && Object.hasOwnProperty.call(m, \"filesize\"))\n w.uint32(24).uint64(m.filesize);\n if (m.blocksizes != null && m.blocksizes.length) {\n for (var i = 0; i < m.blocksizes.length; ++i)\n w.uint32(32).uint64(m.blocksizes[i]);\n }\n if (m.hashType != null && Object.hasOwnProperty.call(m, \"hashType\"))\n w.uint32(40).uint64(m.hashType);\n if (m.fanout != null && Object.hasOwnProperty.call(m, \"fanout\"))\n w.uint32(48).uint64(m.fanout);\n if (m.mode != null && Object.hasOwnProperty.call(m, \"mode\"))\n w.uint32(56).uint32(m.mode);\n if (m.mtime != null && Object.hasOwnProperty.call(m, \"mtime\"))\n $root.UnixTime.encode(m.mtime, w.uint32(66).fork()).ldelim();\n return w;\n };\n\n /**\n * Decodes a Data message from the specified reader or buffer.\n * @function decode\n * @memberof Data\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {Data} Data\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Data.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.Data();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.Type = r.int32();\n break;\n case 2:\n m.Data = r.bytes();\n break;\n case 3:\n m.filesize = r.uint64();\n break;\n case 4:\n if (!(m.blocksizes && m.blocksizes.length))\n m.blocksizes = [];\n if ((t & 7) === 2) {\n var c2 = r.uint32() + r.pos;\n while (r.pos < c2)\n m.blocksizes.push(r.uint64());\n } else\n m.blocksizes.push(r.uint64());\n break;\n case 5:\n m.hashType = r.uint64();\n break;\n case 6:\n m.fanout = r.uint64();\n break;\n case 7:\n m.mode = r.uint32();\n break;\n case 8:\n m.mtime = $root.UnixTime.decode(r, r.uint32());\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n if (!m.hasOwnProperty(\"Type\"))\n throw $util.ProtocolError(\"missing required 'Type'\", { instance: m });\n return m;\n };\n\n /**\n * Creates a Data message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof Data\n * @static\n * @param {Object.} d Plain object\n * @returns {Data} Data\n */\n Data.fromObject = function fromObject(d) {\n if (d instanceof $root.Data)\n return d;\n var m = new $root.Data();\n switch (d.Type) {\n case \"Raw\":\n case 0:\n m.Type = 0;\n break;\n case \"Directory\":\n case 1:\n m.Type = 1;\n break;\n case \"File\":\n case 2:\n m.Type = 2;\n break;\n case \"Metadata\":\n case 3:\n m.Type = 3;\n break;\n case \"Symlink\":\n case 4:\n m.Type = 4;\n break;\n case \"HAMTShard\":\n case 5:\n m.Type = 5;\n break;\n }\n if (d.Data != null) {\n if (typeof d.Data === \"string\")\n $util.base64.decode(d.Data, m.Data = $util.newBuffer($util.base64.length(d.Data)), 0);\n else if (d.Data.length)\n m.Data = d.Data;\n }\n if (d.filesize != null) {\n if ($util.Long)\n (m.filesize = $util.Long.fromValue(d.filesize)).unsigned = true;\n else if (typeof d.filesize === \"string\")\n m.filesize = parseInt(d.filesize, 10);\n else if (typeof d.filesize === \"number\")\n m.filesize = d.filesize;\n else if (typeof d.filesize === \"object\")\n m.filesize = new $util.LongBits(d.filesize.low >>> 0, d.filesize.high >>> 0).toNumber(true);\n }\n if (d.blocksizes) {\n if (!Array.isArray(d.blocksizes))\n throw TypeError(\".Data.blocksizes: array expected\");\n m.blocksizes = [];\n for (var i = 0; i < d.blocksizes.length; ++i) {\n if ($util.Long)\n (m.blocksizes[i] = $util.Long.fromValue(d.blocksizes[i])).unsigned = true;\n else if (typeof d.blocksizes[i] === \"string\")\n m.blocksizes[i] = parseInt(d.blocksizes[i], 10);\n else if (typeof d.blocksizes[i] === \"number\")\n m.blocksizes[i] = d.blocksizes[i];\n else if (typeof d.blocksizes[i] === \"object\")\n m.blocksizes[i] = new $util.LongBits(d.blocksizes[i].low >>> 0, d.blocksizes[i].high >>> 0).toNumber(true);\n }\n }\n if (d.hashType != null) {\n if ($util.Long)\n (m.hashType = $util.Long.fromValue(d.hashType)).unsigned = true;\n else if (typeof d.hashType === \"string\")\n m.hashType = parseInt(d.hashType, 10);\n else if (typeof d.hashType === \"number\")\n m.hashType = d.hashType;\n else if (typeof d.hashType === \"object\")\n m.hashType = new $util.LongBits(d.hashType.low >>> 0, d.hashType.high >>> 0).toNumber(true);\n }\n if (d.fanout != null) {\n if ($util.Long)\n (m.fanout = $util.Long.fromValue(d.fanout)).unsigned = true;\n else if (typeof d.fanout === \"string\")\n m.fanout = parseInt(d.fanout, 10);\n else if (typeof d.fanout === \"number\")\n m.fanout = d.fanout;\n else if (typeof d.fanout === \"object\")\n m.fanout = new $util.LongBits(d.fanout.low >>> 0, d.fanout.high >>> 0).toNumber(true);\n }\n if (d.mode != null) {\n m.mode = d.mode >>> 0;\n }\n if (d.mtime != null) {\n if (typeof d.mtime !== \"object\")\n throw TypeError(\".Data.mtime: object expected\");\n m.mtime = $root.UnixTime.fromObject(d.mtime);\n }\n return m;\n };\n\n /**\n * Creates a plain object from a Data message. Also converts values to other types if specified.\n * @function toObject\n * @memberof Data\n * @static\n * @param {Data} m Data\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n Data.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (o.arrays || o.defaults) {\n d.blocksizes = [];\n }\n if (o.defaults) {\n d.Type = o.enums === String ? \"Raw\" : 0;\n if (o.bytes === String)\n d.Data = \"\";\n else {\n d.Data = [];\n if (o.bytes !== Array)\n d.Data = $util.newBuffer(d.Data);\n }\n if ($util.Long) {\n var n = new $util.Long(0, 0, true);\n d.filesize = o.longs === String ? n.toString() : o.longs === Number ? n.toNumber() : n;\n } else\n d.filesize = o.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var n = new $util.Long(0, 0, true);\n d.hashType = o.longs === String ? n.toString() : o.longs === Number ? n.toNumber() : n;\n } else\n d.hashType = o.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var n = new $util.Long(0, 0, true);\n d.fanout = o.longs === String ? n.toString() : o.longs === Number ? n.toNumber() : n;\n } else\n d.fanout = o.longs === String ? \"0\" : 0;\n d.mode = 0;\n d.mtime = null;\n }\n if (m.Type != null && m.hasOwnProperty(\"Type\")) {\n d.Type = o.enums === String ? $root.Data.DataType[m.Type] : m.Type;\n }\n if (m.Data != null && m.hasOwnProperty(\"Data\")) {\n d.Data = o.bytes === String ? $util.base64.encode(m.Data, 0, m.Data.length) : o.bytes === Array ? Array.prototype.slice.call(m.Data) : m.Data;\n }\n if (m.filesize != null && m.hasOwnProperty(\"filesize\")) {\n if (typeof m.filesize === \"number\")\n d.filesize = o.longs === String ? String(m.filesize) : m.filesize;\n else\n d.filesize = o.longs === String ? $util.Long.prototype.toString.call(m.filesize) : o.longs === Number ? new $util.LongBits(m.filesize.low >>> 0, m.filesize.high >>> 0).toNumber(true) : m.filesize;\n }\n if (m.blocksizes && m.blocksizes.length) {\n d.blocksizes = [];\n for (var j = 0; j < m.blocksizes.length; ++j) {\n if (typeof m.blocksizes[j] === \"number\")\n d.blocksizes[j] = o.longs === String ? String(m.blocksizes[j]) : m.blocksizes[j];\n else\n d.blocksizes[j] = o.longs === String ? $util.Long.prototype.toString.call(m.blocksizes[j]) : o.longs === Number ? new $util.LongBits(m.blocksizes[j].low >>> 0, m.blocksizes[j].high >>> 0).toNumber(true) : m.blocksizes[j];\n }\n }\n if (m.hashType != null && m.hasOwnProperty(\"hashType\")) {\n if (typeof m.hashType === \"number\")\n d.hashType = o.longs === String ? String(m.hashType) : m.hashType;\n else\n d.hashType = o.longs === String ? $util.Long.prototype.toString.call(m.hashType) : o.longs === Number ? new $util.LongBits(m.hashType.low >>> 0, m.hashType.high >>> 0).toNumber(true) : m.hashType;\n }\n if (m.fanout != null && m.hasOwnProperty(\"fanout\")) {\n if (typeof m.fanout === \"number\")\n d.fanout = o.longs === String ? String(m.fanout) : m.fanout;\n else\n d.fanout = o.longs === String ? $util.Long.prototype.toString.call(m.fanout) : o.longs === Number ? new $util.LongBits(m.fanout.low >>> 0, m.fanout.high >>> 0).toNumber(true) : m.fanout;\n }\n if (m.mode != null && m.hasOwnProperty(\"mode\")) {\n d.mode = m.mode;\n }\n if (m.mtime != null && m.hasOwnProperty(\"mtime\")) {\n d.mtime = $root.UnixTime.toObject(m.mtime, o);\n }\n return d;\n };\n\n /**\n * Converts this Data to JSON.\n * @function toJSON\n * @memberof Data\n * @instance\n * @returns {Object.} JSON object\n */\n Data.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * DataType enum.\n * @name Data.DataType\n * @enum {number}\n * @property {number} Raw=0 Raw value\n * @property {number} Directory=1 Directory value\n * @property {number} File=2 File value\n * @property {number} Metadata=3 Metadata value\n * @property {number} Symlink=4 Symlink value\n * @property {number} HAMTShard=5 HAMTShard value\n */\n Data.DataType = (function() {\n const valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"Raw\"] = 0;\n values[valuesById[1] = \"Directory\"] = 1;\n values[valuesById[2] = \"File\"] = 2;\n values[valuesById[3] = \"Metadata\"] = 3;\n values[valuesById[4] = \"Symlink\"] = 4;\n values[valuesById[5] = \"HAMTShard\"] = 5;\n return values;\n })();\n\n return Data;\n})();\n\nexport const UnixTime = $root.UnixTime = (() => {\n\n /**\n * Properties of an UnixTime.\n * @exports IUnixTime\n * @interface IUnixTime\n * @property {number} Seconds UnixTime Seconds\n * @property {number|null} [FractionalNanoseconds] UnixTime FractionalNanoseconds\n */\n\n /**\n * Constructs a new UnixTime.\n * @exports UnixTime\n * @classdesc Represents an UnixTime.\n * @implements IUnixTime\n * @constructor\n * @param {IUnixTime=} [p] Properties to set\n */\n function UnixTime(p) {\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * UnixTime Seconds.\n * @member {number} Seconds\n * @memberof UnixTime\n * @instance\n */\n UnixTime.prototype.Seconds = $util.Long ? $util.Long.fromBits(0,0,false) : 0;\n\n /**\n * UnixTime FractionalNanoseconds.\n * @member {number} FractionalNanoseconds\n * @memberof UnixTime\n * @instance\n */\n UnixTime.prototype.FractionalNanoseconds = 0;\n\n /**\n * Encodes the specified UnixTime message. Does not implicitly {@link UnixTime.verify|verify} messages.\n * @function encode\n * @memberof UnixTime\n * @static\n * @param {IUnixTime} m UnixTime message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n UnixTime.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n w.uint32(8).int64(m.Seconds);\n if (m.FractionalNanoseconds != null && Object.hasOwnProperty.call(m, \"FractionalNanoseconds\"))\n w.uint32(21).fixed32(m.FractionalNanoseconds);\n return w;\n };\n\n /**\n * Decodes an UnixTime message from the specified reader or buffer.\n * @function decode\n * @memberof UnixTime\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {UnixTime} UnixTime\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n UnixTime.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.UnixTime();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.Seconds = r.int64();\n break;\n case 2:\n m.FractionalNanoseconds = r.fixed32();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n if (!m.hasOwnProperty(\"Seconds\"))\n throw $util.ProtocolError(\"missing required 'Seconds'\", { instance: m });\n return m;\n };\n\n /**\n * Creates an UnixTime message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof UnixTime\n * @static\n * @param {Object.} d Plain object\n * @returns {UnixTime} UnixTime\n */\n UnixTime.fromObject = function fromObject(d) {\n if (d instanceof $root.UnixTime)\n return d;\n var m = new $root.UnixTime();\n if (d.Seconds != null) {\n if ($util.Long)\n (m.Seconds = $util.Long.fromValue(d.Seconds)).unsigned = false;\n else if (typeof d.Seconds === \"string\")\n m.Seconds = parseInt(d.Seconds, 10);\n else if (typeof d.Seconds === \"number\")\n m.Seconds = d.Seconds;\n else if (typeof d.Seconds === \"object\")\n m.Seconds = new $util.LongBits(d.Seconds.low >>> 0, d.Seconds.high >>> 0).toNumber();\n }\n if (d.FractionalNanoseconds != null) {\n m.FractionalNanoseconds = d.FractionalNanoseconds >>> 0;\n }\n return m;\n };\n\n /**\n * Creates a plain object from an UnixTime message. Also converts values to other types if specified.\n * @function toObject\n * @memberof UnixTime\n * @static\n * @param {UnixTime} m UnixTime\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n UnixTime.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (o.defaults) {\n if ($util.Long) {\n var n = new $util.Long(0, 0, false);\n d.Seconds = o.longs === String ? n.toString() : o.longs === Number ? n.toNumber() : n;\n } else\n d.Seconds = o.longs === String ? \"0\" : 0;\n d.FractionalNanoseconds = 0;\n }\n if (m.Seconds != null && m.hasOwnProperty(\"Seconds\")) {\n if (typeof m.Seconds === \"number\")\n d.Seconds = o.longs === String ? String(m.Seconds) : m.Seconds;\n else\n d.Seconds = o.longs === String ? $util.Long.prototype.toString.call(m.Seconds) : o.longs === Number ? new $util.LongBits(m.Seconds.low >>> 0, m.Seconds.high >>> 0).toNumber() : m.Seconds;\n }\n if (m.FractionalNanoseconds != null && m.hasOwnProperty(\"FractionalNanoseconds\")) {\n d.FractionalNanoseconds = m.FractionalNanoseconds;\n }\n return d;\n };\n\n /**\n * Converts this UnixTime to JSON.\n * @function toJSON\n * @memberof UnixTime\n * @instance\n * @returns {Object.} JSON object\n */\n UnixTime.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return UnixTime;\n})();\n\nexport const Metadata = $root.Metadata = (() => {\n\n /**\n * Properties of a Metadata.\n * @exports IMetadata\n * @interface IMetadata\n * @property {string|null} [MimeType] Metadata MimeType\n */\n\n /**\n * Constructs a new Metadata.\n * @exports Metadata\n * @classdesc Represents a Metadata.\n * @implements IMetadata\n * @constructor\n * @param {IMetadata=} [p] Properties to set\n */\n function Metadata(p) {\n if (p)\n for (var ks = Object.keys(p), i = 0; i < ks.length; ++i)\n if (p[ks[i]] != null)\n this[ks[i]] = p[ks[i]];\n }\n\n /**\n * Metadata MimeType.\n * @member {string} MimeType\n * @memberof Metadata\n * @instance\n */\n Metadata.prototype.MimeType = \"\";\n\n /**\n * Encodes the specified Metadata message. Does not implicitly {@link Metadata.verify|verify} messages.\n * @function encode\n * @memberof Metadata\n * @static\n * @param {IMetadata} m Metadata message or plain object to encode\n * @param {$protobuf.Writer} [w] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Metadata.encode = function encode(m, w) {\n if (!w)\n w = $Writer.create();\n if (m.MimeType != null && Object.hasOwnProperty.call(m, \"MimeType\"))\n w.uint32(10).string(m.MimeType);\n return w;\n };\n\n /**\n * Decodes a Metadata message from the specified reader or buffer.\n * @function decode\n * @memberof Metadata\n * @static\n * @param {$protobuf.Reader|Uint8Array} r Reader or buffer to decode from\n * @param {number} [l] Message length if known beforehand\n * @returns {Metadata} Metadata\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Metadata.decode = function decode(r, l) {\n if (!(r instanceof $Reader))\n r = $Reader.create(r);\n var c = l === undefined ? r.len : r.pos + l, m = new $root.Metadata();\n while (r.pos < c) {\n var t = r.uint32();\n switch (t >>> 3) {\n case 1:\n m.MimeType = r.string();\n break;\n default:\n r.skipType(t & 7);\n break;\n }\n }\n return m;\n };\n\n /**\n * Creates a Metadata message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof Metadata\n * @static\n * @param {Object.} d Plain object\n * @returns {Metadata} Metadata\n */\n Metadata.fromObject = function fromObject(d) {\n if (d instanceof $root.Metadata)\n return d;\n var m = new $root.Metadata();\n if (d.MimeType != null) {\n m.MimeType = String(d.MimeType);\n }\n return m;\n };\n\n /**\n * Creates a plain object from a Metadata message. Also converts values to other types if specified.\n * @function toObject\n * @memberof Metadata\n * @static\n * @param {Metadata} m Metadata\n * @param {$protobuf.IConversionOptions} [o] Conversion options\n * @returns {Object.} Plain object\n */\n Metadata.toObject = function toObject(m, o) {\n if (!o)\n o = {};\n var d = {};\n if (o.defaults) {\n d.MimeType = \"\";\n }\n if (m.MimeType != null && m.hasOwnProperty(\"MimeType\")) {\n d.MimeType = m.MimeType;\n }\n return d;\n };\n\n /**\n * Converts this Metadata to JSON.\n * @function toJSON\n * @memberof Metadata\n * @instance\n * @returns {Object.} JSON object\n */\n Metadata.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n return Metadata;\n})();\n\nexport { $root as default };\n","// @ts-nocheck\n\n/**\n * This is file is shadowed by api.ts and only exists so JS could import it to\n * refer to types without encountering runtime errors\n * @see https://github.com/microsoft/TypeScript/issues/41825\n */\n\nimport { Data } from \"../gen/unixfs.js\"\nexport const NodeType = Data.DataType\n","import * as PB from \"@ipld/dag-pb\"\nimport * as UnixFS from \"./unixfs.js\"\nimport { NodeType } from \"./unixfs.js\"\nimport { Data } from \"../gen/unixfs.js\"\n\nexport * from \"./unixfs.js\"\n\n/** @type {ReadonlyArray} */\nconst EMPTY = Object.freeze([])\nconst EMPTY_BUFFER = new Uint8Array(0)\n\nconst BLANK = Object.freeze({})\nexport const DEFAULT_FILE_MODE = parseInt(\"0644\", 8)\nexport const DEFAULT_DIRECTORY_MODE = parseInt(\"0755\", 8)\n\nexport const code = PB.code\nexport const name = \"UnixFS\"\n\n/**\n * @param {UnixFS.IData} data\n * @param {ReadonlyArray} links\n */\nconst encodePB = (data, links) => {\n Object(globalThis).debug && console.log({ data, links })\n\n return PB.encode(\n // We run through prepare as links need to be sorted by name which it will\n // do.\n PB.prepare({\n Data: Data.encode(data).finish(),\n // We can cast to mutable array as we know no mutation occurs there\n Links:\n /** @type {PB.PBLink[]} */ (links),\n })\n )\n}\n\n/**\n * @param {Uint8Array} content\n * @returns {UnixFS.Raw}\n */\nexport const createRaw = content => ({\n type: NodeType.Raw,\n content,\n})\n\n/**\n * @param {UnixFS.Metadata} [metadata]\n * @returns {UnixFS.SimpleFile}\n */\nexport const createEmptyFile = metadata =>\n createSimpleFile(EMPTY_BUFFER, metadata)\n\n/**\n * @param {Uint8Array} content\n * @param {UnixFS.Metadata} [metadata]\n * @returns {UnixFS.SimpleFile}\n */\nexport const createSimpleFile = (content, metadata) => ({\n type: NodeType.File,\n layout: \"simple\",\n content,\n metadata: decodeMetadata(metadata),\n})\n\n/**\n * @param {Uint8Array} content\n * @returns {UnixFS.FileChunk}\n */\nexport const createFileChunk = content => ({\n type: NodeType.File,\n layout: \"simple\",\n content,\n})\n\n/**\n * @param {UnixFS.FileLink[]} parts\n * @param {UnixFS.Metadata} [metadata]\n * @returns {UnixFS.AdvancedFile}\n */\nexport const createAdvancedFile = (parts, metadata) => ({\n type: NodeType.File,\n layout: \"advanced\",\n parts,\n metadata: decodeMetadata(metadata),\n})\n\n/**\n * @param {UnixFS.FileLink[]} parts\n * @returns {UnixFS.FileShard}\n */\nexport const createFileShard = parts => ({\n type: NodeType.File,\n layout: \"advanced\",\n parts,\n})\n\n/**\n * @deprecated\n * @param {Uint8Array} content\n * @param {UnixFS.FileLink[]} parts\n * @param {UnixFS.Metadata} [metadata]\n * @returns {UnixFS.ComplexFile}\n */\nexport const createComplexFile = (content, parts, metadata) => ({\n type: NodeType.File,\n layout: \"complex\",\n content,\n parts,\n metadata: decodeMetadata(metadata),\n})\n\n/**\n * @param {UnixFS.DirectoryEntryLink[]} entries\n * @param {UnixFS.Metadata} [metadata]\n * @returns {UnixFS.FlatDirectory}\n */\nexport const createFlatDirectory = (entries, metadata) => ({\n type: NodeType.Directory,\n metadata: decodeMetadata(metadata),\n entries,\n})\n\n/**\n * @param {UnixFS.ShardedDirectoryLink[]} entries\n * @param {Uint8Array} bitfield\n * @param {number} fanout\n * @param {number} hashType\n * @param {UnixFS.Metadata} [metadata]\n * @returns {UnixFS.ShardedDirectory}\n */\nexport const createShardedDirectory = (\n entries,\n bitfield,\n fanout,\n hashType,\n metadata = BLANK\n) => ({\n type: NodeType.HAMTShard,\n bitfield,\n fanout: readFanout(fanout),\n hashType: readInt(hashType),\n entries,\n metadata: decodeMetadata(metadata),\n})\n\n/**\n * @param {UnixFS.ShardedDirectoryLink[]} entries\n * @param {Uint8Array} bitfield\n * @param {number} fanout\n * @param {number} hashType\n * @returns {UnixFS.DirectoryShard}\n */\nexport const createDirectoryShard = (entries, bitfield, fanout, hashType) => ({\n type: NodeType.HAMTShard,\n bitfield,\n fanout: readFanout(fanout),\n hashType: readInt(hashType),\n entries,\n})\n\n/**\n *\n * @param {Uint8Array} content\n * @returns {UnixFS.ByteView}\n */\nexport const encodeRaw = content =>\n encodePB(\n {\n Type: NodeType.Raw,\n // TODO:\n Data: content.byteLength > 0 ? content : undefined,\n filesize: content.byteLength,\n // @ts-ignore\n blocksizes: EMPTY,\n },\n []\n )\n\n/**\n * @param {UnixFS.File|UnixFS.FileChunk|UnixFS.FileShard} node\n * @param {boolean} [ignoreMetadata]\n * @returns {UnixFS.ByteView}\n */\nexport const encodeFile = (node, ignoreMetadata = false) => {\n const metadata = ignoreMetadata ? BLANK : Object(node).metadata\n switch (node.layout) {\n case \"simple\":\n return encodeSimpleFile(node.content, metadata)\n case \"advanced\":\n return encodeAdvancedFile(node.parts, metadata)\n case \"complex\":\n return encodeComplexFile(node.content, node.parts, metadata)\n default:\n throw new TypeError(\n `File with unknown layout \"${Object(node).layout}\" was passed`\n )\n }\n}\n\n/**\n * @param {Uint8Array} content\n * @returns {UnixFS.ByteView}\n */\nexport const encodeFileChunk = content => encodeSimpleFile(content, BLANK)\n\n/**\n * @param {ReadonlyArray} parts\n * @returns {UnixFS.ByteView}\n */\nexport const encodeFileShard = parts =>\n encodePB(\n {\n Type: NodeType.File,\n blocksizes: parts.map(contentByteLength),\n filesize: cumulativeContentByteLength(parts),\n },\n parts.map(encodeLink)\n )\n\n/**\n * @param {ReadonlyArray} parts\n * @param {UnixFS.Metadata} [metadata]\n * @returns {UnixFS.ByteView}\n */\nexport const encodeAdvancedFile = (parts, metadata = BLANK) =>\n encodePB(\n {\n Type: NodeType.File,\n blocksizes: parts.map(contentByteLength),\n filesize: cumulativeContentByteLength(parts),\n\n ...encodeMetadata(metadata),\n },\n parts.map(encodeLink)\n )\n\n/**\n * @param {UnixFS.DAGLink} dag\n * @returns {UnixFS.PBLink}\n */\nexport const encodeLink = dag => ({\n Name: \"\",\n Tsize: dag.dagByteLength,\n // @ts-ignore - @see https://github.com/multiformats/js-multiformats/pull/161\n Hash: dag.cid,\n})\n\n/**\n * @param {Uint8Array} content\n * @param {UnixFS.Metadata} [metadata]\n * @returns {UnixFS.ByteView}\n */\n\nexport const encodeSimpleFile = (content, metadata = BLANK) =>\n encodePB(\n {\n Type: NodeType.File,\n // adding empty file to both go-ipfs and js-ipfs produces block in\n // which `Data` is omitted but filesize and blocksizes are present.\n // For the sake of hash consistency we do the same.\n Data: content.byteLength > 0 ? content : undefined,\n filesize: content.byteLength,\n blocksizes: [],\n ...encodeMetadata(metadata),\n },\n []\n )\n\n/**\n *\n * @param {Uint8Array} content\n * @param {ReadonlyArray} parts\n * @param {UnixFS.Metadata} [metadata]\n * @returns {UnixFS.ByteView}\n */\nexport const encodeComplexFile = (content, parts, metadata = BLANK) =>\n encodePB(\n {\n Type: NodeType.File,\n Data: content,\n filesize: content.byteLength + cumulativeContentByteLength(parts),\n blocksizes: parts.map(contentByteLength),\n },\n parts.map(encodeLink)\n )\n\n/**\n * @param {UnixFS.FlatDirectory} node\n * @returns {UnixFS.ByteView}\n */\nexport const encodeDirectory = node =>\n encodePB(\n {\n Type: node.type,\n ...encodeDirectoryMetadata(node.metadata || BLANK),\n },\n node.entries.map(encodeNamedLink)\n )\n\n/**\n * @param {UnixFS.ShardedDirectory|UnixFS.DirectoryShard} node\n * @returns {UnixFS.ByteView}\n */\nexport const encodeHAMTShard = ({\n bitfield,\n fanout,\n hashType,\n entries,\n metadata = BLANK,\n}) =>\n encodePB(\n {\n Type: NodeType.HAMTShard,\n Data: bitfield.byteLength > 0 ? bitfield : undefined,\n fanout: readFanout(fanout),\n hashType: readInt(hashType),\n\n ...encodeDirectoryMetadata(metadata),\n },\n entries.map(encodeNamedLink)\n )\n\n/**\n * @param {number} n\n * @returns {number}\n */\nconst readFanout = n => {\n if (Math.log2(n) % 1 === 0) {\n return n\n } else {\n throw new TypeError(\n `Expected hamt size to be a power of two instead got ${n}`\n )\n }\n}\n\n/**\n * @param {number} n\n * @returns {number}\n */\n\nconst readInt = n => {\n if (Number.isInteger(n)) {\n return n\n } else {\n throw new TypeError(`Expected an integer value instead got ${n}`)\n }\n}\n\n/**\n * @param {Uint8Array} bytes\n */\nconst readData = bytes => (bytes.byteLength > 0 ? bytes : undefined)\n\n/**\n * @param {Uint8Array} path\n * @param {UnixFS.Metadata} [metadata]\n * @returns {UnixFS.Symlink}\n */\nexport const createSymlink = (path, metadata = BLANK) => ({\n type: NodeType.Symlink,\n content: path,\n metadata: decodeMetadata(metadata),\n})\n\n/**\n * @param {UnixFS.Symlink} node\n * @param {boolean} [ignoreMetadata]\n * @returns {UnixFS.ByteView}\n */\nexport const encodeSymlink = (node, ignoreMetadata = false) => {\n const metadata = ignoreMetadata ? BLANK : Object(node).metadata\n // We do not include filesize on symlinks because that is what go-ipfs does\n // when doing `ipfs add mysymlink`. js-ipfs on the other hand seems to store\n // it, here we choose to follow go-ipfs\n // @see https://explore.ipld.io/#/explore/QmPZ1CTc5fYErTH2XXDGrfsPsHicYXtkZeVojGycwAfm3v\n // @see https://github.com/ipfs/js-ipfs-unixfs/issues/195\n return encodePB(\n {\n Type: NodeType.Symlink,\n Data: node.content,\n ...encodeMetadata(metadata || BLANK),\n },\n []\n )\n}\n\n/**\n * @template {UnixFS.Node} T\n * @param {T} node\n * @param {boolean} root\n */\nexport const encode = (node, root = true) => {\n switch (node.type) {\n case NodeType.Raw:\n return encodeRaw(node.content)\n case NodeType.File:\n return encodeFile(node)\n case NodeType.Directory:\n return encodeDirectory(node)\n case NodeType.HAMTShard:\n return encodeHAMTShard(node)\n case NodeType.Symlink:\n return encodeSymlink(node)\n default:\n throw new Error(`Unknown node type ${Object(node).type}`)\n }\n}\n\n/**\n * @param {UnixFS.ByteView} bytes\n * @returns {UnixFS.Node}\n */\nexport const decode = bytes => {\n const pb = PB.decode(bytes)\n const message = Data.decode(/** @type {Uint8Array} */ (pb.Data))\n\n const {\n Type: type,\n Data: data,\n mtime,\n mode,\n blocksizes,\n ...rest\n } = Data.toObject(message, {\n defaults: false,\n arrays: true,\n longs: Number,\n objects: false,\n })\n const metadata = {\n ...(mode && { mode }),\n ...decodeMtime(mtime),\n }\n /** @type {UnixFS.PBLink[]} */\n const links = pb.Links\n\n switch (message.Type) {\n case NodeType.Raw:\n return createRaw(data)\n case NodeType.File:\n if (links.length === 0) {\n return new SimpleFileView(data, metadata)\n } else if (data.byteLength === 0) {\n return new AdvancedFileView(\n decodeFileLinks(rest.blocksizes, links),\n metadata\n )\n } else {\n return new ComplexFileView(\n data,\n decodeFileLinks(rest.blocksizes, links),\n metadata\n )\n }\n case NodeType.Directory:\n return createFlatDirectory(decodeDirectoryLinks(links), metadata)\n case NodeType.HAMTShard:\n return createShardedDirectory(\n decodeDirectoryLinks(links),\n data || EMPTY_BUFFER,\n rest.fanout,\n rest.hashType,\n metadata\n )\n case NodeType.Symlink:\n return createSymlink(data, metadata)\n default:\n throw new TypeError(`Unsupported node type ${message.Type}`)\n }\n}\n\n/**\n * @param {UnixFS.UnixTime|undefined} mtime\n */\nconst decodeMtime = mtime =>\n mtime == null\n ? undefined\n : {\n mtime: { secs: mtime.Seconds, nsecs: mtime.FractionalNanoseconds || 0 },\n }\n\n/**\n * @param {NodeType} type\n * @param {number[]|undefined} blocksizes\n */\nconst decodeBlocksizes = (type, blocksizes) => {\n switch (type) {\n case NodeType.File:\n return blocksizes && blocksizes.length > 0 ? { blocksizes } : undefined\n default:\n return undefined\n }\n}\n\n/**\n *\n * @param {number[]} blocksizes\n * @param {UnixFS.PBLink[]} links\n * @returns {UnixFS.FileLink[]}\n */\n\nconst decodeFileLinks = (blocksizes, links) => {\n const parts = []\n const length = blocksizes.length\n let n = 0\n while (n < length) {\n parts.push(\n /** @type {UnixFS.FileLink} */ ({\n cid: links[n].Hash,\n dagByteLength: links[n].Tsize || 0,\n contentByteLength: blocksizes[n],\n })\n )\n }\n return parts\n}\n\n/**\n * @param {UnixFS.PBLink[]} links\n * @returns {UnixFS.DirectoryEntryLink[]}\n */\nconst decodeDirectoryLinks = links =>\n links.map(\n link =>\n /** @type {UnixFS.DirectoryEntryLink} */ ({\n cid: link.Hash,\n name: link.Name || \"\",\n dagByteLength: link.Tsize || 0,\n })\n )\n\n/**\n * @param {ReadonlyArray} links\n * @returns {number}\n */\nexport const cumulativeContentByteLength = links =>\n links.reduce((size, link) => size + link.contentByteLength, 0)\n\n/**\n * @param {Uint8Array} root\n * @param {ReadonlyArray} links\n * @returns {number}\n */\nexport const cumulativeDagByteLength = (root, links) =>\n links.reduce((size, link) => size + link.dagByteLength, root.byteLength)\n\n/**\n *\n * @param {UnixFS.FileLink} link\n */\nconst contentByteLength = link => link.contentByteLength\n\n/**\n * @param {UnixFS.NamedDAGLink} link\n * @returns {UnixFS.PBLink}\n */\nconst encodeNamedLink = ({ name, dagByteLength, cid }) => ({\n Name: name,\n Tsize: dagByteLength,\n Hash: cid,\n})\n\n/**\n * @param {UnixFS.Metadata} metadata\n */\nexport const encodeDirectoryMetadata = metadata =>\n encodeMetadata(metadata, DEFAULT_DIRECTORY_MODE)\n\n/**\n * @param {UnixFS.Metadata} metadata\n * @param {UnixFS.Mode} defaultMode\n */\nexport const encodeMetadata = (\n { mode, mtime },\n defaultMode = DEFAULT_FILE_MODE\n) => ({\n mode: mode != null ? encodeMode(mode, defaultMode) : undefined,\n mtime: mtime != null ? encodeMTime(mtime) : undefined,\n})\n\n/**\n * @param {UnixFS.Metadata} [data]\n */\nexport const decodeMetadata = data =>\n data == null\n ? BLANK\n : {\n ...(data.mode == null ? undefined : { mode: decodeMode(data.mode) }),\n ...(data.mtime == null ? undefined : { mtime: data.mtime }),\n }\n\n/**\n * @param {UnixFS.MTime} mtime\n */\nconst encodeMTime = mtime => {\n return mtime == null\n ? undefined\n : mtime.nsecs !== 0\n ? { Seconds: mtime.secs, FractionalNanoseconds: mtime.nsecs }\n : { Seconds: mtime.secs }\n}\n\n/**\n * @param {number} specifiedMode\n * @param {number} defaultMode\n */\nexport const encodeMode = (specifiedMode, defaultMode) => {\n const mode = specifiedMode == null ? undefined : decodeMode(specifiedMode)\n return mode === defaultMode || mode == null ? undefined : mode\n}\n\n/**\n * @param {UnixFS.Mode} mode\n * @returns {UnixFS.Mode}\n */\nconst decodeMode = mode => (mode & 0xfff) | (mode & 0xfffff000)\n\n/**\n * @param {{content?: Uint8Array, parts?: ReadonlyArray, metadata?: UnixFS.Metadata }} node\n * @returns {UnixFS.SimpleFile|UnixFS.AdvancedFile|UnixFS.ComplexFile}\n */\nexport const matchFile = ({\n content = EMPTY_BUFFER,\n parts = EMPTY,\n metadata = BLANK,\n ...rest\n}) => {\n if (parts.length === 0) {\n return new SimpleFileView(content, metadata)\n } else if (content.byteLength === 0) {\n return new AdvancedFileView(parts, metadata)\n } else {\n return new ComplexFileView(content, parts, metadata)\n }\n}\n\n/**\n * @implements {UnixFS.SimpleFile}\n */\nclass SimpleFileView {\n /**\n * @param {Uint8Array} content\n * @param {UnixFS.Metadata} metadata\n */\n constructor(content, metadata) {\n this.content = content\n this.metadata = metadata\n /**\n * @readonly\n * @type {\"simple\"}\n */\n this.layout = \"simple\"\n /**\n * @readonly\n * @type {NodeType.File}\n */\n this.type = NodeType.File\n }\n\n get filesize() {\n return this.content.byteLength\n }\n\n encode() {\n return encodeSimpleFile(this.content, this.metadata)\n }\n}\n\n/**\n * @implements {UnixFS.AdvancedFile}\n */\nclass AdvancedFileView {\n /**\n * @param {ReadonlyArray} parts\n * @param {UnixFS.Metadata} metadata\n */\n constructor(parts, metadata) {\n this.parts = parts\n this.metadata = metadata\n }\n /** @type {\"advanced\"} */\n get layout() {\n return \"advanced\"\n }\n\n /**\n * @returns {NodeType.File}\n */\n get type() {\n return NodeType.File\n }\n get fileSize() {\n return cumulativeContentByteLength(this.parts)\n }\n get blockSizes() {\n return this.parts.map(contentByteLength)\n }\n\n encode() {\n return encodeAdvancedFile(this.parts, this.metadata)\n }\n}\n\n/**\n * @implements {UnixFS.ComplexFile}\n */\nclass ComplexFileView {\n /**\n * @param {Uint8Array} content\n * @param {ReadonlyArray} parts\n * @param {UnixFS.Metadata} metadata\n */\n constructor(content, parts, metadata) {\n this.content = content\n this.parts = parts\n this.metadata = metadata\n }\n /** @type {\"complex\"} */\n get layout() {\n return \"complex\"\n }\n\n /**\n * @returns {NodeType.File}\n */\n get type() {\n return NodeType.File\n }\n get fileSize() {\n return this.content.byteLength + cumulativeContentByteLength(this.parts)\n }\n get blockSizes() {\n return this.parts.map(contentByteLength)\n }\n\n encode() {\n return encodeComplexFile(this.content, this.parts, this.metadata)\n }\n}\n\n/**\n * @param {UnixFS.File|UnixFS.Raw|UnixFS.FileChunk|UnixFS.FileShard|UnixFS.Symlink} node\n * @returns {number}\n */\nexport const filesize = node => {\n switch (node.type) {\n case NodeType.Raw:\n case NodeType.Symlink:\n return node.content.byteLength\n case NodeType.File:\n switch (node.layout) {\n case \"simple\":\n return node.content.byteLength\n case \"advanced\":\n return cumulativeContentByteLength(node.parts)\n case \"complex\":\n return (\n node.content.byteLength + cumulativeContentByteLength(node.parts)\n )\n }\n default:\n return 0\n }\n}\n","import * as Task from \"./task.js\"\nexport * from \"./task.js\"\n\n/**\n * Turns a task (that never fails or sends messages) into an effect of it's\n * result.\n *\n * @template T\n * @param {Task.Task} task\n * @returns {Task.Effect}\n */\nexport const effect = function* (task) {\n const message = yield* task\n yield* send(message)\n}\n\n/**\n * Gets a handle to the task that invoked it. Useful when task needs to\n * suspend execution until some outside event occurs, in which case handle\n * can be used resume execution (see `suspend` code example for more details)\n *\n * @template T, M, X\n * @returns {Task.Task, never>}\n */\nexport function* current() {\n return /** @type {Task.Controller} */ (yield CURRENT)\n}\n\n/**\n * Suspends the current task (task that invokes it), which can then be\n * resumed from another task or an outside event (e.g. `setTimeout` callback)\n * by calling the `resume` with an task's handle.\n *\n * Calling this in almost all cases is preceeded by call to `current()` in\n * order to obtain a `handle` which can be passed to `resume` function\n * to resume the execution.\n *\n * Note: This task never fails, although it may never resume either. However\n * you can utilize `finally` block to do a necessary cleanup in case execution\n * is aborted.\n *\n * @example\n * ```js\n * import { current, suspend, resume } from \"actor\"\n * function * sleep(duration) {\n * // get a reference to this task so we can resume it.\n * const self = yield * current()\n * // resume this task when timeout fires\n * const id = setTimeout(() => resume(self), duration)\n * try {\n * // suspend this task nothing below this line will run until task is\n * // resumed.\n * yield * suspend()\n * } finally {\n * // if task is aborted finally block will still run which given you\n * // chance to cleanup.\n * clearTimeout(id)\n * }\n * }\n * ```\n *\n * @returns {Task.Task}\n */\nexport const suspend = function* () {\n yield SUSPEND\n}\n\n/**\n * Suspends execution for the given duration in milliseconds, after which\n * execution is resumed (unless it was aborted in the meantime).\n *\n * @example\n * ```js\n * function * demo() {\n * console.log(\"I'm going to take small nap\")\n * yield * sleep(200)\n * console.log(\"I am back to work\")\n * }\n * ```\n *\n * @param {number} [duration]\n * @returns {Task.Task}\n */\nexport function* sleep(duration = 0) {\n const task = yield* current()\n const id = setTimeout(enqueue, duration, task)\n\n try {\n yield* suspend()\n } finally {\n clearTimeout(id)\n }\n}\n\n/**\n * Provides equivalent of `await` in async functions. Specifically it takes\n * a value that you can `await` on (that is `Promise|T`) and suspends\n * execution until promise is settled. If promise succeeds execution is resumed\n * with `T` otherwise an error of type `X` is thrown (which is by default\n * `unknown` since promises do not encode error type).\n *\n * It is useful when you need to deal with potentially async set of operations\n * without having to check if thing is a promise at every step.\n *\n * Please note: This that execution is suspended even if given value is not a\n * promise, however scheduler will still resume it in the same tick of the event\n * loop after, just processing other scheduled tasks. This avoids problematic\n * race condititions that can otherwise occur when values are sometimes promises\n * and other times are not.\n *\n * @example\n * ```js\n * function * fetchJSON (url, options) {\n * const response = yield * wait(fetch(url, options))\n * const json = yield * wait(response.json())\n * return json\n * }\n * ```\n *\n * @template T, [X=unknown]\n * @param {Task.Await} input\n * @returns {Task.Task}\n */\nexport const wait = function* (input) {\n const task = yield* current()\n if (isAsync(input)) {\n let failed = false\n /** @type {unknown} */\n let output = undefined\n input.then(\n value => {\n failed = false\n output = value\n enqueue(task)\n },\n error => {\n failed = true\n output = error\n enqueue(task)\n }\n )\n\n yield* suspend()\n if (failed) {\n throw output\n } else {\n return /** @type {T} */ (output)\n }\n } else {\n // This may seem redundunt but it is not, by enqueuing this task we allow\n // scheduler to perform other queued tasks first. This way many race\n // conditions can be avoided when values are sometimes promises and other\n // times aren't.\n // Unlike `await` however this will resume in the same tick.\n main(wake(task))\n yield* suspend()\n return input\n }\n}\n\n/**\n * @template T, X, M\n * @param {Task.Controller} task\n * @returns {Task.Task}\n */\nfunction* wake(task) {\n enqueue(task)\n}\n\n/**\n * Checks if value value is a promise (or it's lookalike).\n *\n * @template T\n * @param {any} node\n * @returns {node is PromiseLike}\n */\n\nconst isAsync = node =>\n node != null &&\n typeof (/** @type {{then?:unknown}} */ (node).then) === \"function\"\n\n/**\n * Task that sends given message (or rather an effect producing this message).\n * Please note, that while you could use `yield message` instead, but you'd risk\n * having to deal with potential breaking changes if library internals change\n * in the future, which in fact may happen as anticipated improvements in\n * TS generator inference could enable replace need for `yield *`.\n *\n * @see https://github.com/microsoft/TypeScript/issues/43632\n *\n * @template T\n * @param {T} message\n * @returns {Task.Effect}\n */\nexport const send = function* (message) {\n yield /** @type {Task.Message} */ (message)\n}\n\n/**\n * Takes several effects and merges them into a single effect of tagged\n * variants so that their source could be identified via `type` field.\n *\n * @example\n * ```js\n * listen({\n * read: Task.effect(dbRead),\n * write: Task.effect(dbWrite)\n * })\n * ```\n *\n * @template {string} Tag\n * @template T\n * @param {{ [K in Tag]: Task.Effect }} source\n * @returns {Task.Effect>}\n */\nexport const listen = function* (source) {\n /** @type {Task.Fork>[]} */\n const forks = []\n for (const entry of Object.entries(source)) {\n const [name, effect] = /** @type {[Tag, Task.Effect]} */ (entry)\n if (effect !== NONE) {\n forks.push(yield* fork(tag(effect, name)))\n }\n }\n\n yield* group(forks)\n}\n\n/**\n * Takes several tasks and creates an effect of them all.\n *\n * @example\n * ```js\n * Task.effects([\n * dbRead,\n * dbWrite\n * ])\n * ```\n *\n * @template {string} Tag\n * @template T\n * @param {Task.Task[]} tasks\n * @returns {Task.Effect}\n */\n\nexport const effects = tasks =>\n tasks.length > 0 ? batch(tasks.map(effect)) : NONE\n\n/**\n * Takes several effects and combines them into a one.\n *\n * @template T\n * @param {Task.Effect[]} effects\n * @returns {Task.Effect}\n */\nexport function* batch(effects) {\n const forks = []\n for (const effect of effects) {\n forks.push(yield* fork(effect))\n }\n\n yield* group(forks)\n}\n\n/**\n * @template {string} Tag\n * @template T\n * @typedef {{type: Tag} & {[K in Tag]: T}} Tagged\n */\n/**\n * Tags an effect by boxing each event with an object that has `type` field\n * corresponding to given tag and same named field holding original message\n * e.g. given `nums` effect that produces numbers, `tag(nums, \"inc\")` would\n * create an effect that produces events like `{type:'inc', inc:1}`.\n *\n * @template {string} Tag\n * @template T, M, X\n * @param {Task.Task} effect\n * @param {Tag} tag\n * @returns {Task.Task>}\n */\nexport const tag = (effect, tag) =>\n // @ts-ignore\n effect === NONE\n ? NONE\n : effect instanceof Tagger\n ? new Tagger([...effect.tags, tag], effect.source)\n : new Tagger([tag], effect)\n\n/**\n * @template {string} Tag\n * @template Success, Failure, Message\n *\n * @implements {Task.Task>}\n * @implements {Task.Controller>}\n */\nclass Tagger {\n /**\n * @param {Task.Task} source\n * @param {string[]} tags\n */\n constructor(tags, source) {\n this.tags = tags\n this.source = source\n /** @type {Task.Controller} */\n this.controller\n }\n /* c8 ignore next 3 */\n [Symbol.iterator]() {\n if (!this.controller) {\n this.controller = this.source[Symbol.iterator]()\n }\n return this\n }\n /**\n * @param {Task.TaskState} state\n * @returns {Task.TaskState>}\n */\n box(state) {\n if (state.done) {\n return state\n } else {\n switch (state.value) {\n case SUSPEND:\n case CURRENT:\n return /** @type {Task.TaskState>} */ (\n state\n )\n default: {\n // Instead of boxing result at each transform step we perform in-place\n // mutation as we know nothing else is accessing this value.\n const tagged = /** @type {{ done: false, value: any }} */ (state)\n let { value } = tagged\n for (const tag of this.tags) {\n value = withTag(tag, value)\n }\n tagged.value = value\n return tagged\n }\n }\n }\n }\n /**\n *\n * @param {Task.Instruction} instruction\n */\n next(instruction) {\n return this.box(this.controller.next(instruction))\n }\n /**\n *\n * @param {Failure} error\n */\n throw(error) {\n return this.box(this.controller.throw(error))\n }\n /**\n * @param {Success} value\n */\n return(value) {\n return this.box(this.controller.return(value))\n }\n\n get [Symbol.toStringTag]() {\n return \"TaggedEffect\"\n }\n}\n\n/**\n * Returns empty `Effect`, that is produces no messages. Kind of like `[]` or\n * `\"\"` but for effects.\n *\n * @type {() => Task.Effect}\n */\nexport const none = () => NONE\n\n/**\n * Takes iterable of tasks and runs them concurrently, returning array of\n * results in an order of tasks (not the order of completion). If any of the\n * tasks fail all the rest are aborted and error is throw into calling task.\n *\n * > This is basically equivalent of `Promise.all` except cancelation logic\n * because tasks unlike promises can be cancelled.\n *\n * @template T, X\n * @param {Iterable>} tasks\n * @returns {Task.Task}\n */\nexport const all = function* (tasks) {\n const self = yield* current()\n\n /** @type {(id:number) => (value:T) => void} */\n const succeed = id => value => {\n delete forks[id]\n results[id] = value\n count -= 1\n if (count === 0) {\n enqueue(self)\n }\n }\n\n /** @type {(error:X) => void} */\n const fail = error => {\n for (const handle of forks) {\n if (handle) {\n enqueue(abort(handle, error))\n }\n }\n\n enqueue(abort(self, error))\n }\n\n /** @type {Task.Fork[]} */\n let forks = []\n let count = 0\n for (const task of tasks) {\n forks.push(yield* fork(then(task, succeed(count++), fail)))\n }\n const results = new Array(count)\n\n if (count > 0) {\n yield* suspend()\n }\n\n return results\n}\n\n/**\n * @template {string} Tag\n * @template T\n * @param {Tag} tag\n * @param {Task.Message} value\n */\nconst withTag = (tag, value) =>\n /** @type {Tagged} */\n ({ type: tag, [tag]: value })\n\n/**\n * Kind of like promise.then which is handy when you want to extract result\n * from the given task from the outside.\n *\n * @template T, U, X, M\n * @param {Task.Task} task\n * @param {(value:T) => U} resolve\n * @param {(error:X) => U} reject\n * @returns {Task.Task}\n */\nexport function* then(task, resolve, reject) {\n try {\n return resolve(yield* task)\n } catch (error) {\n return reject(/** @type {X} */ (error))\n }\n}\n\n// Special control instructions recognized by a scheduler.\nconst CURRENT = Symbol(\"current\")\nconst SUSPEND = Symbol(\"suspend\")\n/** @typedef {typeof SUSPEND|typeof CURRENT} Control */\n\n/**\n * @template M\n * @param {Task.Instruction} value\n * @returns {value is M}\n */\nexport const isMessage = value => {\n switch (value) {\n case SUSPEND:\n case CURRENT:\n return false\n default:\n return true\n }\n}\n\n/**\n * @template M\n * @param {Task.Instruction} value\n * @returns {value is Control}\n */\nexport const isInstruction = value => !isMessage(value)\n\n/**\n * @template T, X, M\n * @implements {Task.TaskGroup}\n */\nclass Group {\n /**\n * @template T, X, M\n * @param {Task.Controller|Task.Fork} member\n * @returns {Task.Group}\n */\n static of(member) {\n return (\n /** @type {{group?:Task.TaskGroup}} */ (member).group || MAIN\n )\n }\n\n /**\n * @template T, X, M\n * @param {(Task.Controller|Task.Fork) & {group?:Task.TaskGroup}} member\n * @param {Task.TaskGroup} group\n */\n static enqueue(member, group) {\n member.group = group\n group.stack.active.push(member)\n }\n /**\n * @param {Task.Controller} driver\n * @param {Task.Controller[]} [active]\n * @param {Set>} [idle]\n * @param {Task.Stack} [stack]\n */\n constructor(\n driver,\n active = [],\n idle = new Set(),\n stack = new Stack(active, idle)\n ) {\n this.driver = driver\n this.parent = Group.of(driver)\n this.stack = stack\n this.id = ++ID\n }\n}\n\n/**\n * @template T, X, M\n * @implements {Task.Main}\n */\nclass Main {\n constructor() {\n this.status = IDLE\n this.stack = new Stack()\n this.id = /** @type {0} */ (0)\n }\n}\n\n/**\n * @template T, X, M\n */\nclass Stack {\n /**\n * @param {Task.Controller[]} [active]\n * @param {Set>} [idle]\n */\n constructor(active = [], idle = new Set()) {\n this.active = active\n this.idle = idle\n }\n\n /**\n *\n * @param {Task.Stack} stack\n * @returns\n */\n static size({ active, idle }) {\n return active.length + idle.size\n }\n}\n\n/**\n * Starts a main task.\n *\n * @param {Task.Task} task\n */\nexport const main = task => enqueue(task[Symbol.iterator]())\n\n/**\n * @template T, X, M\n * @param {Task.Controller} task\n */\nconst enqueue = task => {\n let group = Group.of(task)\n group.stack.active.push(task)\n group.stack.idle.delete(task)\n\n // then walk up the group chain and unblock their driver tasks.\n while (group.parent) {\n const { idle, active } = group.parent.stack\n if (idle.has(group.driver)) {\n idle.delete(group.driver)\n active.push(group.driver)\n } else {\n // if driver was not blocked it must have been unblocked by\n // other task so stop there.\n break\n }\n\n group = group.parent\n }\n\n if (MAIN.status === IDLE) {\n MAIN.status = ACTIVE\n while (true) {\n try {\n for (const _message of step(MAIN)) {\n }\n MAIN.status = IDLE\n break\n } catch (_error) {\n // Top level task may crash and throw an error, but given this is a main\n // group we do not want to interupt other unrelated tasks, which is why\n // we discard the error and the task that caused it.\n MAIN.stack.active.shift()\n }\n }\n }\n}\n\n/**\n * @template T, X, M\n * @param {Task.Controller} task\n */\nexport const resume = task => enqueue(task)\n\n/**\n * @template T, X, M\n * @param {Task.Group} group\n */\n\nconst step = function* (group) {\n const { active } = group.stack\n let task = active[0]\n group.stack.idle.delete(task)\n while (task) {\n /** @type {Task.TaskState} */\n let state = INIT\n // Keep processing insturctions until task is done, it send suspend request\n // or it's has been removed from the active queue.\n // ⚠️ Group changes require extra care so please make sure to understand\n // the detail here. It occurs when spawned task(s) are joined into a group\n // which will change the task driver, that is when `task === active[0]` will\n // became false and need to to drop the task immediately otherwise race\n // condition will occur due to task been driven by multiple concurrent\n // schedulers.\n loop: while (!state.done && task === active[0]) {\n const instruction = state.value\n switch (instruction) {\n // if task is suspended we add it to the idle list and break the loop\n // to move to a next task.\n case SUSPEND:\n group.stack.idle.add(task)\n break loop\n // if task requested a context (which is usually to suspend itself)\n // pass back a task reference and continue.\n case CURRENT:\n state = task.next(task)\n break\n default:\n // otherwise task sent a message which we yield to the driver and\n // continue\n state = task.next(\n yield /** @type {M & Task.Message}*/ (instruction)\n )\n break\n }\n }\n\n // If task is complete, or got suspended we move to a next task\n active.shift()\n task = active[0]\n group.stack.idle.delete(task)\n }\n}\n\n/**\n * Executes given task concurrently with a current task (task that spawned it).\n * Spawned task is detached from the task that spawned it and it can outlive it\n * and / or fail without affecting a task that spawned it. If you need to wait\n * on concurrent task completion consider using `fork` instead which can be\n * later `joined`. If you just want a to block on task execution you can just\n * `yield* work()` directly instead.\n *\n * @param {Task.Task} task\n * @returns {Task.Task}\n */\nexport function* spawn(task) {\n main(task)\n}\n\n/**\n * Executes given task concurrently with current task (the task that initiated\n * fork). Froked task is detached from the task that created it and it can\n * outlive it and / or fail without affecting it. You do however get a handle\n * for the fork which could be used to `join` the task, in which case `joining`\n * task will block until fork finishes execution.\n *\n * This is also a primary interface for executing tasks from the outside of the\n * task context. Function returns `Fork` which implements `Promise` interface\n * so it could be awaited. Please note that calling `fork` does not really do\n * anything, it lazily starts execution when you either `await fork(work())`\n * from arbitray context or `yield* fork(work())` in anothe task context.\n *\n * @template T, X, M\n * @param {Task.Task} task\n * @param {Task.ForkOptions} [options]\n * @returns {Task.Fork}\n */\nexport const fork = (task, options) => new Fork(task, options)\n\n/**\n * Exits task succesfully with a given return value.\n *\n * @template T, M, X\n * @param {Task.Controller} handle\n * @param {T} value\n * @returns {Task.Task}\n */\nexport const exit = (handle, value) => conclude(handle, { ok: true, value })\n\n/**\n * Terminates task execution execution. Only takes task that produces no\n * result, if your task has non `void` return type you should use `exit` instead.\n *\n * @template M, X\n * @param {Task.Controller} handle\n */\nexport const terminate = handle =>\n conclude(handle, { ok: true, value: undefined })\n\n/**\n * Aborts given task with an error. Task error type should match provided error.\n *\n * @template T, M, X\n * @param {Task.Controller} handle\n * @param {X} [error]\n */\nexport const abort = (handle, error) => conclude(handle, { ok: false, error })\n\n/**\n * Aborts given task with an given error.\n *\n * @template T, M, X\n * @param {Task.Controller} handle\n * @param {Task.Result} result\n * @returns {Task.Task & Task.Controller}\n */\nfunction* conclude(handle, result) {\n try {\n const task = handle\n const state = result.ok\n ? task.return(result.value)\n : task.throw(result.error)\n\n if (!state.done) {\n if (state.value === SUSPEND) {\n const { idle } = Group.of(task).stack\n idle.add(task)\n } else {\n enqueue(task)\n }\n }\n } catch (error) {}\n}\n\n/**\n * Groups multiple forks togather and joins joins them with current task.\n *\n * @template T, X, M\n * @param {Task.Fork[]} forks\n * @returns {Task.Task}\n */\nexport function* group(forks) {\n // Abort eraly if there'se no work todo.\n if (forks.length === 0) return\n\n const self = yield* current()\n /** @type {Task.TaskGroup} */\n const group = new Group(self)\n /** @type {Task.Failure|null} */\n let failure = null\n\n for (const fork of forks) {\n const { result } = fork\n if (result) {\n if (!result.ok && !failure) {\n failure = result\n }\n continue\n }\n move(fork, group)\n }\n\n // Keep work looping until there is nom more work to be done\n try {\n if (failure) {\n throw failure.error\n }\n\n while (true) {\n yield* step(group)\n if (Stack.size(group.stack) > 0) {\n yield* suspend()\n } else {\n break\n }\n }\n } catch (error) {\n for (const task of group.stack.active) {\n yield* abort(task, error)\n }\n\n for (const task of group.stack.idle) {\n yield* abort(task, error)\n enqueue(task)\n }\n\n throw error\n }\n}\n\n/**\n * @template T, X, M\n * @param {Task.Fork} fork\n * @param {Task.TaskGroup} group\n */\nconst move = (fork, group) => {\n const from = Group.of(fork)\n if (from !== group) {\n const { active, idle } = from.stack\n const target = group.stack\n fork.group = group\n // If it is idle just move from one group to the other\n // and update the group task thinks it belongs to.\n if (idle.has(fork)) {\n idle.delete(fork)\n target.idle.add(fork)\n } else {\n const index = active.indexOf(fork)\n // If task is in the job queue, we move it to a target job queue. Moving\n // top task in the queue requires extra care so it does not end up\n // processed by two groups which would lead to race. For that reason\n // `step` loop checks for group changes on each turn.\n if (index >= 0) {\n active.splice(index, 1)\n target.active.push(fork)\n }\n // otherwise task is complete\n }\n }\n}\n\n/**\n * @template T, X, M\n * @param {Task.Fork} fork\n * @returns {Task.Task}\n */\nexport function* join(fork) {\n // If fork is still idle activate it.\n if (fork.status === IDLE) {\n yield* fork\n }\n\n if (!fork.result) {\n yield* group([fork])\n }\n\n const result = /** @type {Task.Result} */ (fork.result)\n if (result.ok) {\n return result.value\n } else {\n throw result.error\n }\n}\n\n/**\n * @template T, X\n * @implements {Task.Future}\n */\nclass Future {\n /**\n * @param {Task.StateHandler} handler\n */\n constructor(handler) {\n this.handler = handler\n /**\n * @abstract\n * @type {Task.Result|void}\n */\n this.result\n }\n /**\n * @type {Promise}\n */\n get promise() {\n const { result } = this\n const promise =\n result == null\n ? new Promise((succeed, fail) => {\n this.handler.onsuccess = succeed\n this.handler.onfailure = fail\n })\n : result.ok\n ? Promise.resolve(result.value)\n : Promise.reject(result.error)\n Object.defineProperty(this, \"promise\", { value: promise })\n return promise\n }\n\n /**\n * @template U, [E=never]\n * @param {((value:T) => U | PromiseLike)|undefined|null} [onresolve]\n * @param {((error:X) => E|PromiseLike)|undefined|null} [onreject]\n * @returns {Promise}\n */\n then(onresolve, onreject) {\n return this.activate().promise.then(onresolve, onreject)\n }\n /**\n * @template [U=never]\n * @param {(error:X) => U} onreject\n */\n catch(onreject) {\n return /** @type {Task.Future} */ (\n this.activate().promise.catch(onreject)\n )\n }\n /**\n * @param {() => void} onfinally\n * @returns {Task.Future}\n */\n finally(onfinally) {\n return /** @type {Task.Future} */ (\n this.activate().promise.finally(onfinally)\n )\n }\n /**\n * @abstract\n */\n /* c8 ignore next 3 */\n activate() {\n return this\n }\n}\n\n/**\n * @template T, X, M\n * @implements {Task.Fork}\n * @implements {Task.Controller}\n * @implements {Task.Task, never>}\n * @implements {Task.Future}\n * @extends {Future}\n */\nclass Fork extends Future {\n /**\n * @param {Task.Task} task\n * @param {Task.ForkOptions} [options]\n * @param {Task.StateHandler} [handler]\n * @param {Task.TaskState} [state]\n */\n constructor(task, options = BLANK, handler = {}, state = INIT) {\n super(handler)\n this.id = ++ID\n this.name = options.name || \"\"\n /** @type {Task.Task} */\n this.task = task\n this.state = state\n this.status = IDLE\n /** @type {Task.Result} */\n this.result\n this.handler = handler\n\n /** @type {Task.Controller} */\n this.controller\n }\n\n *resume() {\n resume(this)\n }\n\n /**\n * @returns {Task.Task}\n */\n join() {\n return join(this)\n }\n\n /**\n * @param {X} error\n */\n abort(error) {\n return abort(this, error)\n }\n /**\n * @param {T} value\n */\n exit(value) {\n return exit(this, value)\n }\n get [Symbol.toStringTag]() {\n return \"Fork\"\n }\n\n /**\n * @returns {Task.Controller, never, never>}\n */\n *[Symbol.iterator]() {\n return this.activate()\n }\n\n activate() {\n this.controller = this.task[Symbol.iterator]()\n this.status = ACTIVE\n enqueue(this)\n return this\n }\n\n /**\n * @private\n * @param {any} error\n * @returns {never}\n */\n panic(error) {\n this.result = { ok: false, error }\n this.status = FINISHED\n const { handler } = this\n if (handler.onfailure) {\n handler.onfailure(error)\n }\n\n throw error\n }\n\n /**\n * @private\n * @param {Task.TaskState} state\n */\n step(state) {\n this.state = state\n if (state.done) {\n this.result = { ok: true, value: state.value }\n this.status = FINISHED\n const { handler } = this\n if (handler.onsuccess) {\n handler.onsuccess(state.value)\n }\n }\n\n return state\n }\n\n /**\n * @param {unknown} value\n */\n next(value) {\n try {\n return this.step(this.controller.next(value))\n } catch (error) {\n return this.panic(error)\n }\n }\n /**\n * @param {T} value\n */\n return(value) {\n try {\n return this.step(this.controller.return(value))\n } catch (error) {\n return this.panic(error)\n }\n }\n /**\n * @param {X} error\n */\n throw(error) {\n try {\n return this.step(this.controller.throw(error))\n } catch (error) {\n return this.panic(error)\n }\n }\n}\n\n/**\n * @template M\n * @param {Task.Effect} init\n * @param {(message:M) => Task.Effect} next\n * @returns {Task.Task}\n */\nexport const loop = function* (init, next) {\n /** @type {Task.Controller} */\n const controller = yield* current()\n const group = new Group(controller)\n Group.enqueue(init[Symbol.iterator](), group)\n\n while (true) {\n for (const message of step(group)) {\n Group.enqueue(next(message)[Symbol.iterator](), group)\n }\n\n if (Stack.size(group.stack) > 0) {\n yield* suspend()\n } else {\n break\n }\n }\n}\n\nlet ID = 0\n/** @type {Task.Status} */\nconst IDLE = \"idle\"\nconst ACTIVE = \"active\"\nconst FINISHED = \"finished\"\n/** @type {Task.TaskState} */\nconst INIT = { done: false, value: CURRENT }\n\nconst BLANK = {}\n\n/** @type {Task.Effect} */\nconst NONE = (function* none() {})()\n\n/** @type {Task.Main} */\nconst MAIN = new Main()\n","function Indexed() {}\n\nObject.defineProperties(Indexed, {\n prototype: {\n value: new Proxy(Object.prototype, {\n /**\n * @param {object} target\n * @param {PropertyKey} property\n * @param {{get(key:PropertyKey): any}} receiver\n */\n get(target, property, receiver) {\n return typeof property === \"symbol\"\n ? Reflect.get(target, property, receiver)\n : receiver.get(property)\n },\n }),\n },\n})\n\nexport { Indexed }\n","import { Indexed } from \"./indexed.js\"\n\n/**\n * @typedef {{\n * readonly byteOffset: number\n * readonly byteLength: number\n * readonly segments: Uint8Array[]\n * }} BufferSlice\n */\n\n/** @typedef {BufferView} View */\nexport const empty = () => new BufferView()\n\n/**\n * @param {Uint8Array[]} segments\n * @param {number} byteOffset\n * @param {number} byteLength\n */\nexport const create = (\n segments,\n byteOffset = 0,\n byteLength = totalByteLength(segments)\n) => new BufferView(segments, byteOffset, byteLength)\n\n/**\n *\n * @param {Uint8Array[]} segments\n * @returns\n */\nconst totalByteLength = segments => {\n let byteLength = 0\n for (const segment of segments) {\n byteLength += segment.byteLength\n }\n return byteLength\n}\n\n/**\n * @param {BufferSlice} buffer\n * @param {number} [startOffset]\n * @param {number} [endOffset]\n */\nexport const slice = (\n buffer,\n startOffset = 0,\n endOffset = buffer.byteLength\n) => {\n const segments = []\n const start = startOffset < 0 ? buffer.byteLength - startOffset : startOffset\n const end = endOffset < 0 ? buffer.byteLength - endOffset : endOffset\n\n // If start at 0 offset and end is past buffer range it is effectively\n // as same buffer.\n if (start === 0 && end >= buffer.byteLength) {\n return buffer\n }\n\n // If range is not within the current buffer just create an empty slice.\n if (start > end || start > buffer.byteLength || end <= 0) {\n return empty()\n }\n\n let byteLength = 0\n let offset = 0\n for (const segment of buffer.segments) {\n const nextOffset = offset + segment.byteLength\n // Have not found a start yet\n if (byteLength === 0) {\n // If end offset is within the current segment we know start is also,\n // because it preceeds the end & we had not found start yet.\n // In such case we create a view with only single segment of bytes\n // in the range.\n if (end <= nextOffset) {\n const range = segment.subarray(start - offset, end - offset)\n segments.push(range)\n byteLength = range.byteLength\n break\n }\n // If start offeset falls with in current range (but not the end)\n // we save matching buffer slice and update byteLength.\n else if (start < nextOffset) {\n const range =\n start === offset ? segment : segment.subarray(start - offset)\n segments.push(range)\n byteLength = range.byteLength\n }\n }\n // Otherwise we already started collecting matching segments and are looking\n // for the end end of the slice. If it is with in the current range capture\n // the segment and create a view.\n else if (end <= nextOffset) {\n const range =\n end === nextOffset ? segment : segment.subarray(0, end - offset)\n segments.push(range)\n byteLength += range.byteLength\n break\n }\n // If end is past current range we just save the segment and continue.\n else {\n segments.push(segment)\n byteLength += segment.byteLength\n }\n\n offset = nextOffset\n }\n\n return new BufferView(segments, buffer.byteOffset + start, byteLength)\n}\n\n/**\n * @param {BufferSlice} buffer\n * @param {Uint8Array} part\n */\n\nexport const push = (buffer, part) => {\n if (part.byteLength > 0) {\n // We MUTATE here but that is ok because it is out of bound for the passed\n // buffer view so there will be no visible side effects.\n buffer.segments.push(part)\n return new BufferView(\n buffer.segments,\n buffer.byteOffset,\n buffer.byteLength + part.byteLength\n )\n } else {\n return buffer\n }\n}\n\n/**\n * @param {BufferSlice} buffer\n * @param {number} n\n */\nexport const get = (buffer, n) => {\n if (n < buffer.byteLength) {\n let offset = 0\n for (const segment of buffer.segments) {\n if (n < offset + segment.byteLength) {\n return segment[n - offset]\n } else {\n offset += segment.byteLength\n }\n }\n }\n\n return undefined\n}\n\n/**\n *\n * @param {BufferView} buffer\n * @param {Uint8Array} target\n * @param {number} byteOffset\n */\nexport const copyTo = (buffer, target, byteOffset) => {\n let offset = byteOffset\n for (const segment of buffer.segments) {\n target.set(segment, offset)\n offset += segment.byteLength\n }\n\n return target\n}\n\n/**\n *\n * @param {BufferView} buffer\n */\nexport function* iterate(buffer) {\n for (const part of buffer.segments) {\n yield* part\n }\n}\n\n/**\n * @extends {Indexed}\n */\nclass BufferView extends Indexed {\n /**\n * @param {Uint8Array[]} segments\n * @param {number} byteOffset\n * @param {number} byteLength\n */\n constructor(segments = [], byteOffset = 0, byteLength = 0) {\n super()\n /** @hide */\n this.segments = segments\n /** @readonly */\n this.byteLength = byteLength\n /** @readonly */\n this.length = byteLength\n /** @readonly */\n this.byteOffset = byteOffset\n }\n\n [Symbol.iterator]() {\n return iterate(this)\n }\n\n /**\n * @param {number} [start]\n * @param {number} [end]\n */\n slice(start, end) {\n return /** @type {BufferView} */ (slice(this, start, end))\n }\n\n /**\n * @param {number} [start]\n * @param {number} [end]\n */\n subarray(start, end) {\n return /** @type {BufferView} */ (slice(this, start, end))\n }\n\n /**\n *\n * @param {Uint8Array} bytes\n */\n push(bytes) {\n return /** @type {BufferView} */ (push(this, bytes))\n }\n\n /**\n * @param {number} n\n */\n get(n) {\n return get(this, n)\n }\n\n /**\n *\n * @param {Uint8Array} target\n * @param {number} offset\n */\n copyTo(target, offset) {\n return copyTo(this, target, offset)\n }\n}\n","/**\n * @param {string} reason\n * @returns {never}\n */\nexport const panic = reason => {\n throw new Error(reason)\n}\n\n/**\n * @param {{ raw: readonly string[] | ArrayLike}} template\n * @param {never} [subject]\n * @param {unknown[]} substitutions\n * @returns {never}\n */\nexport const unreachable = (template, subject, ...substitutions) =>\n panic(String.raw(template, JSON.stringify(subject), ...substitutions))\n\nexport const EMPTY_BUFFER = new Uint8Array(0)\n/** @type {any[]} */\nexport const EMPTY = []\n","import * as BufferQueue from \"./chunker/buffer.js\"\nimport * as Chunker from \"./chunker/api.js\"\nimport { EMPTY } from \"../writer/util.js\"\nexport * from \"./chunker/api.js\"\n\n/**\n * @typedef {{\n * chunker: Chunker.Chunker\n * }} Config\n *\n *\n * @typedef {{\n * buffer: BufferQueue.View\n * config: Config\n * }} Chunker\n *\n * @typedef {Chunker & {chunks: Chunker.Chunk[]}} ChunkerWithChunks\n */\n\n/**\n * @param {Config} config\n * @returns {Chunker}\n */\nexport const open = config => ({\n config,\n buffer: BufferQueue.empty(),\n})\n\n/**\n * @param {Chunker} state\n * @param {Uint8Array} bytes\n * @returns {ChunkerWithChunks}\n */\nexport const write = (state, bytes) =>\n bytes.byteLength > 0\n ? split(state.config, state.buffer.push(bytes), false)\n : { ...state, chunks: EMPTY }\n\n/**\n * @param {Chunker} state\n * @returns {ChunkerWithChunks}\n */\nexport const close = state => split(state.config, state.buffer, true)\n\n/**\n * @param {Config} config\n * @param {BufferQueue.View} buffer\n * @param {boolean} end\n * @returns {ChunkerWithChunks}\n */\n\nexport const split = (config, buffer, end) => {\n const chunker = config.chunker\n const chunks = []\n\n let offset = 0\n for (const size of chunker.cut(chunker.context, buffer, end)) {\n // We may be splitting empty buffer in which case there will be no chunks\n // in it so we make sure that we do not emit empty buffer.\n if (size > 0) {\n const chunk = buffer.subarray(offset, offset + size)\n chunks.push(chunk)\n offset += size\n }\n }\n\n return { config, chunks, buffer: buffer.subarray(offset) }\n}\n","import * as Layout from \"./api.js\"\nimport * as Queue from \"./queue/api.js\"\nexport * from \"./queue/api.js\"\n\n/**\n * @returns {Queue.Result}\n */\nexport const empty = () => ({\n mutable: false,\n needs: {},\n nodes: {},\n links: {},\n linked: [],\n})\n\nexport const mutable = () => ({\n mutable: true,\n needs: {},\n nodes: {},\n links: {},\n linked: EMPTY,\n})\n\n/**\n * Adds given layout node to the layout queue. If links for all of the node\n * children are available correspnoding linked node is added (removing links\n * form the queue) otherwise `nood` is added to the wait queue until all the\n * needed links are added.\n *\n *\n * @param {Layout.Branch} node\n * @param {Queue.Queue} queue\n * @returns {Queue.Result}\n */\nexport const addNode = (node, queue) => addNodes([node], queue)\n\n/**\n *\n * @param {Layout.Branch[]} newNodes\n * @param {Queue.Queue} input\n * @returns {Queue.Result}\n */\nexport const addNodes = (newNodes, input) => {\n let queue = patch(input, {})\n for (const node of newNodes) {\n const { ready, has, wants } = collect(node.children, queue.links)\n // If node isn't waiting on any of the children it's ready to be linked\n // so we add linked node diretly.\n if (wants.length === 0) {\n queue = patch(queue, {\n links: assign(undefined, has),\n linked: [{ id: node.id, links: ready }],\n })\n } else {\n queue = patch(queue, {\n needs: assign(node.id, wants),\n nodes: {\n [node.id]: {\n children: node.children,\n count: wants.length,\n },\n },\n })\n }\n }\n\n return queue\n}\n\n/**\n * Adds link to the queue. If queue contains a node that needs this link it gets\n * updated. Either it's gets linked (when it was blocked only on this link) or\n * it's want could is reduced. If no node needed this link it just gets stored\n * for the future node that will need it.\n *\n *\n * @param {Queue.NodeID} id\n * @param {Queue.Link} link\n * @param {Queue.Queue} queue\n * @returns {Queue.Result}\n */\n\nexport const addLink = (id, link, queue) => {\n const nodeID = queue.needs[id]\n const node = queue.nodes[nodeID]\n // We have node than needs this link.\n if (node != null) {\n // This is the only link it needed so we materialize the node and remove\n // links and needs associated with it.\n if (node.count === 1) {\n const { ready, has } = collect(node.children, {\n ...queue.links,\n [id]: link,\n })\n\n return patch(queue, {\n needs: { [id]: undefined },\n links: assign(undefined, has),\n nodes: { [nodeID]: undefined },\n linked: [{ id: nodeID, links: ready }],\n })\n }\n // If node needs more links we just reduce a want count and remove this\n // need.\n else {\n return patch(queue, {\n needs: { [id]: undefined },\n links: { [id]: link },\n nodes: {\n [nodeID]: {\n ...node,\n count: node.count - 1,\n },\n },\n })\n }\n }\n // If we have no one waiting for this link just add it to the queue\n else {\n return patch(queue, {\n links: { [id]: link },\n })\n }\n}\n\n/**\n *\n * @param {Queue.Queue} queue\n * @param {Queue.Delta} delta\n */\n\nconst patch = (queue, { needs, nodes, links, linked }) => {\n const result = queue.mutable ? queue : { ...queue }\n const original = queue.mutable ? BLANK : undefined\n\n if (needs) {\n result.needs = patchDict(queue.needs, needs, original)\n }\n\n if (nodes) {\n result.nodes = patchDict(queue.nodes, nodes, original)\n }\n\n if (links) {\n result.links = patchDict(queue.links, links, original)\n }\n\n result.linked = linked\n ? append(queue.linked || EMPTY, linked, EMPTY)\n : queue.linked || []\n\n return /** @type {Queue.Result} */ (result)\n}\n\n/**\n * @template V\n * @template {PropertyKey} K\n * @param {V} value\n * @param {K[]} keys\n * @returns {Record}\n */\n\nconst assign = (value, keys) => {\n const delta = /** @type {Record} */ ({})\n for (const key of keys) {\n delta[key] = value\n }\n\n return delta\n}\n\n/**\n * @template {PropertyKey} K\n * @template V\n * @param {Record} target\n *\n * @param {Record} delta\n * @param {Record} original\n * @returns {Record}\n */\n\nconst patchDict = (target, delta, original = target) => {\n const result = target === original ? { ...target } : target\n for (const entry of Object.entries(delta)) {\n const [id, value] = /** @type {[K, V|void]} */ (entry)\n if (value == null) {\n delete result[id]\n } else {\n result[id] = value\n }\n }\n\n return result\n}\n/**\n *\n * @param {Iterable<[Queue.NodeID, Queue.Link]>} entries\n * @param {Queue.Queue} queue\n * @returns {Queue.Queue}\n */\nexport const addLinks = (entries, queue) => {\n for (const [id, link] of entries) {\n queue = addLink(id, link, queue)\n }\n return queue\n}\n\n/**\n * @param {Queue.Queue} queue\n */\n\nexport const isEmpty = queue =>\n Object.keys(queue.nodes).length === 0 && Object.keys(queue.links).length === 0\n\n/**\n * @template T\n * @param {T[]} target\n * @param {T[]} items\n * @param {T[]} original\n */\nconst append = (target, items, original = target) => {\n if (target === original) {\n return [...target, ...items]\n } else {\n for (const item of items) {\n target.push(item)\n }\n return target\n }\n}\n\n/**\n * @param {Queue.NodeID[]} children\n * @param {Record} source\n * @returns {{has:Queue.NodeID[], wants:Queue.NodeID[], ready:Queue.Link[]}}\n */\nconst collect = (children, source) => {\n const has = []\n const wants = []\n const ready = []\n for (const child of children) {\n const link = source[child]\n if (link) {\n has.push(child)\n ready.push(link)\n } else {\n wants.push(child)\n }\n }\n\n return { has, wants, ready }\n}\n\nconst EMPTY = /** @type {never[]} */ (Object.freeze([]))\n\nconst BLANK = /** @type {Record} */ (Object.freeze({}))\n","import * as Task from \"actor\"\nimport * as API from \"./api.js\"\nimport * as Layout from \"./layout/api.js\"\nimport * as UnixFS from \"../codec.js\"\nimport * as Chunker from \"./chunker.js\"\nimport { EMPTY_BUFFER, panic, unreachable } from \"../writer/util.js\"\nimport * as Queue from \"./layout/queue.js\"\n\n/**\n * @template Layout\n * @typedef {{\n * readonly status: 'open'\n * readonly metadata: UnixFS.Metadata\n * readonly config: API.EncoderSettings\n * readonly writer: API.BlockWriter\n * chunker: Chunker.Chunker\n * layout: Layout\n * nodeQueue: Queue.Queue\n * }} Open\n */\n/**\n * @template Layout\n * @typedef {{\n * readonly status: 'closed'\n * readonly metadata: UnixFS.Metadata\n * readonly config: API.EncoderSettings\n * readonly writer: API.BlockWriter\n * readonly rootID: Layout.NodeID\n * readonly end?: Task.Fork\n * chunker?: null\n * layout?: null\n * nodeQueue: Queue.Queue\n * }} Closed\n */\n/**\n * @template Layout\n * @typedef {{\n * readonly status: 'linked'\n * readonly metadata: UnixFS.Metadata\n * readonly config: API.EncoderSettings\n * readonly writer: API.BlockWriter\n * readonly link: Layout.Link\n * chunker?: null\n * layout?: null\n * nodeQueue: Queue.Queue\n * }} Linked\n */\n\n/**\n * @template Layout\n * @typedef {Open|Closed|Linked} State\n */\n\n/**\n * @template {object} Layout\n * @typedef {{\n * state: State\n * effect: Task.Effect\n * }} Update\n */\n/**\n * @typedef {never\n * |{type:\"write\", bytes:Uint8Array}\n * |{type:\"link\", link:API.EncodedFile}\n * |{type:\"block\"}\n * |{type: \"close\"}\n * |{type: \"end\"}\n * } Message\n */\n\n/**\n * @template Layout\n * @param {Message} message\n * @param {State} state\n */\nexport const update = (message, state) => {\n switch (message.type) {\n case \"write\":\n return write(state, message.bytes)\n case \"link\":\n return link(state, message.link)\n /* c8 ignore next 2 */\n case \"block\":\n return { state, effect: Task.none() }\n case \"close\":\n return close(state)\n case \"end\":\n return { state, effect: Task.none() }\n default:\n return unreachable`File Writer got unknown message ${message}`\n }\n}\n\n/**\n * @template Layout\n * @param {API.BlockWriter} writer\n * @param {UnixFS.Metadata} metadata\n * @param {API.EncoderSettings} config\n * @returns {State}\n */\nexport const init = (writer, metadata, config) => {\n return {\n status: \"open\",\n metadata,\n config,\n writer,\n chunker: Chunker.open({ chunker: config.chunker }),\n layout: config.fileLayout.open(),\n // Note: Writing in large slices e.g. 1GiB at a time creates large queues\n // with around `16353` items. Immutable version ends up copying it every\n // time state of the queue changes, which introduces significant overhead.\n // To avoid this overhead we use mutable implementation which is API\n // compatible but makes in place updates.\n // TODO: We should consider using Persistent bit-partitioned vector tries\n // instead of arrays which would provide immutable interface with neglegable\n // overhead.\n // @see https://github.com/Gozala/vectrie\n nodeQueue: Queue.mutable(),\n }\n}\n/**\n * @template Layout\n * @param {State} state\n * @param {Uint8Array} bytes\n * @returns {Update}\n */\nexport const write = (state, bytes) => {\n if (state.status === \"open\") {\n // Chunk up provided bytes\n const { chunks, ...chunker } = Chunker.write(state.chunker, bytes)\n\n // Pass chunks to layout engine to produce nodes\n const { nodes, leaves, layout } = state.config.fileLayout.write(\n state.layout,\n chunks\n )\n\n const { linked, ...nodeQueue } = Queue.addNodes(nodes, state.nodeQueue)\n\n // Create leaf encode tasks for all new leaves\n const tasks = [\n ...encodeLeaves(leaves, state.config),\n ...encodeBranches(linked, state.config),\n ]\n\n return {\n state: {\n ...state,\n chunker,\n layout,\n nodeQueue,\n },\n effect: Task.listen({\n link: Task.effects(tasks),\n }),\n }\n } else {\n return panic(\"Unable to perform write on closed file\")\n }\n}\n\n/**\n * @template Layout\n * @param {State} state\n * @param {API.EncodedFile} entry\n * @returns {Update}\n */\nexport const link = (state, { id, link, block }) => {\n let { linked, ...nodeQueue } = Queue.addLink(id, link, state.nodeQueue)\n\n const tasks = encodeBranches(linked, state.config)\n\n /** @type {State} */\n const newState =\n state.status === \"closed\" && id === state.rootID\n ? {\n ...state,\n status: \"linked\",\n link,\n nodeQueue,\n }\n : { ...state, nodeQueue }\n\n // If we just linked a root and there is a **suspended** \"end\" task we create\n // a task to resume it.\n const end =\n state.status === \"closed\" && id === state.rootID && state.end\n ? state.end.resume()\n : Task.none()\n\n return {\n state: newState,\n effect: Task.listen({\n link: Task.effects(tasks),\n block: writeBlock(state.writer, block),\n end,\n }),\n }\n}\n\n/**\n * @template Layout\n * @param {State} state\n * @returns {Update}\n */\nexport const close = state => {\n if (state.status === \"open\") {\n const { chunks } = Chunker.close(state.chunker)\n const { layout, ...write } = state.config.fileLayout.write(\n state.layout,\n chunks\n )\n\n const { root, ...close } = state.config.fileLayout.close(\n layout,\n state.metadata\n )\n\n const [nodes, leaves] = isLeafNode(root)\n ? [\n [...write.nodes, ...close.nodes],\n [...write.leaves, ...close.leaves, root],\n ]\n : [\n [...write.nodes, ...close.nodes, root],\n [...write.leaves, ...close.leaves],\n ]\n\n const { linked, ...nodeQueue } = Queue.addNodes(nodes, state.nodeQueue)\n\n const tasks = [\n ...encodeLeaves(leaves, state.config),\n ...encodeBranches(linked, state.config),\n ]\n\n // We want to keep run loop around until root node is linked. To\n // accomplish this we fork a task that suspends itself, which we will\n // resume when root is linked (see link function).\n // Below we join this forked task in our effect, this way effect is not\n // complete until task forked task is, which will do once we link the\n // root.\n const fork = Task.fork(Task.suspend())\n\n return {\n state: {\n ...state,\n chunker: null,\n layout: null,\n rootID: root.id,\n status: \"closed\",\n end: fork,\n nodeQueue,\n },\n effect: Task.listen({\n link: Task.effects(tasks),\n end: Task.join(fork),\n }),\n }\n } else {\n return { state, effect: Task.none() }\n }\n}\n\n/**\n * Creates concurrent leaf encode tasks. Each one will have an ID corresponding\n * to index in the queue.\n *\n * @param {Layout.Leaf[]} leaves\n * @param {API.EncoderSettings} config\n */\nconst encodeLeaves = (leaves, config) =>\n leaves.map(leaf => encodeLeaf(config, leaf, config.fileChunkEncoder))\n\n/**\n * @param {API.EncoderSettings} config\n * @param {Layout.Leaf} leaf\n * @param {API.FileChunkEncoder} encoder\n * @returns {Task.Task}\n */\nconst encodeLeaf = function* ({ hasher, linker }, { id, content }, encoder) {\n const bytes = encoder.encode(content ? asUint8Array(content) : EMPTY_BUFFER)\n const hash = yield* Task.wait(hasher.digest(bytes))\n const cid = linker.createLink(encoder.code, hash)\n\n const block = { cid, bytes }\n const link = /** @type {UnixFS.FileLink} */ ({\n cid,\n contentByteLength: content ? content.byteLength : 0,\n dagByteLength: bytes.byteLength,\n })\n\n return { id, block, link }\n}\n\n/**\n * @param {Queue.LinkedNode[]} nodes\n * @param {API.EncoderSettings} config\n */\nconst encodeBranches = (nodes, config) =>\n nodes.map(node => encodeBranch(config, node))\n\n/**\n * @template Layout\n * @param {API.EncoderSettings} config\n * @param {Queue.LinkedNode} node\n * @param {UnixFS.Metadata} [metadata]\n * @returns {Task.Task}\n */\nexport const encodeBranch = function* (config, { id, links }, metadata) {\n const bytes = config.fileEncoder.encode({\n type: UnixFS.NodeType.File,\n layout: \"advanced\",\n parts: links,\n metadata,\n })\n const hash = yield* Task.wait(Promise.resolve(config.hasher.digest(bytes)))\n const cid = config.linker.createLink(config.fileEncoder.code, hash)\n const block = { bytes, cid }\n const link = /** @type {UnixFS.FileLink} */ ({\n cid,\n contentByteLength: UnixFS.cumulativeContentByteLength(links),\n dagByteLength: UnixFS.cumulativeDagByteLength(bytes, links),\n })\n\n return { id, block, link }\n}\n\n/**\n * @param {API.BlockWriter} writer\n * @param {UnixFS.Block} block\n * @returns {Task.Task}\n */\n\nexport const writeBlock = function* (writer, block) {\n if ((writer.desiredSize || 0) <= 0) {\n yield* Task.wait(writer.ready)\n }\n writer.write(block)\n}\n\n/**\n *\n * @param {Uint8Array|Chunker.Chunk} buffer\n * @returns\n */\n\nconst asUint8Array = buffer =>\n buffer instanceof Uint8Array\n ? buffer\n : buffer.copyTo(new Uint8Array(buffer.byteLength), 0)\n\n/**\n * @param {Layout.Node} node\n * @returns {node is Layout.Leaf}\n */\nconst isLeafNode = node => node.children == null\n","import * as API from \"./api.js\"\n\nexport const name = \"fixed\"\n/**\n * @typedef {Object} FixedSize\n * @property {number} maxChunkSize\n */\n\n/** @type {FixedSize} */\nexport const context = {\n maxChunkSize: 262144,\n}\n\nexport const type = \"Stateless\"\n\n/**\n * @param {number} maxChunkSize\n * @returns {API.StatelessChunker}\n */\nexport const withMaxChunkSize = maxChunkSize => ({\n type: \"Stateless\",\n context: { maxChunkSize },\n name,\n cut,\n})\n\n/**\n * @param {FixedSize} maxChunkSize\n * @param {API.Chunk} buffer\n * @param {boolean} end\n * @returns {number[]}\n */\nexport const cut = ({ maxChunkSize }, { byteLength }, end) => {\n // number of fixed size chunks that would fit\n const n = (byteLength / maxChunkSize) | 0\n const chunks = new Array(n).fill(maxChunkSize)\n const lastChunkSize = end ? byteLength - n * maxChunkSize : 0\n if (lastChunkSize > 0) {\n chunks.push(lastChunkSize)\n }\n return chunks\n}\n","import * as Digest from './digest.js';\nexport function from({ name, code, encode }) {\n return new Hasher(name, code, encode);\n}\n/**\n * Hasher represents a hashing algorithm implementation that produces as\n * `MultihashDigest`.\n */\nexport class Hasher {\n name;\n code;\n encode;\n constructor(name, code, encode) {\n this.name = name;\n this.code = code;\n this.encode = encode;\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 }\n else {\n throw Error('Unknown type, must be binary type');\n /* c8 ignore next 1 */\n }\n }\n}\n//# sourceMappingURL=hasher.js.map","/* global crypto */\nimport { from } from './hasher.js';\nfunction sha(name) {\n return async (data) => new Uint8Array(await crypto.subtle.digest(name, data));\n}\nexport const sha256 = from({\n name: 'sha2-256',\n code: 0x12,\n encode: sha('SHA-256')\n});\nexport const sha512 = from({\n name: 'sha2-512',\n code: 0x13,\n encode: sha('SHA-512')\n});\n//# sourceMappingURL=sha2-browser.js.map","import * as Layout from \"./api.js\"\nimport * as Chunker from \"./../chunker/api.js\"\n\n/**\n * Type representing a state of the balanced tree. First row hold leaves coming\n * into a builder, once number of leaves in the stack reaches `maxChildren` they\n * are moved into `RootNode` instance which is pushed into the next row of nodes.\n * If next row now contains `maxChildren` nodes from there are again moved into\n * a new `RootNode` and pushed into next row etc...\n *\n * For illustration let's assume we have `maxChildren: 3`, after 3 leafs were\n * added tree will have following layout\n *\n * ```\n * (root1)\n * |\n * ----------------------\n * | | |\n * (leaf1) (leaf2) (leaf3)\n * ```\n *\n * Which in our model before flushing is represented as follows:\n *\n * ```js\n * {\n * width: 3\n * leafIndex: [leaf1, leaf2, leaf3]\n * nodeIndex: []\n * nodes: []\n * }\n * ```\n *\n * After flushing 3 leaves (which is width) are moved into a `RootNode` that\n * is added to `nodes` array (and returned so that caller can create a block).\n * Additionally position of the added node is captured in the `index` at an\n * appropriate depth `0` (that is because we don't count leaves into depth).\n *\n * ```js\n * {\n * width: 3\n * leafIndex: []\n * nodeIndex: [[0]]\n * nodes: [new RootNode([leaf1, leaf2, leaf3])]\n * }\n * ```\n *\n * Increasing number of leaves to 10 would produce following tree layout\n *\n *```\n * (root7)\n * |\n * ------------------------------------------\n * | |\n * (root4) (root6)\n * | |\n * ------------------------------------------------- |\n * | | | |\n * (root1) (root2) (root3) (root5)\n * | | | |\n * --------|-------- --------|-------- --------|-------- |\n * | | | | | | | | | |\n * (leaf1) (leaf2) (leaf3) (leaf4) (leaf5) (leaf6) (leaf7) (leaf8) (leaf9) (leaf10)\n * ```\n *\n * Which in our model will look as follows (note we do not have root5 - root7\n * in model because they are build once width is reached or once builder is\n * closed)\n *\n * ```js\n * {\n * width: 3\n * leafIndex: [leaf10]\n * nodeIndex: [\n * [0, 1, 2], // [r1, r2, r3]\n * [3] // [r4]\n * ]\n * nodes: [\n * new Node([leaf1, leaf2, leaf3]), // r1\n * new Node([leaf4, leaf5, leaf6]), // r2\n * new Node([leaf7, leaf8, leaf9]), // r3\n * new Node([ // r4\n * new Node([leaf1, leaf2, leaf3]), // r1\n * new Node([leaf4, leaf5, leaf6]), // r2\n * new Node([leaf7, leaf8, leaf9]), // r3\n * ])\n * ]\n * }\n * ```\n *\n * @typedef {{\n * width: number\n * head: Chunker.Chunk | null\n * leafIndex: number[]\n * nodeIndex: number[][]\n * lastID: number\n * }} Balanced\n */\n\nclass Node {\n /**\n *\n * @param {number} id\n * @param {number[]} children\n * @param {Layout.Metadata} [metadata]\n */\n constructor(id, children, metadata) {\n this.id = id\n this.children = children\n this.metadata = metadata\n }\n}\n\n/**\n * @typedef Options\n * @property {number} width - Max children per node.\n *\n * @param {number} width\n * @returns {Layout.LayoutEngine}\n */\nexport const withWidth = width => ({\n open: () => open({ width }),\n write,\n close,\n})\n\nexport const defaults = { width: 174 }\n\n/**\n * @param {Options} options\n * @returns {Balanced}\n */\nexport const open = ({ width } = defaults) => ({\n width,\n\n head: null,\n leafIndex: [],\n nodeIndex: [],\n lastID: 0,\n})\n\n/**\n *\n * @param {Balanced} layout\n * @param {Chunker.Chunk[]} chunks\n * @returns {Layout.WriteResult}\n */\nexport const write = (layout, chunks) => {\n if (chunks.length === 0) {\n return { layout, nodes: EMPTY, leaves: EMPTY }\n } else {\n let { lastID } = layout\n // We need to hold on to the first chunk until we either get a second chunk\n // (at which point we know our layout will have branches) or until we close\n // (at which point our layout will be single leaf or node depneding on\n // metadata)\n const [head, slices] = layout.head\n ? // If we had a head we have more then two chunks (we already checked\n // chunks weren't empty) so we process head along with other chunks.\n [null, (chunks.unshift(layout.head), chunks)]\n : // If we have no head no leaves and got only one chunk we have to save it\n // until we can decide what to do with it.\n chunks.length === 1 && layout.leafIndex.length === 0\n ? [chunks[0], EMPTY]\n : // Otherwise we have no head but got enough chunks to know we'll have a\n // node.\n [null, chunks]\n\n if (slices.length === 0) {\n return { layout: { ...layout, head }, nodes: EMPTY, leaves: EMPTY }\n } else {\n const leafIndex = [...layout.leafIndex]\n const leaves = []\n for (const chunk of slices) {\n const leaf = { id: ++lastID, content: chunk }\n leaves.push(leaf)\n leafIndex.push(leaf.id)\n }\n\n if (leafIndex.length > layout.width) {\n return flush({ ...layout, leafIndex, head, lastID }, leaves)\n } else {\n return {\n layout: { ...layout, head, leafIndex, lastID },\n leaves,\n nodes: EMPTY,\n }\n }\n }\n }\n}\n\n/**\n * @param {Balanced} state\n * @param {Layout.Leaf[]} leaves\n * @param {Layout.Branch[]} [nodes]\n * @param {boolean} [close]\n * @returns {Layout.WriteResult}\n */\nexport const flush = (state, leaves = EMPTY, nodes = [], close = false) => {\n let { lastID } = state\n const nodeIndex = state.nodeIndex.map(row => [...row])\n const leafIndex = [...state.leafIndex]\n const { width } = state\n\n // Move leaves into nodes\n while (leafIndex.length > width || (leafIndex.length > 0 && close)) {\n grow(nodeIndex, 1)\n const node = new Node(++lastID, leafIndex.splice(0, width))\n nodeIndex[0].push(node.id)\n nodes.push(node)\n }\n\n let depth = 0\n while (depth < nodeIndex.length) {\n const row = nodeIndex[depth]\n depth++\n\n while (\n row.length > width ||\n (row.length > 0 && close && depth < nodeIndex.length)\n ) {\n const node = new Node(++lastID, row.splice(0, width))\n grow(nodeIndex, depth + 1)\n nodeIndex[depth].push(node.id)\n nodes.push(node)\n }\n }\n\n return { layout: { ...state, lastID, leafIndex, nodeIndex }, leaves, nodes }\n}\n\n/**\n * @param {Balanced} layout\n * @param {Layout.Metadata} [metadata]\n * @returns {Layout.CloseResult}\n */\nexport const close = (layout, metadata) => {\n const state = layout\n if (layout.head) {\n return {\n root: { id: 1, content: layout.head, metadata },\n leaves: EMPTY,\n nodes: EMPTY,\n }\n } else if (layout.leafIndex.length === 0) {\n return {\n root: { id: 1, metadata },\n leaves: EMPTY,\n nodes: EMPTY,\n }\n } else {\n // Flush with width 1 so all the items will be propagate up the tree\n // and height of `depth-1` so we propagate nodes all but from the top\n // most level\n const { nodes, layout } = flush(state, EMPTY, [], true)\n\n const { nodeIndex } = layout\n const height = nodeIndex.length - 1\n\n const top = nodeIndex[height]\n if (top.length === 1) {\n const root = nodes[nodes.length - 1]\n nodes.length = nodes.length - 1\n return { root, nodes, leaves: EMPTY }\n } else {\n const root = new Node(layout.lastID + 1, top, metadata)\n return { root, nodes, leaves: EMPTY }\n }\n }\n}\n\n/**\n * @template T\n * @param {T[][]} index\n * @param {number} length\n */\nconst grow = (index, length) => {\n while (index.length < length) {\n index.push([])\n }\n return index\n}\n\n/** @type {never[]} */\nconst EMPTY = []\n","import * as API from \"./file/api.js\"\nimport * as UnixFS from \"./codec.js\"\nimport * as Writer from \"./file/writer.js\"\nimport * as Task from \"actor\"\nimport { panic } from \"./writer/util.js\"\nimport * as FixedSize from \"./file/chunker/fixed.js\"\nimport { sha256 } from \"multiformats/hashes/sha2\"\nimport { CID } from \"multiformats/cid\"\nimport * as Balanced from \"./file/layout/balanced.js\"\n\nexport * from \"./file/api.js\"\n\n/**\n * @returns {API.EncoderSettings}\n */\nexport const defaults = () => ({\n chunker: FixedSize,\n fileChunkEncoder: UnixFSLeaf,\n smallFileEncoder: UnixFSLeaf,\n fileEncoder: UnixFS,\n fileLayout: Balanced.withWidth(174),\n hasher: sha256,\n linker: { createLink: CID.createV1 },\n})\n\n/**\n * @template {unknown} Layout\n * @param {Partial>} config\n * @returns {API.EncoderSettings}\n */\nexport const configure = config => ({\n ...defaults(),\n ...config,\n})\n\nexport const UnixFSLeaf = {\n code: UnixFS.code,\n name: UnixFS.name,\n encode: UnixFS.encodeFileChunk,\n}\n\nexport const UnixFSRawLeaf = {\n code: UnixFS.code,\n name: UnixFS.name,\n encode: UnixFS.encodeRaw,\n}\n\n/**\n * @template Layout\n * @param {API.Options} options\n * @returns {API.View}\n */\nexport const create = ({ writer, metadata = {}, settings = defaults() }) =>\n new FileWriterView(Writer.init(writer, metadata, configure(settings)))\n\n/**\n * @template T\n * @param {API.View} view\n * @param {Uint8Array} bytes\n * @return {Promise>}\n */\n\nexport const write = async (view, bytes) => {\n await perform(view, Task.send({ type: \"write\", bytes }))\n return view\n}\n\n/**\n * @template T\n * @param {API.View} view\n * @param {API.CloseOptions} options\n */\nexport const close = async (\n view,\n { releaseLock = false, closeWriter = false } = {}\n) => {\n await perform(view, Task.send({ type: \"close\" }))\n const { state } = view\n if (state.status === \"linked\") {\n if (closeWriter) {\n await view.state.writer.close()\n } else if (releaseLock) {\n view.state.writer.releaseLock()\n }\n return state.link\n /* c8 ignore next 5 */\n } else {\n panic(\n `Expected writer to be in 'linked' state after close, but it is in \"${state.status}\" instead`\n )\n }\n}\n\n/**\n * @template T\n * @param {API.View} view\n * @param {Task.Effect} effect\n */\nconst perform = (view, effect) =>\n Task.fork(\n Task.loop(effect, message => {\n const { state, effect } = Writer.update(message, view.state)\n view.state = state\n return effect\n })\n )\n\n/**\n * @template Layout\n * @implements {API.View}\n */\nclass FileWriterView {\n /**\n * @param {Writer.State} state\n */\n constructor(state) {\n this.state = state\n }\n get writer() {\n return this.state.writer\n }\n get settings() {\n return this.state.config\n }\n /**\n * @param {Uint8Array} bytes\n * @returns {Promise>}\n */\n write(bytes) {\n return write(this, bytes)\n }\n /**\n * @param {API.CloseOptions} [options]\n * @returns {Promise}\n */\n close(options) {\n return close(this, options)\n }\n}\n","import * as API from \"./directory/api.js\"\nimport * as File from \"./file.js\"\nimport * as UnixFS from \"./codec.js\"\nexport * from \"./directory/api.js\"\n\nexport const configure = File.configure\nexport const defaults = File.defaults\n\n/**\n * @template [Layout=unknown]\n * @param {API.Options} config\n * @returns {API.View}\n */\nexport const create = ({ writer, settings = defaults(), metadata = {} }) =>\n new DirectoryWriter({\n writer,\n metadata,\n settings,\n entries: new Map(),\n closed: false,\n })\n\n/**\n * @template {unknown} L\n * @template {{ state: API.State }} View\n * @param {View} view\n * @param {string} name\n * @param {API.EntryLink} link\n * @param {API.WriteOptions} options\n */\nexport const set = (view, name, link, { overwrite = false } = {}) => {\n const writable = asWritable(view.state)\n if (name.includes(\"/\")) {\n throw new Error(\n `Directory entry name \"${name}\" contains forbidden \"/\" character`\n )\n }\n if (!overwrite && writable.entries.has(name)) {\n throw new Error(`Directory already contains entry with name \"${name}\"`)\n } else {\n writable.entries.set(name, link)\n return view\n }\n}\n\n/**\n * @template {unknown} L\n * @template {{ state: API.State }} View\n * @param {View} view\n * @param {string} name\n */\nexport const remove = (view, name) => {\n const writer = asWritable(view.state)\n writer.entries.delete(name)\n return view\n}\n\n/**\n * @template {API.State} Writer\n * @param {Writer} writer\n * @returns {Writer}\n */\nconst asWritable = writer => {\n if (!writer.closed) {\n return writer\n } else {\n throw new Error(\n `Can not change written directory, but you can .fork() and make changes to it`\n )\n }\n}\n\n/**\n * @template {unknown} Layout\n * @param {{ state: API.State }} view\n * @param {API.CloseOptions} options\n * @returns {Promise}\n */\nexport const close = async (\n view,\n { closeWriter = false, releaseLock = false } = {}\n) => {\n const { writer, settings, metadata } = asWritable(view.state)\n view.state.closed = true\n const entries = [...links(view)]\n const node = UnixFS.createFlatDirectory(entries, metadata)\n const bytes = UnixFS.encodeDirectory(node)\n const digest = await settings.hasher.digest(bytes)\n /** @type {UnixFS.Link} */\n const cid = settings.linker.createLink(UnixFS.code, digest)\n\n // we make sure that writer has some capacity for this write. If it\n // does not we await.\n if ((writer.desiredSize || 0) <= 0) {\n await writer.ready\n }\n // once writer has some capacity we write a block, however we do not\n // await completion as we don't care when it's taken off the stream.\n writer.write({ cid, bytes })\n\n if (closeWriter) {\n await writer.close()\n } else if (releaseLock) {\n writer.releaseLock()\n }\n\n return {\n cid,\n dagByteLength: UnixFS.cumulativeDagByteLength(bytes, entries),\n }\n}\n\n/**\n * @template {unknown} Layout\n * @param {{ state: API.State }} view\n * @returns {IterableIterator}\n */\nexport const links = function* ({ state }) {\n for (const [name, { dagByteLength, cid }] of state.entries) {\n yield /** @type {UnixFS.DirectoryEntryLink} */ ({\n name,\n dagByteLength,\n cid,\n })\n }\n}\n\n/**\n * @template L1, L2\n * @param {API.View} state\n * @param {Partial>} options\n * @returns {API.View}\n */\nexport const fork = (\n { state },\n {\n writer = state.writer,\n metadata = state.metadata,\n settings = state.settings,\n } = {}\n) =>\n new DirectoryWriter({\n writer,\n metadata,\n settings,\n entries: new Map(state.entries.entries()),\n closed: false,\n })\n\n/**\n * @template [Layout=unknown]\n * @implements {API.View}\n */\nclass DirectoryWriter {\n /**\n * @param {API.State} state\n */\n constructor(state) {\n this.state = state\n }\n get writer() {\n return this.state.writer\n }\n get settings() {\n return this.state.settings\n }\n\n links() {\n return links(this)\n }\n\n /**\n * @param {string} name\n * @param {UnixFS.FileLink | UnixFS.DirectoryLink} link\n * @param {API.WriteOptions} [options]\n */\n\n set(name, link, options) {\n return set(this, name, link, options)\n }\n\n /**\n * @param {string} name\n */\n remove(name) {\n return remove(this, name)\n }\n\n /**\n * @template L\n * @param {Partial>} [options]\n * @returns {API.View}\n */\n fork(options) {\n return fork(this, options)\n }\n\n /**\n * @param {API.CloseOptions} [options]\n * @returns {Promise}\n */\n close(options) {\n return close(this, options)\n }\n\n entries() {\n return this.state.entries.entries()\n }\n /**\n * @param {string} name\n */\n has(name) {\n return this.state.entries.has(name)\n }\n get size() {\n return this.state.entries.size\n }\n}\n","import * as API from \"./api.js\"\n\nexport { API }\n\n/**\n * @param {API.Uint32} size\n */\nexport const empty = (size = 32) => {\n // We could support < 32, but it seems impractical and would negatively affect\n // performance as we would have to do extra bound checks.\n if (size !== 32) {\n throw new Error(`Uint32 BitField does not support size: ${size}`)\n }\n\n return 0\n}\n\n/**\n * @param {API.Uint32[]} bits\n * @param {API.Uint32} [size]\n */\nexport const from = (bits, size) => {\n let bitfield = empty(size)\n for (const bit of bits) {\n bitfield = set(bitfield, bit)\n }\n return bitfield\n}\n\n/**\n * @param {API.Uint32} _bitField\n */\nexport const size = _bitField => 32\n\n/**\n * Reads out 5 bits at the given bit offset.\n *\n * @param {API.Uint32} bitField - Bitfield in Uint32 representation.\n * @param {API.Uint32} index - Index with-in `bitField` to read bits from.\n * @returns {API.Uint32}\n */\nconst mask = (bitField, index) => (bitField >>> index) & 0b11111\n\n/**\n * Creates mask that can be used to check a bit in nodes bitmap for the give\n * key (hash) at given depth.\n *\n * @param {API.Uint32} bitField - Key hash as 32 bit integer.\n * @param {API.Uint32} index - Index with-in the 32bit bitfield\n */\nconst offset = (bitField, index) => 1 << mask(bitField, index)\n\n/**\n * Maps numbers [0, 31] to powers of two. Creates mask that can be used\n * to check a bit in nodes bitmap for the give key (hash) at given depth.\n *\n * @param {API.Uint32} bitField - Key hash as 32 bit integer.\n * @param {API.Uint32} index - Index with-in the 32bit bitfield\n */\nexport const popcount = (bitField, index = 31) =>\n bitCount(bitField & (offset(index, 0) - 1))\n\n/**\n * @param {API.Uint32} bitField\n * @param {API.Uint32} index\n */\nexport const set = (bitField, index) => bitField | (1 << index)\n\n/**\n * @param {API.Uint32} bitField\n * @param {API.Uint32} index\n */\nexport const unset = (bitField, index) => bitField & (0xff ^ (1 << index))\n\n/**\n * @param {API.Uint32} bitField\n * @param {API.Uint32} index\n */\nexport const get = (bitField, index) => ((bitField >> index) & 0x1) !== 0\n\n/**\n * Counts the number of bits set in n\n * @param {API.Uint32} bitField\n */\nexport const bitCount = bitField => {\n const n1 = bitField - ((bitField >> 1) & 0x55555555)\n const n2 = (n1 & 0x33333333) + ((n1 >> 2) & 0x33333333)\n const n3 = ((n2 + (n2 >> 4)) & 0xf0f0f0f) * 0x1010101\n return n3 >> 24\n}\n\n/**\n * @param {API.Uint32} left\n * @param {API.Uint32} right\n * @returns {API.Uint32}\n */\nexport const and = (left, right) => left & right\n\n/**\n * @param {API.Uint32} left\n * @param {API.Uint32} right\n * @returns {API.Uint32}\n */\nexport const or = (left, right) => left | right\n\n/**\n * Counts the number of bits set in n\n * @param {API.Uint32} bitField\n * @returns {Uint8Array}\n */\nexport const toBytes = bitField =>\n Uint8Array.of(\n (bitField >> 24) & 0b1111_1111,\n (bitField >> 16) & 0b1111_1111,\n (bitField >> 8) & 0b1111_1111,\n bitField & 0b1111_1111\n )\n\n/**\n *\n * @param {Uint8Array} bytes\n * @returns {API.Uint32}\n */\nexport const fromBytes = bytes => {\n if (bytes.length !== 4) {\n throw new Error(`Expected 4 bytes instead got ${bytes.length}`)\n }\n return (bytes[0] << 24) + (bytes[1] << 16) + (bytes[2] << 8) + bytes[3]\n}\n","/* jshint -W086: true */\n// +----------------------------------------------------------------------+\n// | murmurHash3js.js v3.0.1 // https://github.com/pid/murmurHash3js\n// | A javascript implementation of MurmurHash3's x86 hashing algorithms. |\n// |----------------------------------------------------------------------|\n// | Copyright (c) 2012-2015 Karan Lyons |\n// | https://github.com/karanlyons/murmurHash3.js/blob/c1778f75792abef7bdd74bc85d2d4e1a3d25cfe9/murmurHash3.js |\n// | Freely distributable under the MIT license. |\n// +----------------------------------------------------------------------+\n\n;(function (root, undefined) {\n 'use strict';\n\n // Create a local object that'll be exported or referenced globally.\n var library = {\n 'version': '3.0.0',\n 'x86': {},\n 'x64': {},\n 'inputValidation': true\n };\n\n // PRIVATE FUNCTIONS\n // -----------------\n\n function _validBytes(bytes) {\n // check the input is an array or a typed array\n if (!Array.isArray(bytes) && !ArrayBuffer.isView(bytes)) {\n return false;\n }\n\n // check all bytes are actually bytes\n for (var i = 0; i < bytes.length; i++) {\n if (!Number.isInteger(bytes[i]) || bytes[i] < 0 || bytes[i] > 255) {\n return false;\n }\n }\n return true;\n }\n\n function _x86Multiply(m, n) {\n //\n // Given two 32bit ints, returns the two multiplied together as a\n // 32bit int.\n //\n\n return ((m & 0xffff) * n) + ((((m >>> 16) * n) & 0xffff) << 16);\n }\n\n function _x86Rotl(m, n) {\n //\n // Given a 32bit int and an int representing a number of bit positions,\n // returns the 32bit int rotated left by that number of positions.\n //\n\n return (m << n) | (m >>> (32 - n));\n }\n\n function _x86Fmix(h) {\n //\n // Given a block, returns murmurHash3's final x86 mix of that block.\n //\n\n h ^= h >>> 16;\n h = _x86Multiply(h, 0x85ebca6b);\n h ^= h >>> 13;\n h = _x86Multiply(h, 0xc2b2ae35);\n h ^= h >>> 16;\n\n return h;\n }\n\n function _x64Add(m, n) {\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // added together as a 64bit int (as an array of two 32bit ints).\n //\n\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\n var o = [0, 0, 0, 0];\n\n o[3] += m[3] + n[3];\n o[2] += o[3] >>> 16;\n o[3] &= 0xffff;\n\n o[2] += m[2] + n[2];\n o[1] += o[2] >>> 16;\n o[2] &= 0xffff;\n\n o[1] += m[1] + n[1];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[0] += m[0] + n[0];\n o[0] &= 0xffff;\n\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\n }\n\n function _x64Multiply(m, n) {\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // multiplied together as a 64bit int (as an array of two 32bit ints).\n //\n\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff];\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff];\n var o = [0, 0, 0, 0];\n\n o[3] += m[3] * n[3];\n o[2] += o[3] >>> 16;\n o[3] &= 0xffff;\n\n o[2] += m[2] * n[3];\n o[1] += o[2] >>> 16;\n o[2] &= 0xffff;\n\n o[2] += m[3] * n[2];\n o[1] += o[2] >>> 16;\n o[2] &= 0xffff;\n\n o[1] += m[1] * n[3];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[1] += m[2] * n[2];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[1] += m[3] * n[1];\n o[0] += o[1] >>> 16;\n o[1] &= 0xffff;\n\n o[0] += (m[0] * n[3]) + (m[1] * n[2]) + (m[2] * n[1]) + (m[3] * n[0]);\n o[0] &= 0xffff;\n\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]];\n }\n\n function _x64Rotl(m, n) {\n //\n // Given a 64bit int (as an array of two 32bit ints) and an int\n // representing a number of bit positions, returns the 64bit int (as an\n // array of two 32bit ints) rotated left by that number of positions.\n //\n\n n %= 64;\n\n if (n === 32) {\n return [m[1], m[0]];\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), (m[1] << n) | (m[0] >>> (32 - n))];\n } else {\n n -= 32;\n return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))];\n }\n }\n\n function _x64LeftShift(m, n) {\n //\n // Given a 64bit int (as an array of two 32bit ints) and an int\n // representing a number of bit positions, returns the 64bit int (as an\n // array of two 32bit ints) shifted left by that number of positions.\n //\n\n n %= 64;\n\n if (n === 0) {\n return m;\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), m[1] << n];\n } else {\n return [m[1] << (n - 32), 0];\n }\n }\n\n function _x64Xor(m, n) {\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // xored together as a 64bit int (as an array of two 32bit ints).\n //\n\n return [m[0] ^ n[0], m[1] ^ n[1]];\n }\n\n function _x64Fmix(h) {\n //\n // Given a block, returns murmurHash3's final x64 mix of that block.\n // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\n // only place where we need to right shift 64bit ints.)\n //\n\n h = _x64Xor(h, [0, h[0] >>> 1]);\n h = _x64Multiply(h, [0xff51afd7, 0xed558ccd]);\n h = _x64Xor(h, [0, h[0] >>> 1]);\n h = _x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53]);\n h = _x64Xor(h, [0, h[0] >>> 1]);\n\n return h;\n }\n\n // PUBLIC FUNCTIONS\n // ----------------\n\n library.x86.hash32 = function (bytes, seed) {\n //\n // Given a string and an optional seed as an int, returns a 32 bit hash\n // using the x86 flavor of MurmurHash3, as an unsigned int.\n //\n if (library.inputValidation && !_validBytes(bytes)) {\n return undefined;\n }\n seed = seed || 0;\n\n var remainder = bytes.length % 4;\n var blocks = bytes.length - remainder;\n\n var h1 = seed;\n\n var k1 = 0;\n\n var c1 = 0xcc9e2d51;\n var c2 = 0x1b873593;\n\n for (var i = 0; i < blocks; i = i + 4) {\n k1 = (bytes[i]) | (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24);\n\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n\n h1 ^= k1;\n h1 = _x86Rotl(h1, 13);\n h1 = _x86Multiply(h1, 5) + 0xe6546b64;\n }\n\n k1 = 0;\n\n switch (remainder) {\n case 3:\n k1 ^= bytes[i + 2] << 16;\n\n case 2:\n k1 ^= bytes[i + 1] << 8;\n\n case 1:\n k1 ^= bytes[i];\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n h1 ^= k1;\n }\n\n h1 ^= bytes.length;\n h1 = _x86Fmix(h1);\n\n return h1 >>> 0;\n };\n\n library.x86.hash128 = function (bytes, seed) {\n //\n // Given a string and an optional seed as an int, returns a 128 bit\n // hash using the x86 flavor of MurmurHash3, as an unsigned hex.\n //\n if (library.inputValidation && !_validBytes(bytes)) {\n return undefined;\n }\n\n seed = seed || 0;\n var remainder = bytes.length % 16;\n var blocks = bytes.length - remainder;\n\n var h1 = seed;\n var h2 = seed;\n var h3 = seed;\n var h4 = seed;\n\n var k1 = 0;\n var k2 = 0;\n var k3 = 0;\n var k4 = 0;\n\n var c1 = 0x239b961b;\n var c2 = 0xab0e9789;\n var c3 = 0x38b34ae5;\n var c4 = 0xa1e38b93;\n\n for (var i = 0; i < blocks; i = i + 16) {\n k1 = (bytes[i]) | (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24);\n k2 = (bytes[i + 4]) | (bytes[i + 5] << 8) | (bytes[i + 6] << 16) | (bytes[i + 7] << 24);\n k3 = (bytes[i + 8]) | (bytes[i + 9] << 8) | (bytes[i + 10] << 16) | (bytes[i + 11] << 24);\n k4 = (bytes[i + 12]) | (bytes[i + 13] << 8) | (bytes[i + 14] << 16) | (bytes[i + 15] << 24);\n\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n h1 ^= k1;\n\n h1 = _x86Rotl(h1, 19);\n h1 += h2;\n h1 = _x86Multiply(h1, 5) + 0x561ccd1b;\n\n k2 = _x86Multiply(k2, c2);\n k2 = _x86Rotl(k2, 16);\n k2 = _x86Multiply(k2, c3);\n h2 ^= k2;\n\n h2 = _x86Rotl(h2, 17);\n h2 += h3;\n h2 = _x86Multiply(h2, 5) + 0x0bcaa747;\n\n k3 = _x86Multiply(k3, c3);\n k3 = _x86Rotl(k3, 17);\n k3 = _x86Multiply(k3, c4);\n h3 ^= k3;\n\n h3 = _x86Rotl(h3, 15);\n h3 += h4;\n h3 = _x86Multiply(h3, 5) + 0x96cd1c35;\n\n k4 = _x86Multiply(k4, c4);\n k4 = _x86Rotl(k4, 18);\n k4 = _x86Multiply(k4, c1);\n h4 ^= k4;\n\n h4 = _x86Rotl(h4, 13);\n h4 += h1;\n h4 = _x86Multiply(h4, 5) + 0x32ac3b17;\n }\n\n k1 = 0;\n k2 = 0;\n k3 = 0;\n k4 = 0;\n\n switch (remainder) {\n case 15:\n k4 ^= bytes[i + 14] << 16;\n\n case 14:\n k4 ^= bytes[i + 13] << 8;\n\n case 13:\n k4 ^= bytes[i + 12];\n k4 = _x86Multiply(k4, c4);\n k4 = _x86Rotl(k4, 18);\n k4 = _x86Multiply(k4, c1);\n h4 ^= k4;\n\n case 12:\n k3 ^= bytes[i + 11] << 24;\n\n case 11:\n k3 ^= bytes[i + 10] << 16;\n\n case 10:\n k3 ^= bytes[i + 9] << 8;\n\n case 9:\n k3 ^= bytes[i + 8];\n k3 = _x86Multiply(k3, c3);\n k3 = _x86Rotl(k3, 17);\n k3 = _x86Multiply(k3, c4);\n h3 ^= k3;\n\n case 8:\n k2 ^= bytes[i + 7] << 24;\n\n case 7:\n k2 ^= bytes[i + 6] << 16;\n\n case 6:\n k2 ^= bytes[i + 5] << 8;\n\n case 5:\n k2 ^= bytes[i + 4];\n k2 = _x86Multiply(k2, c2);\n k2 = _x86Rotl(k2, 16);\n k2 = _x86Multiply(k2, c3);\n h2 ^= k2;\n\n case 4:\n k1 ^= bytes[i + 3] << 24;\n\n case 3:\n k1 ^= bytes[i + 2] << 16;\n\n case 2:\n k1 ^= bytes[i + 1] << 8;\n\n case 1:\n k1 ^= bytes[i];\n k1 = _x86Multiply(k1, c1);\n k1 = _x86Rotl(k1, 15);\n k1 = _x86Multiply(k1, c2);\n h1 ^= k1;\n }\n\n h1 ^= bytes.length;\n h2 ^= bytes.length;\n h3 ^= bytes.length;\n h4 ^= bytes.length;\n\n h1 += h2;\n h1 += h3;\n h1 += h4;\n h2 += h1;\n h3 += h1;\n h4 += h1;\n\n h1 = _x86Fmix(h1);\n h2 = _x86Fmix(h2);\n h3 = _x86Fmix(h3);\n h4 = _x86Fmix(h4);\n\n h1 += h2;\n h1 += h3;\n h1 += h4;\n h2 += h1;\n h3 += h1;\n h4 += h1;\n\n return (\"00000000\" + (h1 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h3 >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h4 >>> 0).toString(16)).slice(-8);\n };\n\n library.x64.hash128 = function (bytes, seed) {\n //\n // Given a string and an optional seed as an int, returns a 128 bit\n // hash using the x64 flavor of MurmurHash3, as an unsigned hex.\n //\n if (library.inputValidation && !_validBytes(bytes)) {\n return undefined;\n }\n seed = seed || 0;\n\n var remainder = bytes.length % 16;\n var blocks = bytes.length - remainder;\n\n var h1 = [0, seed];\n var h2 = [0, seed];\n\n var k1 = [0, 0];\n var k2 = [0, 0];\n\n var c1 = [0x87c37b91, 0x114253d5];\n var c2 = [0x4cf5ad43, 0x2745937f];\n\n for (var i = 0; i < blocks; i = i + 16) {\n k1 = [(bytes[i + 4]) | (bytes[i + 5] << 8) | (bytes[i + 6] << 16) | (bytes[i + 7] << 24), (bytes[i]) |\n (bytes[i + 1] << 8) | (bytes[i + 2] << 16) | (bytes[i + 3] << 24)];\n k2 = [(bytes[i + 12]) | (bytes[i + 13] << 8) | (bytes[i + 14] << 16) | (bytes[i + 15] << 24), (bytes[i + 8]) |\n (bytes[i + 9] << 8) | (bytes[i + 10] << 16) | (bytes[i + 11] << 24)];\n\n k1 = _x64Multiply(k1, c1);\n k1 = _x64Rotl(k1, 31);\n k1 = _x64Multiply(k1, c2);\n h1 = _x64Xor(h1, k1);\n\n h1 = _x64Rotl(h1, 27);\n h1 = _x64Add(h1, h2);\n h1 = _x64Add(_x64Multiply(h1, [0, 5]), [0, 0x52dce729]);\n\n k2 = _x64Multiply(k2, c2);\n k2 = _x64Rotl(k2, 33);\n k2 = _x64Multiply(k2, c1);\n h2 = _x64Xor(h2, k2);\n\n h2 = _x64Rotl(h2, 31);\n h2 = _x64Add(h2, h1);\n h2 = _x64Add(_x64Multiply(h2, [0, 5]), [0, 0x38495ab5]);\n }\n\n k1 = [0, 0];\n k2 = [0, 0];\n\n switch (remainder) {\n case 15:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 14]], 48));\n\n case 14:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 13]], 40));\n\n case 13:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 12]], 32));\n\n case 12:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 11]], 24));\n\n case 11:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 10]], 16));\n\n case 10:\n k2 = _x64Xor(k2, _x64LeftShift([0, bytes[i + 9]], 8));\n\n case 9:\n k2 = _x64Xor(k2, [0, bytes[i + 8]]);\n k2 = _x64Multiply(k2, c2);\n k2 = _x64Rotl(k2, 33);\n k2 = _x64Multiply(k2, c1);\n h2 = _x64Xor(h2, k2);\n\n case 8:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 7]], 56));\n\n case 7:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 6]], 48));\n\n case 6:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 5]], 40));\n\n case 5:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 4]], 32));\n\n case 4:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 3]], 24));\n\n case 3:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 2]], 16));\n\n case 2:\n k1 = _x64Xor(k1, _x64LeftShift([0, bytes[i + 1]], 8));\n\n case 1:\n k1 = _x64Xor(k1, [0, bytes[i]]);\n k1 = _x64Multiply(k1, c1);\n k1 = _x64Rotl(k1, 31);\n k1 = _x64Multiply(k1, c2);\n h1 = _x64Xor(h1, k1);\n }\n\n h1 = _x64Xor(h1, [0, bytes.length]);\n h2 = _x64Xor(h2, [0, bytes.length]);\n\n h1 = _x64Add(h1, h2);\n h2 = _x64Add(h2, h1);\n\n h1 = _x64Fmix(h1);\n h2 = _x64Fmix(h2);\n\n h1 = _x64Add(h1, h2);\n h2 = _x64Add(h2, h1);\n\n return (\"00000000\" + (h1[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h1[1] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[0] >>> 0).toString(16)).slice(-8) + (\"00000000\" + (h2[1] >>> 0).toString(16)).slice(-8);\n };\n\n // INITIALIZATION\n // --------------\n\n // Export murmurHash3 for CommonJS, either as an AMD module or just as part\n // of the global object.\n if (typeof exports !== 'undefined') {\n\n if (typeof module !== 'undefined' && module.exports) {\n exports = module.exports = library;\n }\n\n exports.murmurHash3 = library;\n\n } else if (typeof define === 'function' && define.amd) {\n\n define([], function () {\n return library;\n });\n } else {\n\n // Use murmurHash3.noConflict to restore `murmurHash3` back to its\n // original value. Returns a reference to the library object, to allow\n // it to be used under a different name.\n library._murmurHash3 = root.murmurHash3;\n\n library.noConflict = function () {\n root.murmurHash3 = library._murmurHash3;\n library._murmurHash3 = undefined;\n library.noConflict = undefined;\n\n return library;\n };\n\n root.murmurHash3 = library;\n }\n})(this);\n","module.exports = require('./lib/murmurHash3js');\n","import * as API from \"./api.js\"\n// @ts-expect-error - has no types\nimport murmur from \"murmurhash3js-revisited\"\n\nconst utf8 = new TextEncoder()\n\n/**\n * @typedef {(bytes:Uint8Array) => API.Uint32} Hasher\n * @type {Hasher}\n */\nexport const hash32 = murmur.x64.hash126\n\n/**\n * @param {Partial>} options\n * @returns {API.Path}\n */\n/* c8 ignore next 45 */\nexport const configure = ({ bitWidth = 5, hash = hash32 }) => {\n const hashSize = 4\n if (bitWidth > hashSize * 8) {\n throw new RangeError(\n `Can not use bitWidth ${bitWidth} which exceeds the hashSize ${hashSize}`\n )\n }\n\n if (hashSize * 8 > 32) {\n throw new RangeError(\n `Can not use hashSize ${hashSize} as it can not be encoded in Uint32`\n )\n }\n\n // Mask for reading `bitWidth` number of bits from the end.\n const mask = 0xffffffff >>> (32 - bitWidth)\n\n /**\n * Determines bit position for the path entry at the given `depth`.\n * ```js\n * const key = hash(\"result\") // 0b00011010010110010101111100110010\n * // Which is following path (in reverse as we read from the right)\n * // 10010/11001/10111/10010/00101/01101/00000 -> [ 18, 25, 23, 18, 5, 13, 0 ]\n * at(key, 0) // 0b10010 -> 18\n * at(key, 1) // 0b11001 -> 25\n * at(key, 2) // 0b10111 -> 23\n * at(key, 3) // 0b10010 -> 18\n * at(key, 4) // 0b00101 -> 5\n * at(key, 5) // 0b01101 -> 13\n * at(key, 6) // 0b00000 -> 0\n * ```\n *\n * @param {API.Uint32} path\n * @param {number} depth\n */\n const at = (path, depth) => (path >>> (depth * bitWidth)) & mask\n\n /**\n * @param {string} key\n * @returns {API.Uint32}\n */\n const from = key => hash(utf8.encode(key))\n\n return { at, from, size: Math.ceil((hashSize * 8) / bitWidth) }\n}\n","import * as API from \"./api.js\"\nexport * from \"./api.js\"\nimport * as BitField from \"./bitfield/Uint32.js\"\nimport * as Path from \"./path/Uint32.js\"\nexport { API }\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @implements {API.BitmapIndexedNode}\n */\nclass BitmapIndexedNode {\n /**\n * @param {API.Edit|null} edit\n * @param {ReturnType} datamap\n * @param {ReturnType} nodemap\n * @param {API.Children} children\n * @param {C} config\n */\n constructor(edit, datamap, nodemap, children, config) {\n this.edit = edit\n this.config = config\n this.datamap = datamap\n this.nodemap = nodemap\n this.children = children\n }\n\n get nodeArity() {\n return this.config.BitField.popcount(this.nodemap)\n }\n get dataArity() {\n return this.config.BitField.popcount(this.datamap)\n }\n\n /**\n * @returns {API.BitmapIndexedNode}\n */\n /* c8 ignore next 3 */\n empty() {\n return create(this.config)\n }\n\n /**\n * @template X\n * @param {API.Uint32} depth\n * @param {ReturnType} path\n * @param {K} key\n * @param {X} notFound\n * @returns {T|X}\n */\n\n lookup(depth, path, key, notFound) {\n return lookup(this, depth, path, key, notFound)\n }\n\n /**\n * @template {string} R\n * @param {API.Edit|null} edit\n * @param {API.Uint32} depth\n * @param {ReturnType} path\n * @param {K|R} key\n * @param {T} value\n * @param {{value:boolean}} addedLeaf\n * @returns {API.BitmapIndexedNode}\n */\n associate(edit, depth, path, key, value, addedLeaf) {\n return associate(this, edit, depth, path, key, value, addedLeaf)\n }\n\n /**\n * @param {API.Edit|null} edit\n * @param {API.Uint32} depth\n * @param {ReturnType} path\n * @param {K} key\n * @param {{value:boolean}} removedLeaf\n * @returns {API.BitmapIndexedNode}\n */\n dissociate(edit, depth, path, key, removedLeaf) {\n return dissociate(this, edit, depth, path, key, removedLeaf)\n }\n\n /**\n * @param {API.Edit|null} edit\n * @returns {API.BitmapIndexedNode}\n */\n fork(edit = null) {\n return fork(this, edit)\n }\n\n /**\n * @returns {IterableIterator<[K, T]>}\n */\n entries() {\n return entries(this)\n }\n\n /**\n * @returns {IterableIterator}\n */\n keys() {\n return keys(this)\n }\n\n /**\n * @returns {IterableIterator}\n */\n values() {\n return values(this)\n }\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @implements {API.HashCollisionNode}\n */\nclass HashCollisionNode {\n /**\n * @param {API.Edit|null} edit\n * @param {number} count\n * @param {API.CollisionEntries} children\n * @param {C} config\n */\n /* c8 ignore next 12 */\n constructor(edit, count, children, config) {\n this.edit = edit\n this.count = count\n this.children = children\n this.config = config\n }\n get nodeArity() {\n return /** @type {0} */ (0)\n }\n get dataArity() {\n return this.count\n }\n\n /**\n * @template X\n * @param {API.Uint32} _shift\n * @param {unknown} _path\n * @param {K} key\n * @param {X} notFound\n * @returns {T|X}\n */\n /* c8 ignore next 3 */\n lookup(_shift, _path, key, notFound) {\n return lookupCollision(this, key, notFound)\n }\n\n /**\n * @template {string} R\n * @param {API.Edit|null} edit\n * @param {API.Uint32} _shift\n * @param {ReturnType} path\n * @param {K|R} key\n * @param {T} value\n * @param {{value:boolean}} addedLeaf\n * @returns {API.HashCollisionNode}\n */\n /* c8 ignore next 3 */\n associate(edit, _shift, path, key, value, addedLeaf) {\n return associateCollision(this, edit, path, key, value, addedLeaf)\n }\n\n /**\n * @param {API.Edit|null} edit\n * @param {API.Uint32} _shift\n * @param {ReturnType} path\n * @param {K} key\n * @param {{value:boolean}} removedLeaf\n * @returns {API.Node}\n */\n /* c8 ignore next 3 */\n dissociate(edit, _shift, path, key, removedLeaf) {\n return dissociateCollision(this, edit, path, key, removedLeaf)\n }\n\n /**\n * @param {API.Edit|null} edit\n * @returns {this}\n */\n /* c8 ignore next 3 */\n fork(edit = null) {\n return /** @type {this} */ (forkCollision(this, edit))\n }\n\n /**\n * @returns {IterableIterator<[K, T]>}\n */\n /* c8 ignore next 3 */\n entries() {\n return entries(this)\n }\n\n /**\n * @returns {IterableIterator}\n */\n /* c8 ignore next 3 */\n keys() {\n return keys(this)\n }\n\n /**\n * @returns {IterableIterator}\n */\n /* c8 ignore next 3 */\n values() {\n return values(this)\n }\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @template X\n * @param {API.HashCollisionNode} node\n * @param {K} name\n * @param {X} notFound\n * @returns {T|X}\n */\n/* c8 ignore next 8 */\nexport const lookupCollision = (node, name, notFound) => {\n const { children: entries, count } = node\n // find where entry with this name belongs\n const n = findHashCollisionNodeIndex(entries, count, name)\n // if entry name at this index matches given name return the value otherwise\n // return `notFound` as we have no such entry.\n return entries[n] === name ? /** @type {T} */ (entries[n + 1]) : notFound\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @template {string} R\n * @param {API.HashCollisionNode} node\n * @param {API.Edit|null} edit\n * @param {ReturnType} key\n * @param {K|R} name\n * @param {T} value\n * @param {{value:boolean}} addedLeaf\n * @returns {API.HashCollisionNode}\n */\n/* c8 ignore next 26 */\nexport const associateCollision = (node, edit, key, name, value, addedLeaf) => {\n const { children, count } = node\n\n const index = findHashCollisionNodeIndex(children, count, name)\n // If entry at this index has a different name we fork the node and\n // add a new entry.\n if (children[index] !== name) {\n const newNode = node.fork(edit)\n addedLeaf.value = true\n newNode.count += 1\n newNode.children.splice(index, key, value)\n return newNode\n }\n // If name is the same but value is not we fork the node and update\n // the value\n else if (children[index + 1] !== value) {\n const newNode = node.fork(edit)\n newNode.children[index + 1] = value\n return newNode\n }\n // If we got this far entry with this exact name and value is already\n // present making this a noop, so we return this node back.\n else {\n return node\n }\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.HashCollisionNode} node\n * @param {API.Edit|null} edit\n * @param {ReturnType} hash\n * @param {K} name\n * @param {{value:boolean}} removedLeaf\n * @returns {API.Node}\n */\n/* c8 ignore next 37 */\nexport const dissociateCollision = (node, edit, hash, name, removedLeaf) => {\n const { children: entries, count, config } = node\n const index = findHashCollisionNodeIndex(entries, count, name)\n // If there is no entry with a the given name this is noop so we just\n // return back this node.\n if (entries[index] !== name) {\n return node\n } else {\n removedLeaf.value = true\n // If conflict contained only two entries removing one of them would\n // leave us with no conflict which is why we create a new node with a\n // an entry other than one that would correspond provided name\n if (count === 2) {\n const offset = index === 0 ? 2 : 0\n return /** @type {API.BitmapIndexedNode} */ (\n associate(\n create(config),\n edit,\n 0,\n hash,\n /** @type {K} */ (entries[offset]),\n /** @type {T} */ (entries[offset + 1]),\n removedLeaf\n )\n )\n }\n // otherwise we got this far we have more than two colliding entries in\n // which case we simply remove one corresponding to given `name`.\n //\n else {\n const newNode = node.fork(edit)\n newNode.children.splice(index, 2)\n newNode.count -= 1\n return newNode\n }\n }\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.HashCollisionNode} node\n * @param {API.Edit|null} edit\n * @returns {API.HashCollisionNode}\n */\n/* c8 ignore next 12 */\nexport const forkCollision = (node, edit = null) => {\n if (canEdit(node.edit, edit)) {\n return node\n } else {\n return new HashCollisionNode(\n edit,\n node.count,\n /** @type {API.CollisionEntries} */ (node.children.slice()),\n node.config\n )\n }\n}\n\n/**\n * Finds the index inside collision entries where given `key` belongs, which is\n * index where `key <= entries[index]` is `true`. If no index satisfies this\n * constraint index will be `entries.length` indicating that key belongs in the\n * last position.\n *\n * @template T\n * @template {string} K\n * @param {API.CollisionEntries} entries\n * @param {number} count\n * @param {K} key\n */\n/* c8 ignore next 8 */\nconst findHashCollisionNodeIndex = (entries, count, key) => {\n let index = 0\n // increase index until we find a index where key <= entries[index]\n while (index < count && entries[index] > key) {\n index += 2\n }\n return index\n}\n\nconst defaultConfig = { bitWidth: 32, BitField, Path }\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.Edit|null} [edit]\n * @param {C} config\n * @returns {API.BitmapIndexedNode}\n */\nexport const create = (config, edit = null) =>\n new BitmapIndexedNode(\n edit,\n config.BitField.empty(Math.pow(2, config.bitWidth)),\n config.BitField.empty(Math.pow(2, config.bitWidth)),\n /** @type {API.Children} */ ([]),\n config\n )\n\n/**\n * @template T, U\n * @template {string} K\n * @param {API.BitmapIndexedNode} node\n * @param {K} key\n * @param {U} notFound\n */\nexport const get = (node, key, notFound) =>\n lookup(node, 0, node.config.Path.from(key), key, notFound)\n\n/**\n * @template T, U\n * @template {string} K\n * @template Bits, BitMap\n * @param {API.BitmapIndexedNode>} node\n * @param {API.Uint32} depth\n * @param {Bits} path\n * @param {K} key\n * @param {U} notFound\n * @returns {T|U}\n */\nexport const lookup = (node, depth, path, key, notFound) => {\n const { datamap, nodemap, config } = node\n const { Path, BitField } = config\n const offset = Path.at(path, depth)\n\n // If bit is set in the data bitmap we have some key, value under the\n // matching hash segment.\n if (BitField.get(datamap, offset)) {\n const index = BitField.popcount(datamap, offset)\n // If key matches actual key in the map we found the the value\n // otherwise we did not.\n if (keyAt(node, index) === key) {\n return valueAt(node, index)\n } else {\n return notFound\n }\n }\n // If bit is set in the node bitmapt we have a node under the\n // matching hash segment.\n else if (BitField.get(nodemap, offset)) {\n // Resolve node and continue lookup within it.\n const child = resolveNode(node, offset)\n return child.lookup(depth + 1, path, key, notFound)\n }\n // If we have neither node nor key-pair for this hash segment\n // we return notFound.\n else {\n return notFound\n }\n}\n\n/**\n * @template T, U\n * @template {string} K\n * @template {string} R\n * @template {API.Config} C\n * @param {API.BitmapIndexedNode} node\n * @param {API.Edit|null} edit\n * @param {R} key\n * @param {T} value\n * @param {{ value: boolean }} addedLeaf\n * @returns {API.BitmapIndexedNode}\n */\nexport const set = (node, edit, key, value, addedLeaf) =>\n associate(node, edit, 0, node.config.Path.from(key), key, value, addedLeaf)\n\n/**\n * @template T\n * @template {string} K\n * @template {string} R\n * @template {API.Config} C\n * @param {API.BitmapIndexedNode} node\n * @param {API.Edit|null} edit\n * @param {API.Uint32} depth\n * @param {ReturnType} path\n * @param {K|R} key\n * @param {T} value\n * @param {{value:boolean}} addedLeaf\n * @returns {API.BitmapIndexedNode}\n */\nexport const associate = (node, edit, depth, path, key, value, addedLeaf) => {\n const { datamap, nodemap, config } = node\n const { Path, BitField } = config\n const offset = Path.at(path, depth)\n // If bit is set in the data bitmap we have some key, value under the\n // matching hash segment.\n if (BitField.get(datamap, offset)) {\n const index = BitField.popcount(datamap, offset)\n const found = keyAt(node, index)\n // If we have entry with given name and value is the same return node\n // as is, otherwise fork node and set the value.\n if (key === found) {\n return valueAt(node, index) === value\n ? node\n : forkAndSet(node, edit, index, value)\n }\n // Otherwise we need to create a branch to contain current key, value and\n // one been passed.\n else {\n const branch = mergeTwoLeaves(\n config,\n edit,\n depth + 1,\n Path.from(found),\n found,\n valueAt(node, index),\n path,\n key,\n value\n )\n addedLeaf.value = true\n\n return migrateLeafToBranch(node, edit, offset, branch)\n }\n }\n // If bit is set in the node bitmap we have a branch under the current\n // hash slice.\n else if (BitField.get(nodemap, offset)) {\n const child = resolveNode(node, offset)\n const newChild = child.associate(\n edit,\n depth + 1,\n path,\n key,\n value,\n addedLeaf\n )\n\n if (child === newChild) {\n return node\n } else {\n return copyAndSetChild(node, edit, offset, newChild)\n }\n }\n // If we have neither node nor a key-value for this hash segment. We copy\n // current children and add new key-value pair\n else {\n const index = BitField.popcount(datamap, offset)\n addedLeaf.value = true\n\n /** @type {API.BitmapIndexedNode} */\n const newNode = node.fork(edit)\n\n // Capture new entry in the data bitmap\n newNode.datamap = BitField.set(datamap, offset)\n newNode.children.splice(keyPosition(index), 0, key, value)\n return newNode\n }\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.BitmapIndexedNode} node\n * @param {API.Edit|null} edit\n * @param {K} key\n * @param {{ value: boolean }} removedLeaf\n * @returns {API.BitmapIndexedNode}\n */\nconst remove = (node, edit, key, removedLeaf) =>\n dissociate(node, edit, 0, node.config.Path.from(key), key, removedLeaf)\n\nexport { remove as delete }\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.BitmapIndexedNode} source\n * @param {API.Edit|null} edit\n * @param {API.Uint32} depth\n * @param {ReturnType} path\n * @param {K} key\n * @param {{value:boolean}} removedLeaf\n * @returns {API.BitmapIndexedNode}\n */\nexport const dissociate = (source, edit, depth, path, key, removedLeaf) => {\n const { datamap, nodemap, config } = source\n const { BitField, Path } = config\n const offset = Path.at(path, depth)\n // If bit is set in the data bitmap we have an entry under the\n // matching hash segment.\n if (BitField.get(datamap, offset)) {\n const index = BitField.popcount(datamap, offset)\n // If key at a given index matches given `name` we fork a node and remove\n // the entry\n if (key === keyAt(source, index)) {\n removedLeaf.value = true\n const node = fork(source, edit)\n // Update the bitmap\n node.datamap = BitField.unset(source.datamap, offset)\n // remove the child\n node.children.splice(keyPosition(index), 2)\n return node\n }\n // otherwise we don't have such entry so we return node back as is.\n else {\n return source\n }\n }\n // If bit is set in the node bitmapt we have a node under the\n // matching hash segment.\n else if (BitField.get(nodemap, offset)) {\n const node = resolveNode(source, offset)\n const child = node.dissociate(edit, depth + 1, path, key, removedLeaf)\n // if child has a single element we need to canonicalize\n if (hasSingleLeaf(child)) {\n // if source has a single child, we collapse and return the child\n // otherwise we inline the child.\n return hasSingleNode(source)\n ? child\n : inlineChild(source, edit, offset, child)\n } else if (node === child) {\n return source\n } else {\n return copyAndSetChild(source, edit, offset, child)\n }\n }\n // If we have neither node nor a key-value for this hash segment this is a\n // noop.\n else {\n return source\n }\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.Node} node\n * @returns {IterableIterator<[K, T]>}\n */\nexport const entries = function* ({ children }) {\n let offset = 0\n const count = children.length\n while (offset < count) {\n const key = children[offset]\n if (typeof key === \"string\") {\n offset += 1\n const value = children[offset]\n yield /** @type {[K, T]} */ ([key, value])\n offset += 1\n } else {\n break\n }\n }\n\n while (offset < count) {\n const node = /** @type {API.BitmapIndexedNode} */ (\n children[offset]\n )\n yield* node.entries()\n offset += 1\n }\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.BitmapIndexedNode} node\n * @param {API.Edit|null} edit\n * @returns {API.BitmapIndexedNode}\n */\nexport const fork = (node, edit) => {\n if (canEdit(node.edit, edit)) {\n return node\n } else {\n const newNode = new BitmapIndexedNode(\n edit,\n node.datamap,\n node.nodemap,\n node.children.slice(),\n node.config\n )\n return newNode\n }\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.Node} node\n * @returns {IterableIterator}\n */\nexport const keys = function* ({ children }) {\n let offset = 0\n const count = children.length\n while (offset < count) {\n const key = children[offset]\n if (typeof key === \"string\") {\n yield /** @type {K} */ (key)\n offset += 2\n } else {\n break\n }\n }\n\n while (offset < count) {\n const node = /** @type {API.BitmapIndexedNode} */ (children[offset])\n yield* node.keys()\n offset += 1\n }\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.Node} node\n * @returns {IterableIterator}\n */\nexport const values = function* ({ children }) {\n let offset = 0\n const count = children.length\n while (offset < count) {\n const key = children[offset]\n if (typeof key === \"string\") {\n offset += 1\n yield /** @type {T} */ (children[offset])\n offset += 1\n } else {\n break\n }\n }\n\n while (offset < count) {\n const node = /** @type {API.BitmapIndexedNode} */ (children[offset])\n yield* node.values()\n offset += 1\n }\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.BitmapIndexedNode} node\n * @param {API.Edit|null} edit\n * @param {number} offset\n * @param {T} value\n */\nexport const forkAndSet = (node, edit, offset, value) => {\n const newNode = node.fork(edit)\n newNode.children[valuePosition(offset)] = value\n return newNode\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.BitmapIndexedNode} source\n * @param {API.Edit|null} edit\n * @param {number} offset\n * @param {API.Node} child\n * @returns {API.BitmapIndexedNode}\n */\nexport const inlineChild = (source, edit, offset, child) => {\n const { datamap, nodemap, config } = source\n const { BitField } = config\n const node = fork(source, edit)\n\n // remove the node that we are inlining\n node.children.splice(nodePosition(source, offset), 1)\n // add key-value pair where it wolud fall\n node.children.splice(\n keyPosition(BitField.popcount(datamap, offset)),\n 0,\n child.children[0],\n child.children[1]\n )\n\n node.datamap = BitField.set(datamap, offset)\n node.nodemap = BitField.unset(nodemap, offset)\n\n return node\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.BitmapIndexedNode} node\n * @param {API.Edit|null} edit\n * @param {number} offset\n * @param {API.Node} child\n * @returns {API.BitmapIndexedNode}\n */\nexport const copyAndSetChild = (node, edit, offset, child) => {\n const newNode = fork(node, edit)\n newNode.children[nodePosition(node, offset)] = child\n return newNode\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.BitmapIndexedNode} source\n * @param {API.Edit|null} edit\n * @param {number} offset\n * @param {API.Node} branch\n * @returns {API.BitmapIndexedNode}\n */\nexport const migrateLeafToBranch = (source, edit, offset, branch) => {\n const { nodemap, datamap, config } = source\n const { BitField } = config\n const index = BitField.popcount(datamap, offset)\n // Previous id corresponds to the key position\n const oldId = keyPosition(index)\n const newId = nodePosition(source, offset)\n\n const node = fork(source, edit)\n\n // remove an old leaf\n node.datamap = BitField.unset(datamap, offset)\n node.children.splice(oldId, 2)\n\n // add a new branch\n node.nodemap = BitField.set(nodemap, offset)\n node.children.splice(newId - 1, 0, branch)\n\n return node\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {C} config\n * @param {API.Edit|null} edit\n * @param {number} depth\n * @param {ReturnType} oldPath\n * @param {K} oldKey\n * @param {T} oldValue\n * @param {ReturnType} newPath\n * @param {K} newKey\n * @param {T} newValue\n * @returns {API.Node}\n */\nexport const mergeTwoLeaves = (\n config,\n edit,\n depth,\n oldPath,\n oldKey,\n oldValue,\n newPath,\n newKey,\n newValue\n) => {\n const { BitField, Path } = config\n // If we have reached end of the path we can no longer create another\n // `BitmapIndexedNode`, instead we create a node containing (hash) colliding\n // entries\n /* c8 ignore next 7 */\n if (Path.size < depth) {\n return new HashCollisionNode(\n edit,\n 2,\n [oldKey, oldValue, newKey, newValue],\n config\n )\n } else {\n const oldOffset = Path.at(oldPath, depth)\n const newOffset = Path.at(newPath, depth)\n // If offsets still match create another intermediery node and merge these\n // two nodes at next depth level.\n if (oldOffset === newOffset) {\n return new BitmapIndexedNode(\n edit,\n BitField.empty(Math.pow(2, config.bitWidth)),\n BitField.from([oldOffset], Math.pow(2, config.bitWidth)),\n [\n mergeTwoLeaves(\n config,\n edit,\n depth + 1,\n oldPath,\n oldKey,\n oldValue,\n newPath,\n newKey,\n newValue\n ),\n ],\n config\n )\n }\n // otherwise create new node with both key-value pairs as it's children\n else {\n return new BitmapIndexedNode(\n edit,\n BitField.from([oldOffset, newOffset], Math.pow(2, config.bitWidth)),\n BitField.empty(Math.pow(2, config.bitWidth)),\n /** @type {API.Children} */\n (\n // We insert child with a lower index first so that we can derive it's\n // index on access via popcount\n oldOffset < newOffset\n ? [oldKey, oldValue, newKey, newValue]\n : [newKey, newValue, oldKey, oldValue]\n ),\n config\n )\n }\n }\n}\n\n/**\n * @template {string} K\n * @param {API.BitmapIndexedNode} node\n * @param {number} index\n */\nexport const keyAt = ({ children }, index) =>\n /** @type {K} */ (children[keyPosition(index)])\n\n/**\n * @param {number} index\n */\nexport const keyPosition = index => index * 2\n\n/**\n * @template T\n * @param {API.BitmapIndexedNode} node\n * @param {number} index\n */\nexport const valueAt = ({ children }, index) =>\n /** @type {T} */ (children[valuePosition(index)])\n\n/**\n * @param {number} index\n */\nexport const valuePosition = index => index * 2 + 1\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.BitmapIndexedNode} node\n * @param {number} offset\n * @returns {API.BitmapIndexedNode|API.HashCollisionNode}\n */\nexport const resolveNode = (node, offset) =>\n /** @type {API.BitmapIndexedNode|API.HashCollisionNode} */ (\n node.children[nodePosition(node, offset)]\n )\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.BitmapIndexedNode} node\n * @param {number} offset\n */\nconst nodePosition = ({ children, nodemap, config }, offset) =>\n children.length - 1 - config.BitField.popcount(nodemap, offset)\n\n/**\n * @param {API.Edit|null} owner\n * @param {API.Edit|null} editor\n */\nconst canEdit = (owner, editor) => owner != null && owner === editor\n\n/**\n * Returns `true` if node has a single entry. It also refines type to\n * `BitmapIndexedNode` because `HashCollisionNode` is normalized to\n * `BitmapIndexedNode` when it contains only a single entry.\n *\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.Node} node\n * @returns {node is API.BitmapIndexedNode}\n */\nconst hasSingleLeaf = node => node.nodeArity === 0 && node.dataArity === 1\n\n/**\n * Returns `true` if node has a single childe node and 0 child leaves.\n *\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @param {API.BitmapIndexedNode} node\n * @returns {node is API.BitmapIndexedNode}\n */\nconst hasSingleNode = ({ config: { BitField }, datamap, nodemap }) =>\n BitField.popcount(datamap) === 0 && BitField.popcount(nodemap) === 1\n","import { bytes } from 'multiformats'\nimport { from } from 'multiformats/hashes/hasher'\n// @ts-expect-error no types\nimport mur from 'murmurhash3js-revisited'\n\n/**\n * @param {number} number\n * @returns {Uint8Array}\n */\nfunction fromNumberTo32BitBuf (number) {\n const bytes = new Array(4)\n for (let i = 0; i < 4; i++) {\n bytes[i] = number & 0xff\n number = number >> 8\n }\n return new Uint8Array(bytes)\n}\n\nexport const murmur332 = from({\n name: 'murmur3-32',\n code: 0x23,\n encode: (input) => fromNumberTo32BitBuf(mur.x86.hash32(input))\n})\n\nexport const murmur3128 = from({\n name: 'murmur3-128',\n code: 0x22,\n encode: (input) => bytes.fromHex(mur.x64.hash128(input))\n})\n\n// A special-use 0x22 that truncates 64 bits, specifically for use in the UnixFS HAMT\nexport const murmur364 = from({\n name: 'murmur3-x64-64',\n code: 0x22,\n encode: (input) => bytes.fromHex(mur.x64.hash128(input)).subarray(0, 8)\n})\n","import * as API from \"./api.js\"\nconst utf8 = new TextEncoder()\nimport { murmur364 } from \"@multiformats/murmur3\"\n\n/**\n * @param {Uint8Array} bytes\n */\n/* c8 ignore next 2 */\nexport const hash64 = bytes =>\n /** @type {Uint8Array} */ (murmur364.encode(bytes))\n\n/**\n * @param {Partial>} options\n * @returns {API.Path}\n */\n/* c8 ignore next 25 */\nexport const configure = ({ bitWidth = 8, hash = hash64 } = {}) => {\n const hashSize = hash(new Uint8Array()).byteLength\n\n /**\n * @param {Uint8Array} path\n * @param {number} depth\n * @returns {API.Uint32}\n */\n const at = (path, depth) => {\n const offset = depth * bitWidth\n if (offset > hashSize) {\n throw new RangeError(`Out of bounds`)\n }\n\n return toInt(path, offset, bitWidth)\n }\n\n /**\n * @param {string} key\n * @returns {Uint8Array}\n */\n const from = key => hash(utf8.encode(key))\n\n return { from, at, size: Math.ceil((hashSize * 8) / bitWidth) }\n}\n\n/**\n * @param {Uint8Array} bytes\n * @param {number} offset - bit offset\n * @param {number} count - number of bits to consume\n */\nexport const toInt = (bytes, offset, count) => {\n let byteOffset = (offset / 8) | 0\n let bitOffset = offset % 8\n let desired = count\n let bits = 0\n while (desired > 0 && byteOffset < bytes.byteLength) {\n const byte = bytes[byteOffset]\n const available = 8 - bitOffset\n\n const taking = available < desired ? available : desired\n const bitsLeft = 8 - bitOffset - taking\n // mask to turn of bits before bitOffset\n const mask = 0xff >> bitOffset\n // turn off offset bits and shift to drop remaining bit on the right\n const value = (mask & byte) >> bitsLeft\n bits = (bits << taking) + value\n\n desired -= taking\n byteOffset++\n bitOffset = 0\n }\n\n return bits\n}\n","import { bitCount, popcount as popcount32 } from \"./Uint32.js\"\nimport * as API from \"./api.js\"\n\n/**\n * @param {number} size\n */\nexport const empty = (size = 256) => {\n if (size % 8 !== 0) {\n throw new Error(`Must be multiple of 8`)\n }\n\n return new Uint8Array(size / 8)\n}\n\n/**\n * Creates bitfield with specific bits set.\n *\n * @param {number[]} bits\n * @param {number} [size]\n * @returns {Uint8Array}\n */\nexport const from = (bits, size) => {\n let bitfield = empty(size)\n for (const index of bits) {\n const { byte, byteOffset, bitOffset } = at(bitfield, index)\n bitfield[byteOffset] = byte | (1 << bitOffset)\n }\n return bitfield\n}\n\n/**\n * @param {Uint8Array} bitfield\n */\nexport const size = bitfield => bitfield.byteLength * 8\n\n/**\n * Compute offset for the given index\n *\n * @param {Uint8Array} bitfield\n * @param {number} index\n */\nconst at = (bitfield, index) => {\n const byteOffset = bitfield.byteLength - 1 - ((index / 8) | 0)\n const bitOffset = index % 8\n const byte = bitfield[byteOffset]\n\n return { byte, byteOffset, bitOffset }\n}\n\n/**\n * Set a particular bit.\n *\n * @param {Uint8Array} bytes\n * @param {number} index\n * @param {number} byte\n * @returns {Uint8Array}\n */\nconst setByte = (bytes, index, byte) => {\n if (bytes[index] !== byte) {\n const result = bytes.slice(0)\n result[index] = byte\n return result\n }\n return bytes\n}\n\n/**\n * Set a particular bit.\n *\n * @param {Uint8Array} bitfield\n * @param {number} index\n * @returns {Uint8Array}\n */\nexport const set = (bitfield, index) => {\n const { byte, byteOffset, bitOffset } = at(bitfield, index)\n return setByte(bitfield, byteOffset, byte | (1 << bitOffset))\n}\n\n/**\n * Unsets a particular bit.\n\n * @param {Uint8Array} bitfield\n * @param {number} index\n * @returns {Uint8Array}\n */\nexport const unset = (bitfield, index) => {\n const { byte, byteOffset, bitOffset } = at(bitfield, index)\n return setByte(bitfield, byteOffset, byte & (0xff ^ (1 << bitOffset)))\n}\n\n/**\n * Returns `true` if bit at given index is set.\n *\n * @param {Uint8Array} bitfield\n * @param {number} index\n */\nexport const get = (bitfield, index) => {\n var { byte, bitOffset } = at(bitfield, index)\n return ((byte >> bitOffset) & 0x1) !== 0\n}\n\n/**\n * @param {Uint8Array} bitfield\n */\nexport const toBytes = bitfield => bitfield\n\n/**\n * @param {Uint8Array} bytes\n */\nexport const fromBytes = bytes => bytes\n\n/**\n * @param {Uint8Array} bitfield\n * @param {number} index\n */\nexport const popcount = (bitfield, index = bitfield.byteLength * 8) => {\n const { byteOffset, bitOffset, byte } = at(bitfield, index)\n\n let count = popcount32(byte, bitOffset)\n let offset = bitfield.byteLength - 1\n while (offset > byteOffset) {\n const byte = bitfield[offset]\n count += bitCount(byte)\n offset--\n }\n\n return count\n}\n\n/**\n * @param {Uint8Array} left\n * @param {Uint8Array} right\n */\nexport const or = (left, right) => {\n const result = left.slice()\n let offset = 0\n while (offset < left.length) {\n result[offset] |= right[offset]\n offset++\n }\n return result\n}\n\n/**\n * @param {Uint8Array} left\n * @param {Uint8Array} right\n */\nexport const and = (left, right) => {\n const result = left.slice()\n let offset = 0\n while (offset < left.length) {\n result[offset] &= right[offset]\n offset++\n }\n return result\n}\n\nexport { API }\n","export * from \"./api.js\"\nimport * as Node from \"./node.js\"\nimport { create as createBitmapIndexedNode } from \"./node.js\"\nimport * as API from \"./api.js\"\nimport * as Uint32Path from \"./path/Uint32.js\"\nimport * as Uint8ArrayPath from \"./path/Uint8Array.js\"\nimport * as Uint32BitField from \"./bitfield/Uint32.js\"\nimport * as Uint8ArrayBitField from \"./bitfield/Uint8Array.js\"\n\nconst NOT_FOUND = new RangeError(\"Not Found\")\n\n/**\n * A `bitWidth` determines the number of bits of the hash to use for index\n * calculation at each level of the tree. In first layer will distribute\n * children by the first `bitWidth` bits of the key hash. In the next layer\n * next `bitWidth` number of bits of the key hash are used to determine\n * placement of it's children and so on. Each node in the tree will hold\n * `2 ** bitWidth` number of elements.\n *\n * For example when we insert an entry named `result` it will generate a\n * folowing hash (with murmur3 32) `442064690` which in binary would be\n *\n * ```\n * 11010010110010101111100110010\n * ```\n *\n * Which will correspond to a following key path\n *\n * ```\n * 11010/01011/00101/01111/10011/0010\n * ```\n *\n * Whis in decimals would be\n *\n * ```ts\n * 26/11/5/15/19/2'\n * ```\n *\n * If we then insert `fish` it would produce following path\n *\n * ```ts\n * 26/3/4/18/28/19/1\n * ```\n * @template [V=unknown]\n * @template {string} [K=string]\n * @template {API.Config} [C=API.Config]\n * @param {Partial} [options]\n * @returns {API.PersistentHashMap}\n */\nexport const empty = options => {\n const config = configure(options)\n return new PersistentHashMap(0, createBitmapIndexedNode(config, null), config)\n}\n\n/**\n * @template {API.Config} [C=API.Config]\n * @param {Partial} config\n * @returns {C}\n */\nconst configure = ({\n bitWidth = 5,\n /* c8 ignore next 4 */\n BitField = bitWidth === 5 ? Uint32BitField : Uint8ArrayBitField,\n Path = bitWidth === 5\n ? Uint32Path.configure({ bitWidth })\n : Uint8ArrayPath.configure({ bitWidth }),\n} = {}) => /** @type {C} */ ({ bitWidth, BitField, Path })\n\n/**\n * Creates HashMap from the provided entries.\n *\n * @template [V=unknown]\n * @template {string} [K=string]\n * @template {API.Config} [C=API.Config]\n * @param {Iterable<[K, V]>} entries\n * @param {Partial} [options]\n * @returns {API.PersistentHashMap}\n */\nexport const from = (entries, options) => {\n const node = /** @type {API.HashMapBuilder} */ (builder(options))\n for (const [key, value] of entries) {\n node.set(key, value)\n }\n\n return node.build()\n}\n\n/**\n * @template T\n * @template {string} K\n * @param {API.HAMT} hamt\n * @param {K} key\n */\nexport const has = (hamt, key) =>\n Node.get(hamt.root, key, NOT_FOUND) !== NOT_FOUND\n\n/**\n * @template T\n * @template {string} K\n * @template [U=undefined]\n * @param {API.HAMT} hamt\n * @param {K} key\n * @param {U} notFound\n * @returns {T|U}\n */\nexport const get = (hamt, key, notFound = /** @type {U} */ (undefined)) =>\n Node.get(hamt.root, key, notFound)\n\n/**\n * @template {string} K\n * @template T\n * @template {API.Config} C\n * @param {Partial} [options]\n * @returns {API.HashMapBuilder}\n */\nexport const builder = options => {\n const edit = {}\n const config = configure(options)\n return new HashMapBuilder(\n edit,\n 0,\n createBitmapIndexedNode(config, edit),\n config\n )\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n * @implements {API.PersistentHashMap}\n */\nclass PersistentHashMap {\n /**\n *\n * @param {number} count\n * @param {API.BitmapIndexedNode} root\n * @param {C} config\n */\n constructor(count = 0, root, config) {\n this.count = count\n this.root = root\n this.config = config\n }\n\n get size() {\n return this.count\n }\n\n clone() {\n return new PersistentHashMap(this.count, this.root, this.config)\n }\n\n /**\n * @returns {API.PersistentHashMap}\n */\n empty() {\n return new PersistentHashMap(\n 0,\n createBitmapIndexedNode(this.config, null),\n this.config\n )\n }\n /**\n * @param {K} key\n * @returns {boolean}\n */\n has(key) {\n return has(this, key)\n }\n /**\n * @param {K} key\n * @returns {T|undefined}\n */\n get(key) {\n return Node.get(this.root, key, undefined)\n }\n /**\n * @template {string} R\n * @param {R} key\n * @param {T} value\n * @returns {PersistentHashMap}\n */\n set(key, value) {\n const addedLeaf = { value: false }\n const root = Node.set(this.root, null, key, value, addedLeaf)\n if (root === this.root) {\n return this\n } else {\n return new PersistentHashMap(\n addedLeaf.value ? this.count + 1 : this.count,\n root,\n this.config\n )\n }\n }\n /**\n * @param {K} key\n */\n delete(key) {\n const root = Node.delete(this.root, null, key, { value: false })\n\n if (root === this.root) {\n return this\n } else {\n return new PersistentHashMap(this.count - 1, root, this.config)\n }\n }\n\n /* c8 ignore next 3 */\n get bitField() {\n return this.config.BitField.or(this.root.datamap, this.root.nodemap)\n }\n\n [Symbol.iterator]() {\n return this.entries()\n }\n\n entries() {\n return this.root.entries()\n }\n keys() {\n return this.root.keys()\n }\n values() {\n return this.root.values()\n }\n\n /**\n * @returns {API.HashMapBuilder}\n */\n\n createBuilder() {\n return new HashMapBuilder({}, this.count, this.root, this.config)\n }\n}\n\n/**\n * @template T\n * @template {string} K\n * @template {API.Config} C\n */\nclass HashMapBuilder {\n /**\n * @param {API.Edit} edit\n * @param {number} count\n * @param {API.BitmapIndexedNode} root\n * @param {C} config\n */\n constructor(edit, count, root, config) {\n /**\n * @type {API.Edit|null}\n * @private\n */\n this.edit = edit\n /**\n * @private\n */\n this.count = count\n this.root = root\n this.config = config\n }\n\n get size() {\n if (this.edit) {\n return this.count\n } else {\n throw new Error(`.size was accessed on the finalized builder`)\n }\n }\n /**\n * @template {string} R\n * @param {R} key\n * @param {T} value\n * @returns {HashMapBuilder}\n */\n set(key, value) {\n if (this.edit) {\n const addedLeaf = { value: false }\n const root = Node.set(this.root, this.edit, key, value, addedLeaf)\n\n if (this.root !== root) {\n this.root = /** @type {API.BitmapIndexedNode} */ (root)\n }\n\n if (addedLeaf.value) {\n this.count += 1\n }\n\n return this\n } else {\n throw new Error(`.set was called on the finalized builder`)\n }\n }\n /**\n * @param {K} key\n */\n delete(key) {\n if (this.edit) {\n if (this.count === 0) {\n return this\n }\n const removedLeaf = { value: false }\n const root = Node.delete(this.root, this.edit, key, removedLeaf)\n\n if (root !== this.root) {\n this.root = root\n }\n if (removedLeaf.value) {\n this.count -= 1\n }\n return this\n } else {\n throw new Error(`.delete was called on the finalized builder`)\n }\n }\n\n build() {\n if (this.edit) {\n this.edit = null\n return new PersistentHashMap(this.count, this.root, this.config)\n } else {\n throw new Error(`.build was called on the finalized builder`)\n }\n }\n}\n","import * as API from \"./api.js\"\nimport { toInt } from \"./Uint8Array.js\"\nimport { murmur364 } from \"@multiformats/murmur3\"\nconst utf8 = new TextEncoder()\n\n/**\n * @param {Uint8Array} bytes\n */\nexport const hash64 = bytes =>\n /** @type {Uint8Array} */ (murmur364.encode(bytes))\n\n/**\n * @param {Partial>} options\n * @returns {API.Path}\n */\nexport const configure = ({ bitWidth = 8, hash = hash64 }) => {\n const hashSize = hash(new Uint8Array()).byteLength\n const options = { bitWidth, hash, hashSize }\n\n /**\n * @param {Uint8Array} path\n * @param {number} depth\n * @returns {API.Uint32}\n */\n const at = (path, depth) => read(path, depth, options)\n\n /**\n * @param {string} key\n */\n const from = key => utf8.encode(key)\n\n return { at, from, size: Infinity }\n}\n\n/**\n * @param {Uint8Array} key\n * @param {number} depth\n * @param {object} options\n * @param {number} [options.bitWidth]\n * @param {number} options.hashSize\n * @param {(input:Uint8Array) => Uint8Array} options.hash\n */\nexport const read = (key, depth = 0, { bitWidth = 8, hash, hashSize }) => {\n // key digest consists of infinite number of hash frames that are computed\n // from key + frame n which looks like\n // [hash(key), hash([key, 1]), hash([key, n])]\n // You can think of the hash as concatination of all frames. Here we calculate\n // frame bit size from hash size as we going to use that several times.\n const frameBitSize = hashSize * 8\n\n // We start with 0 digest and required `bitCount` corresponding to `bitWith`.\n // In the loop we'll going to consume `bitCount` hash bits.\n let digest = 0\n let bitCount = bitWidth\n // Calculate absolute bit offset within the key digest.\n let bitOffset = bitWidth * depth\n while (bitCount > 0) {\n // We derive frame number based on current bit offset.\n const frameOffset = (bitOffset / frameBitSize) >> 0\n // Then we compute that hash frame\n const frame =\n frameOffset === 0 ? hash(key) : hash(appendByte(key, frameOffset))\n\n // compute bit offset within the current frame\n const offset =\n frameBitSize <= bitOffset ? bitOffset % frameBitSize : bitOffset\n // calculate number of bits remaining in this frame\n const maxBits = frameBitSize - offset\n // we will consume all required bits from frame if enough are available\n // otherwise we consume whatever's available and continue rest in the next\n // cycle(s).\n const count = maxBits < bitCount ? maxBits : bitCount\n digest = (digest << count) + toInt(frame, offset, count)\n bitCount -= count\n bitOffset += count\n }\n\n return digest\n}\n\n/**\n * @param {Uint8Array} source\n * @param {number} byte\n */\nconst appendByte = (source, byte) => {\n const bytes = new Uint8Array(source.byteLength + 1).fill(\n byte,\n source.byteLength\n )\n bytes.set(source)\n return bytes\n}\n","import * as HAMT from \"./lib.js\"\nimport * as Node from \"./node.js\"\nimport * as Path from \"./path/InfiniteUint8Array.js\"\n\nexport * from \"./api.js\"\n\nexport { Path }\n\nexport const bitWidth = 8\nexport const config = {\n bitWidth,\n Path: Path.configure({ bitWidth }),\n}\n\n/**\n * @param {HAMT.PersistentHashMap} hamt\n */\nexport const tableSize = hamt => Math.pow(2, hamt.config.bitWidth)\n\n/**\n * @template [T=unknown]\n * @template {string} [K=string]\n * @template {HAMT.Config} [C=HAMT.Config]\n * @param {Partial} options\n * @returns {HAMT.PersistentHashMap}\n */\nexport const empty = (options = /** @type {C} */ (config)) =>\n HAMT.empty(options)\n\n/**\n * @template [T=unknown]\n * @template {string} [K=string]\n * @template {HAMT.Config} [C=HAMT.Config]\n * @param {Partial} options\n * @returns {HAMT.HashMapBuilder}\n */\nexport const builder = (options = /** @type {C} */ (config)) =>\n HAMT.builder(options)\n\n/**\n * @template [V=unknown]\n * @template {string} [K=string]\n * @template {HAMT.Config} [C=HAMT.Config]\n * @param {Iterable<[K, V]>} entries\n * @param {Partial} options\n */\nexport const from = (entries, options = /** @type {C} */ (config)) =>\n HAMT.from(entries, options)\n\n/**\n * @template T\n * @template {string} K\n * @template Bits, Bitmap\n * @param {HAMT.BitmapIndexedNode>} hamt\n */\nexport const bitField = ({ datamap, nodemap, config: { BitField } }) =>\n withoutLeadingZeros(BitField.toBytes(BitField.or(datamap, nodemap)))\n\n/**\n * @param {Uint8Array} bytes\n */\nconst withoutLeadingZeros = bytes => {\n let offset = 0\n while (offset < bytes.byteLength) {\n if (bytes[offset] !== 0) {\n return bytes.subarray(offset)\n }\n offset += 1\n }\n return bytes.subarray(offset)\n}\n\n/**\n * Maps HAMT node into IPFS UnixFS compatible format.\n *\n * @template T\n * @template {string} K\n * @template {HAMT.Config} C\n * @param {HAMT.BitmapIndexedNode} root\n * @returns {IterableIterator<{prefix:string, key:K, value:T, node?:void}|{prefix:string, node:HAMT.BitmapIndexedNode}>}\n */\nexport const iterate = function* (root) {\n const { config, datamap, nodemap } = root\n const { BitField: bitfield } = config\n const size = bitfield.size(datamap)\n let bitOffset = 0\n let dataCount = 0\n while (bitOffset < size) {\n const prefix = bitOffset.toString(16).toUpperCase().padStart(2, \"0\")\n if (bitfield.get(datamap, bitOffset)) {\n const key = Node.keyAt(root, dataCount)\n yield {\n prefix,\n key,\n value: Node.valueAt(root, dataCount),\n }\n dataCount++\n } else if (bitfield.get(nodemap, bitOffset)) {\n yield {\n prefix,\n // UnixFS never contains hash collision nodes because it uses\n // inifinite hashes\n node: /** @type {HAMT.BitmapIndexedNode} */ (\n Node.resolveNode(root, bitOffset)\n ),\n }\n }\n bitOffset++\n }\n}\n","import { bytes as binary, CID } from './index.js';\nfunction readonly({ enumerable = true, configurable = false } = {}) {\n return { enumerable, configurable, writable: false };\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 != null) {\n yield [elementPath.join('/'), cid];\n }\n else if (typeof element === 'object') {\n yield* links(element, elementPath);\n }\n }\n }\n else {\n const cid = CID.asCID(value);\n if (cid != null) {\n yield [path.join('/'), cid];\n }\n else {\n yield* links(value, path);\n }\n }\n }\n}\nfunction* links(source, base) {\n if (source == null || source instanceof Uint8Array) {\n return;\n }\n const cid = CID.asCID(source);\n if (cid != null) {\n yield [base.join('/'), cid];\n }\n for (const [key, value] of Object.entries(source)) {\n const path = [...base, key];\n yield* linksWithin(path, value);\n }\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) == null)) {\n yield* tree(element, elementPath);\n }\n }\n }\n else {\n yield* tree(value, path);\n }\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 = [...base, key];\n yield path.join('/');\n if (value != null && !(value instanceof Uint8Array) && typeof value === 'object' && (CID.asCID(value) == null)) {\n yield* treeWithin(path, value);\n }\n }\n}\nfunction get(source, path) {\n let node = 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 != null) {\n return { value: cid, remaining: path.slice(index + 1).join('/') };\n }\n }\n return { value: node };\n}\n/**\n * @template T - Logical type of the data encoded in the block\n * @template C - multicodec code corresponding to codec used to encode the block\n * @template A - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template V - CID version\n */\nexport class Block {\n cid;\n bytes;\n value;\n asBlock;\n constructor({ cid, bytes, value }) {\n if (cid == null || bytes == null || typeof value === 'undefined') {\n throw new Error('Missing required argument');\n }\n this.cid = cid;\n this.bytes = bytes;\n this.value = value;\n this.asBlock = this;\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 links() {\n return links(this.value, []);\n }\n tree() {\n return tree(this.value, []);\n }\n get(path = '/') {\n return get(this.value, path.split('/').filter(Boolean));\n }\n}\n/**\n * @template T - Logical type of the data encoded in the block\n * @template Code - multicodec code corresponding to codec used to encode the block\n * @template Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n */\nexport async function encode({ value, codec, hasher }) {\n if (typeof value === 'undefined')\n throw new Error('Missing required argument \"value\"');\n if (codec == null || hasher == null)\n throw new Error('Missing required argument: codec or hasher');\n const bytes = codec.encode(value);\n const hash = await hasher.digest(bytes);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const cid = CID.create(1, codec.code, hash);\n return new Block({ value, bytes, cid });\n}\n/**\n * @template T - Logical type of the data encoded in the block\n * @template Code - multicodec code corresponding to codec used to encode the block\n * @template Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n */\nexport async function decode({ bytes, codec, hasher }) {\n if (bytes == null)\n throw new Error('Missing required argument \"bytes\"');\n if (codec == null || hasher == null)\n throw new Error('Missing required argument: codec or hasher');\n const value = codec.decode(bytes);\n const hash = await hasher.digest(bytes);\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n const cid = CID.create(1, codec.code, hash);\n return new Block({ value, bytes, cid });\n}\n/**\n * @template T - Logical type of the data encoded in the block\n * @template Code - multicodec code corresponding to codec used to encode the block\n * @template Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template V - CID version\n */\nexport function createUnsafe({ bytes, cid, value: maybeValue, codec }) {\n const value = maybeValue !== undefined\n ? maybeValue\n : (codec?.decode(bytes));\n if (value === undefined)\n throw new Error('Missing required argument, must either provide \"value\" or \"codec\"');\n return new Block({\n cid: cid,\n bytes,\n value\n });\n}\n/**\n * @template T - Logical type of the data encoded in the block\n * @template Code - multicodec code corresponding to codec used to encode the block\n * @template Alg - multicodec code corresponding to the hashing algorithm used in CID creation.\n * @template V - CID version\n */\nexport async function create({ bytes, cid, hasher, codec }) {\n if (bytes == null)\n throw new Error('Missing required argument \"bytes\"');\n if (hasher == null)\n 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 return createUnsafe({\n bytes,\n cid,\n value,\n codec\n });\n}\n//# sourceMappingURL=block.js.map","\nimport * as PermaMap from \"@perma/map\"\nimport * as UnixFSPermaMap from \"@perma/map/unixfs\"\nimport * as PB from \"@ipld/dag-pb\"\nimport { murmur364 } from \"@multiformats/murmur3\"\nimport { Block } from 'multiformats/block'\nimport * as API from \"./directory/api.js\"\nimport * as File from \"./file.js\"\nimport * as UnixFS from \"./codec.js\"\nimport { set, remove } from \"./directory.js\"\n\nexport * from \"./directory/api.js\"\nexport { set, remove } from \"./directory.js\"\n\nexport const configure = File.configure\nexport const defaults = File.defaults\n\n/**\n * @template [Layout=unknown]\n * @param {API.Options} config\n * @returns {API.View}\n */\nexport const create = ({ writer, settings = defaults(), metadata = {} }) =>\n new HAMTDirectoryWriter({\n writer,\n metadata,\n settings,\n entries: new HashMap(),\n closed: false,\n })\n\n/**\n * @template {API.State} Writer\n * @param {Writer} writer\n * @returns {Writer}\n */\nconst asWritable = writer => {\n if (!writer.closed) {\n return writer\n } else {\n throw new Error(\"Can not change written HAMT directory, but you can .fork() and make changes to it\")\n }\n}\n\n/**\n * @template {unknown} Layout\n * @param {{ state: API.State }} view\n * @param {API.CloseOptions} options\n * @returns {Promise}\n */\nexport const close = async (\n view,\n { closeWriter = false, releaseLock = false } = {}\n) => {\n const { writer, settings, metadata } = asWritable(view.state)\n view.state.closed = true\n\n const { entries } = view.state\n /* c8 ignore next 3 */\n if (!(entries instanceof HashMap)) {\n throw new Error(`not a HAMT: ${entries}`)\n }\n\n const hamt = entries.builder.build()\n const blocks = iterateBlocks(hamt, hamt.root, settings)\n\n /** @type {UnixFS.BlockView?} */\n let root = null\n for await (const block of blocks) {\n root = block\n // we make sure that writer has some capacity for this write. If it\n // does not we await.\n if ((writer.desiredSize || 0) <= 0) {\n await writer.ready\n }\n // once writer has some capacity we write a block, however we do not\n // await completion as we don't care when it's taken off the stream.\n writer.write(block)\n }\n /* c8 ignore next */\n if (root == null) throw new Error(\"no root block yielded\")\n\n if (closeWriter) {\n await writer.close()\n } else if (releaseLock) {\n writer.releaseLock()\n }\n\n return {\n cid: root.cid,\n dagByteLength: UnixFS.cumulativeDagByteLength(root.bytes, root.value.entries),\n }\n}\n\n/**\n * @template {unknown} Layout\n * @param {UnixFSPermaMap.PersistentHashMap} hamt\n * @param {UnixFSPermaMap.BitmapIndexedNode} node\n * @param {API.EncoderSettings} settings\n * @returns {AsyncIterableIterator>}\n */\nconst iterateBlocks = async function* (hamt, node, settings) {\n /** @type {UnixFS.DirectoryEntryLink[]} */\n const entries = []\n for (const ent of UnixFSPermaMap.iterate(node)) {\n if ('key' in ent) {\n entries.push(/** @type {UnixFS.DirectoryEntryLink} */ ({\n name: `${ent.prefix ?? ''}${ent.key ?? ''}`,\n dagByteLength: ent.value.dagByteLength,\n cid: ent.value.cid,\n }))\n } else {\n /** @type {UnixFS.BlockView?} */\n let root = null\n for await (const block of iterateBlocks(hamt, ent.node, settings)) {\n yield block\n root = block\n }\n /* c8 ignore next */\n if (root == null) throw new Error(\"no root block yielded\")\n\n entries.push(/** @type {UnixFS.ShardedDirectoryLink} */ ({\n name: ent.prefix,\n dagByteLength: UnixFS.cumulativeDagByteLength(root.bytes, root.value.entries),\n cid: root.cid\n }))\n }\n }\n\n const shard = UnixFS.createDirectoryShard(\n entries,\n UnixFSPermaMap.bitField(node),\n UnixFSPermaMap.tableSize(hamt),\n murmur364.code\n )\n yield await encodeHAMTShardBlock(shard, settings)\n}\n\n/**\n * @template {unknown} Layout\n * @param {UnixFS.DirectoryShard} shard\n * @param {API.EncoderSettings} settings\n * @returns {Promise>}\n */\nasync function encodeHAMTShardBlock (shard, settings) {\n const bytes = UnixFS.encodeHAMTShard(shard)\n const hash = await settings.hasher.digest(bytes)\n const cid = settings.linker.createLink(PB.code, hash)\n // @ts-ignore Link is not CID\n return new Block({ cid, bytes, value: shard })\n}\n\n/**\n * @template L1, L2\n * @param {API.View} state\n * @param {Partial>} options\n * @returns {API.View}\n */\nexport const fork = (\n { state },\n {\n writer = state.writer,\n metadata = state.metadata,\n settings = state.settings,\n } = {}\n) =>\n new HAMTDirectoryWriter({\n writer,\n metadata,\n settings,\n entries: new HashMap(UnixFSPermaMap.from(state.entries.entries()).createBuilder()),\n closed: false,\n })\n\n/**\n * @template [Layout=unknown]\n * @implements {API.View}\n */\nclass HAMTDirectoryWriter {\n /**\n * @param {API.State} state\n */\n constructor(state) {\n this.state = state\n }\n get writer() {\n return this.state.writer\n }\n get settings() {\n return this.state.settings\n }\n\n /**\n * @param {string} name\n * @param {UnixFS.FileLink | UnixFS.DirectoryLink} link\n * @param {API.WriteOptions} [options]\n */\n\n set(name, link, options) {\n return set(this, name, link, options)\n }\n\n /**\n * @param {string} name\n */\n remove(name) {\n return remove(this, name)\n }\n\n /**\n * @template L\n * @param {Partial>} [options]\n * @returns {API.View}\n */\n fork(options) {\n return fork(this, options)\n }\n\n /**\n * @param {API.CloseOptions} [options]\n * @returns {Promise}\n */\n close(options) {\n return close(this, options)\n }\n\n entries() {\n return this.state.entries.entries()\n }\n /**\n * @param {string} name\n */\n has(name) {\n return this.state.entries.has(name)\n }\n get size() {\n return this.state.entries.size\n }\n}\n\n/**\n * @implements {Map}\n */\nclass HashMap extends Map {\n /**\n * @param {UnixFSPermaMap.HashMapBuilder} [builder]\n */\n constructor (builder = UnixFSPermaMap.builder()) {\n super()\n /** @type {UnixFSPermaMap.HashMapBuilder} */\n this.builder = builder\n }\n\n clear() {\n this.builder = UnixFSPermaMap.builder()\n }\n\n /**\n * @param {string} key\n */\n delete(key) {\n const { root } = this.builder\n this.builder.delete(key)\n return this.builder.root !== root\n }\n\n /**\n * @param {(value: API.EntryLink, key: string, map: Map) => void} callbackfn\n * @param {any} [thisArg]\n */\n forEach(callbackfn, thisArg = this) {\n for (const [k, v] of this.builder.root.entries()) {\n callbackfn.call(thisArg, v, k, this)\n }\n }\n\n /**\n * @param {string} key\n */\n get(key) {\n return PermaMap.get(this.builder, key)\n }\n\n /**\n * @param {string} key\n */\n has(key) {\n return PermaMap.has(this.builder, key)\n }\n\n /**\n * @param {string} key \n * @param {API.EntryLink} value \n */\n set(key, value) {\n this.builder.set(key, value)\n return this\n }\n\n get size () {\n return this.builder.size\n }\n\n [Symbol.iterator]() {\n return this.builder.root.entries()\n }\n\n entries() {\n return this.builder.root.entries()\n }\n\n keys() {\n return this.builder.root.keys()\n }\n\n values() {\n return this.builder.root.values()\n }\n}\n","import * as API from \"./api.js\"\nimport * as File from \"./file.js\"\nimport * as Directory from \"./directory.js\"\n\nexport * from \"./api.js\"\n\nexport { encode, decode, NodeType, code } from \"./codec.js\"\nexport {\n create as createFileWriter,\n close as closeFile,\n write,\n configure,\n defaults,\n UnixFSLeaf,\n UnixFSRawLeaf,\n} from \"./file.js\"\nexport {\n create as createDirectoryWriter,\n close as closeDirectory,\n fork as forkDirectory,\n set,\n remove,\n} from \"./directory.js\"\nexport {\n create as createShardedDirectoryWriter,\n close as closeShardedDirectory,\n fork as forkShardedDirectory,\n} from \"./sharded-directory.js\"\n\n/**\n * @template [Layout=unknown]\n * @param {API.Options} options\n * @returns {API.View}\n */\nexport const createWriter = ({ writable, settings = File.defaults() }) =>\n new FileSystemWriter({\n writer: writable.getWriter(),\n settings,\n })\n\n/**\n * @template {{writer:API.BlockWriter}} View\n * @param {View} view\n * @param {API.CloseOptions} options\n */\nexport const close = async (\n view,\n { releaseLock = true, closeWriter = true } = {}\n) => {\n if (closeWriter) {\n await view.writer.close()\n } else if (releaseLock) {\n view.writer.releaseLock()\n }\n\n return view\n}\n\n/**\n * @template [Layout=unknown]\n * @implemets {API.View}\n */\nclass FileSystemWriter {\n /**\n * @param {object} options\n * @param {API.BlockWriter} options.writer\n * @param {Partial>} options.settings\n */\n constructor({ writer, settings }) {\n this.writer = writer\n this.settings = File.configure(settings)\n }\n\n /**\n * @template [L=unknown]\n * @param {API.WriterOptions} config\n */\n createFileWriter({ settings = this.settings, metadata } = {}) {\n return File.create({\n writer: this.writer,\n settings,\n metadata,\n })\n }\n\n /**\n * @template [L=unknown]\n * @param {API.WriterOptions} config\n */\n createDirectoryWriter({ settings = this.settings, metadata } = {}) {\n return Directory.create({\n writer: this.writer,\n settings,\n metadata,\n })\n }\n\n /**\n * @param {API.CloseOptions} [options]\n */\n close(options) {\n return close(this, options)\n }\n}\n\n// BlockSizeLimit specifies the maximum size an imported block can have.\n// @see https://github.com/ipfs/go-unixfs/blob/68c015a6f317ed5e21a4870f7c423a4b38b90a96/importer/helpers/helpers.go#L7-L8\nexport const BLOCK_SIZE_LIMIT = 1048576 // 1 MB\nexport const defaultCapacity = BLOCK_SIZE_LIMIT * 100\n\n/**\n * Creates `QueuingStrategy` that can fit blocks with total size up to given\n * byteLength.\n *\n * @param {number} byteLength\n * @returns {Required>}\n */\nexport const withCapacity = (byteLength = defaultCapacity) => ({\n highWaterMark: byteLength,\n size: block => block.bytes.length,\n})\n","import { coerce } from '../bytes.js';\nexport const name = 'raw';\nexport const code = 0x55;\nexport function encode(node) {\n return coerce(node);\n}\nexport function decode(data) {\n return coerce(data);\n}\n//# sourceMappingURL=raw.js.map","/* eslint-env browser */\nimport * as UnixFS from '@ipld/unixfs'\nimport * as raw from 'multiformats/codecs/raw'\n\nconst SHARD_THRESHOLD = 1000 // shard directory after > 1,000 items\nconst queuingStrategy = UnixFS.withCapacity()\n\nconst defaultSettings = UnixFS.configure({\n fileChunkEncoder: raw,\n smallFileEncoder: raw\n})\n\n/**\n * @param {import('./types').BlobLike} blob\n * @param {UnixFS.EncoderSettings} [settings]\n * @returns {ReadableStream}\n */\nexport function createFileEncoderStream (blob, settings = defaultSettings) {\n /** @type {TransformStream} */\n const { readable, writable } = new TransformStream({}, queuingStrategy)\n const unixfsWriter = UnixFS.createWriter({ writable, settings })\n const fileBuilder = new UnixFsFileBuilder(blob)\n ;(async () => {\n await fileBuilder.finalize(unixfsWriter)\n await unixfsWriter.close()\n })()\n return readable\n}\n\nclass UnixFsFileBuilder {\n #file\n\n /** @param {{ stream: () => ReadableStream }} file */\n constructor (file) {\n this.#file = file\n }\n\n /** @param {import('@ipld/unixfs').View} writer */\n async finalize (writer) {\n const unixfsFileWriter = UnixFS.createFileWriter(writer)\n await this.#file.stream().pipeTo(\n new WritableStream({\n async write (chunk) {\n await unixfsFileWriter.write(chunk)\n }\n })\n )\n return unixfsFileWriter.close()\n }\n}\n\nclass UnixFSDirectoryBuilder {\n /** @type {Map} */\n entries = new Map()\n\n /** @param {import('@ipld/unixfs').View} writer */\n async finalize (writer) {\n const dirWriter = this.entries.size <= SHARD_THRESHOLD\n ? UnixFS.createDirectoryWriter(writer)\n /* c8 ignore next */\n : UnixFS.createShardedDirectoryWriter(writer)\n for (const [name, entry] of this.entries) {\n const link = await entry.finalize(writer)\n dirWriter.set(name, link)\n }\n return dirWriter.close()\n }\n}\n\n/**\n * @param {Iterable} files\n * @param {UnixFS.EncoderSettings} [settings]\n * @returns {ReadableStream}\n */\nexport function createDirectoryEncoderStream (files, settings = defaultSettings) {\n const rootDir = new UnixFSDirectoryBuilder()\n\n for (const file of files) {\n const path = file.name.split('/')\n if (path[0] === '' || path[0] === '.') {\n path.shift()\n }\n let dir = rootDir\n for (const [i, name] of path.entries()) {\n if (i === path.length - 1) {\n dir.entries.set(name, new UnixFsFileBuilder(file))\n break\n }\n let dirBuilder = dir.entries.get(name)\n if (dirBuilder == null) {\n dirBuilder = new UnixFSDirectoryBuilder()\n dir.entries.set(name, dirBuilder)\n }\n if (!(dirBuilder instanceof UnixFSDirectoryBuilder)) {\n throw new Error(`\"${name}\" cannot be a file and a directory`)\n }\n dir = dirBuilder\n }\n }\n\n /** @type {TransformStream} */\n const { readable, writable } = new TransformStream({}, queuingStrategy)\n const unixfsWriter = UnixFS.createWriter({ writable, settings })\n ;(async () => {\n await rootDir.finalize(unixfsWriter)\n await unixfsWriter.close()\n })()\n\n return readable\n}\n","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","// This is an unfortunate replacement for @sindresorhus/is that we need to\n// re-implement for performance purposes. In particular the is.observable()\n// check is expensive, and unnecessary for our purposes. The values returned\n// are compatible with @sindresorhus/is, however.\n\nconst typeofs = [\n 'string',\n 'number',\n 'bigint',\n 'symbol'\n]\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]\n\n/**\n * @param {any} value\n * @returns {string}\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 /* c8 ignore next 4 */\n // not going to bother testing this, it's not going to be valid anyway\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 /* c8 ignore next */\n return 'Object'\n}\n\n/**\n * @param {any} value\n * @returns {boolean}\n */\nfunction isBuffer (value) {\n return value && value.constructor && value.constructor.isBuffer && value.constructor.isBuffer.call(null, value)\n}\n\n/**\n * @param {any} value\n * @returns {string|undefined}\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 /* c8 ignore next */\n return undefined\n}\n","class Type {\n /**\n * @param {number} major\n * @param {string} name\n * @param {boolean} terminal\n */\n constructor (major, name, terminal) {\n this.major = major\n this.majorEncoded = major << 5\n this.name = name\n this.terminal = terminal\n }\n\n /* c8 ignore next 3 */\n toString () {\n return `Type[${this.major}].${this.name}`\n }\n\n /**\n * @param {Type} typ\n * @returns {number}\n */\n compare (typ) {\n /* c8 ignore next 1 */\n return this.major < typ.major ? -1 : this.major > typ.major ? 1 : 0\n }\n}\n\n// convert to static fields when better supported\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) // terminal?\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)\n// Type.indefiniteLength = new Type(0, 'indefiniteLength', true)\n\nclass Token {\n /**\n * @param {Type} type\n * @param {any} [value]\n * @param {number} [encodedLength]\n */\n constructor (type, value, encodedLength) {\n this.type = type\n this.value = value\n this.encodedLength = encodedLength\n /** @type {Uint8Array|undefined} */\n this.encodedBytes = undefined\n /** @type {Uint8Array|undefined} */\n this.byteValue = undefined\n }\n\n /* c8 ignore next 3 */\n toString () {\n return `Token[${this.type}].${this.value}`\n }\n}\n\nexport { Type, Token }\n","// Use Uint8Array directly in the browser, use Buffer in Node.js but don't\n// speak its name directly to avoid bundlers pulling in the `Buffer` polyfill\n\n// @ts-ignore\nexport const useBuffer = globalThis.process &&\n // @ts-ignore\n !globalThis.process.browser &&\n // @ts-ignore\n globalThis.Buffer &&\n // @ts-ignore\n typeof globalThis.Buffer.isBuffer === 'function'\n\nconst textDecoder = new TextDecoder()\nconst textEncoder = new TextEncoder()\n\n/**\n * @param {Uint8Array} buf\n * @returns {boolean}\n */\nfunction isBuffer (buf) {\n // @ts-ignore\n return useBuffer && globalThis.Buffer.isBuffer(buf)\n}\n\n/**\n * @param {Uint8Array|number[]} buf\n * @returns {Uint8Array}\n */\nexport function asU8A (buf) {\n /* c8 ignore next */\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}\n\nexport const toString = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n return end - start > 64\n ? // eslint-disable-line operator-linebreak\n // @ts-ignore\n globalThis.Buffer.from(bytes.subarray(start, end)).toString('utf8')\n : utf8Slice(bytes, start, end)\n }\n /* c8 ignore next 11 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n return end - start > 64\n ? textDecoder.decode(bytes.subarray(start, end))\n : utf8Slice(bytes, start, end)\n }\n\nexport const fromString = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {string} string\n */\n (string) => {\n return string.length > 64\n ? // eslint-disable-line operator-linebreak\n // @ts-ignore\n globalThis.Buffer.from(string)\n : utf8ToBytes(string)\n }\n /* c8 ignore next 7 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {string} string\n */\n (string) => {\n return string.length > 64 ? textEncoder.encode(string) : utf8ToBytes(string)\n }\n\n/**\n * Buffer variant not fast enough for what we need\n * @param {number[]} arr\n * @returns {Uint8Array}\n */\nexport const fromArray = (arr) => {\n return Uint8Array.from(arr)\n}\n\nexport const slice = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n if (isBuffer(bytes)) {\n return new Uint8Array(bytes.subarray(start, end))\n }\n return bytes.slice(start, end)\n }\n /* c8 ignore next 9 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} bytes\n * @param {number} start\n * @param {number} end\n */\n (bytes, start, end) => {\n return bytes.slice(start, end)\n }\n\nexport const concat = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array[]} chunks\n * @param {number} length\n * @returns {Uint8Array}\n */\n (chunks, length) => {\n // might get a stray plain Array here\n /* c8 ignore next 1 */\n chunks = chunks.map((c) => c instanceof Uint8Array\n ? c\n // this case is occasionally missed during test runs so becomes coverage-flaky\n /* c8 ignore next 4 */\n : // eslint-disable-line operator-linebreak\n // @ts-ignore\n globalThis.Buffer.from(c))\n // @ts-ignore\n return asU8A(globalThis.Buffer.concat(chunks, length))\n }\n /* c8 ignore next 19 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array[]} chunks\n * @param {number} length\n * @returns {Uint8Array}\n */\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 // final chunk that's bigger than we need\n b = b.subarray(0, out.length - off)\n }\n out.set(b, off)\n off += b.length\n }\n return out\n }\n\nexport const alloc = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {number} size\n * @returns {Uint8Array}\n */\n (size) => {\n // we always write over the contents we expose so this should be safe\n // @ts-ignore\n return globalThis.Buffer.allocUnsafe(size)\n }\n /* c8 ignore next 8 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {number} size\n * @returns {Uint8Array}\n */\n (size) => {\n return new Uint8Array(size)\n }\n\nexport const toHex = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} d\n * @returns {string}\n */\n (d) => {\n if (typeof d === 'string') {\n return d\n }\n // @ts-ignore\n return globalThis.Buffer.from(toBytes(d)).toString('hex')\n }\n /* c8 ignore next 12 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {Uint8Array} d\n * @returns {string}\n */\n (d) => {\n if (typeof d === 'string') {\n return d\n }\n // @ts-ignore not smart enough to figure this out\n return Array.prototype.reduce.call(toBytes(d), (p, c) => `${p}${c.toString(16).padStart(2, '0')}`, '')\n }\n\nexport const fromHex = useBuffer\n ? // eslint-disable-line operator-linebreak\n /**\n * @param {string|Uint8Array} hex\n * @returns {Uint8Array}\n */\n (hex) => {\n if (hex instanceof Uint8Array) {\n return hex\n }\n // @ts-ignore\n return globalThis.Buffer.from(hex, 'hex')\n }\n /* c8 ignore next 17 */\n : // eslint-disable-line operator-linebreak\n /**\n * @param {string|Uint8Array} hex\n * @returns {Uint8Array}\n */\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('')\n .map((/** @type {string} */ c, /** @type {number} */ i, /** @type {string[]} */ d) => i % 2 === 0 ? `0x${c}${d[i + 1]}` : '')\n .filter(Boolean)\n .map((/** @type {string} */ e) => parseInt(e, 16)))\n }\n\n/**\n * @param {Uint8Array|ArrayBuffer|ArrayBufferView} obj\n * @returns {Uint8Array}\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 /* c8 ignore next */\n throw new Error('Unknown type, must be binary type')\n}\n\n/**\n * @param {Uint8Array} b1\n * @param {Uint8Array} b2\n * @returns {number}\n */\nexport function compare (b1, b2) {\n /* c8 ignore next 5 */\n if (isBuffer(b1) && isBuffer(b2)) {\n // probably not possible to get here in the current API\n // @ts-ignore Buffer\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 } /* c8 ignore next 3 */\n return 0\n}\n\n// The below code is taken from https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n// Licensed Apache-2.0.\n\n/**\n * @param {string} str\n * @returns {number[]}\n */\nfunction utf8ToBytes (str) {\n const out = []\n let p = 0\n for (let i = 0; i < str.length; i++) {\n let c = str.charCodeAt(i)\n if (c < 128) {\n out[p++] = c\n } else if (c < 2048) {\n out[p++] = (c >> 6) | 192\n out[p++] = (c & 63) | 128\n } else if (\n ((c & 0xFC00) === 0xD800) && (i + 1) < str.length &&\n ((str.charCodeAt(i + 1) & 0xFC00) === 0xDC00)) {\n // Surrogate Pair\n c = 0x10000 + ((c & 0x03FF) << 10) + (str.charCodeAt(++i) & 0x03FF)\n out[p++] = (c >> 18) | 240\n out[p++] = ((c >> 12) & 63) | 128\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n } else {\n out[p++] = (c >> 12) | 224\n out[p++] = ((c >> 6) & 63) | 128\n out[p++] = (c & 63) | 128\n }\n }\n return out\n}\n\n// The below code is mostly taken from https://github.com/feross/buffer\n// Licensed MIT. Copyright (c) Feross Aboukhadijeh\n\n/**\n * @param {Uint8Array} buf\n * @param {number} offset\n * @param {number} end\n * @returns {string}\n */\nfunction utf8Slice (buf, offset, end) {\n const res = []\n\n while (offset < end) {\n const firstByte = buf[offset]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xef) ? 4 : (firstByte > 0xdf) ? 3 : (firstByte > 0xbf) ? 2 : 1\n\n if (offset + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[offset + 1]\n if ((secondByte & 0xc0) === 0x80) {\n tempCodePoint = (firstByte & 0x1f) << 0x6 | (secondByte & 0x3f)\n if (tempCodePoint > 0x7f) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[offset + 1]\n thirdByte = buf[offset + 2]\n if ((secondByte & 0xc0) === 0x80 && (thirdByte & 0xc0) === 0x80) {\n tempCodePoint = (firstByte & 0xf) << 0xc | (secondByte & 0x3f) << 0x6 | (thirdByte & 0x3f)\n /* c8 ignore next 3 */\n if (tempCodePoint > 0x7ff && (tempCodePoint < 0xd800 || tempCodePoint > 0xdfff)) {\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 & 0xc0) === 0x80 && (thirdByte & 0xc0) === 0x80 && (fourthByte & 0xc0) === 0x80) {\n tempCodePoint = (firstByte & 0xf) << 0x12 | (secondByte & 0x3f) << 0xc | (thirdByte & 0x3f) << 0x6 | (fourthByte & 0x3f)\n if (tempCodePoint > 0xffff && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n /* c8 ignore next 5 */\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xfffd\n bytesPerSequence = 1\n } else if (codePoint > 0xffff) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3ff | 0xd800)\n codePoint = 0xdc00 | codePoint & 0x3ff\n }\n\n res.push(codePoint)\n offset += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\n/**\n * @param {number[]} codePoints\n * @returns {string}\n */\nexport function decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n /* c8 ignore next 10 */\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n","/**\n * Bl is a list of byte chunks, similar to https://github.com/rvagg/bl but for\n * writing rather than reading.\n * A Bl object accepts set() operations for individual bytes and copyTo() for\n * inserting byte arrays. These write operations don't automatically increment\n * the internal cursor so its \"length\" won't be changed. Instead, increment()\n * must be called to extend its length to cover the inserted data.\n * The toBytes() call will convert all internal memory to a single Uint8Array of\n * the correct length, truncating any data that is stored but hasn't been\n * included by an increment().\n * get() can retrieve a single byte.\n * All operations (except toBytes()) take an \"offset\" argument that will perform\n * the write at the offset _from the current cursor_. For most operations this\n * will be `0` to write at the current cursor position but it can be ahead of\n * the current cursor. Negative offsets probably work but are untested.\n */\n\n// TODO: ipjs doesn't support this, only for test files: https://github.com/mikeal/ipjs/blob/master/src/package/testFile.js#L39\nimport { alloc, concat, slice } from './byte-utils.js'\n\n// the ts-ignores in this file are almost all for the `Uint8Array|number[]` duality that exists\n// for perf reasons. Consider better approaches to this or removing it entirely, it is quite\n// risky because of some assumptions about small chunks === number[] and everything else === Uint8Array.\n\nconst defaultChunkSize = 256\n\nexport class Bl {\n /**\n * @param {number} [chunkSize]\n */\n constructor (chunkSize = defaultChunkSize) {\n this.chunkSize = chunkSize\n /** @type {number} */\n this.cursor = 0\n /** @type {number} */\n this.maxCursor = -1\n /** @type {(Uint8Array|number[])[]} */\n this.chunks = []\n // keep the first chunk around if we can to save allocations for future encodes\n /** @type {Uint8Array|number[]|null} */\n this._initReuseChunk = null\n }\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\n /**\n * @param {Uint8Array|number[]} bytes\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 // we have at least one chunk and we can fit these bytes into that chunk\n const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1\n // @ts-ignore\n topChunk.set(bytes, chunkPos)\n } else {\n // can't fit it in\n if (topChunk) {\n // trip the last chunk to `cursor` if we need to\n const chunkPos = topChunk.length - (this.maxCursor - this.cursor) - 1\n if (chunkPos < topChunk.length) {\n // @ts-ignore\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 // make a new chunk and copy the new one into it\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 // @ts-ignore\n topChunk.set(bytes, 0)\n } else {\n // push the new bytes in as its own chunk\n this.chunks.push(bytes)\n this.maxCursor += bytes.length\n }\n }\n this.cursor += bytes.length\n }\n\n /**\n * @param {boolean} [reset]\n * @returns {Uint8Array}\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 /* c8 ignore next 2 */\n // @ts-ignore\n byts = this.cursor === chunk.length ? chunk : chunk.subarray(0, this.cursor)\n this._initReuseChunk = null\n this.chunks = []\n } else {\n // @ts-ignore\n byts = slice(chunk, 0, this.cursor)\n }\n } else {\n // @ts-ignore\n byts = concat(this.chunks, this.cursor)\n }\n if (reset) {\n this.reset()\n }\n return byts\n }\n}\n","const decodeErrPrefix = 'CBOR decode error:'\nconst encodeErrPrefix = 'CBOR encode error:'\n\nconst uintMinorPrefixBytes = []\nuintMinorPrefixBytes[23] = 1\nuintMinorPrefixBytes[24] = 2\nuintMinorPrefixBytes[25] = 3\nuintMinorPrefixBytes[26] = 5\nuintMinorPrefixBytes[27] = 9\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} need\n */\nfunction assertEnoughData (data, pos, need) {\n if (data.length - pos < need) {\n throw new Error(`${decodeErrPrefix} not enough data for type`)\n }\n}\n\nexport {\n decodeErrPrefix,\n encodeErrPrefix,\n uintMinorPrefixBytes,\n assertEnoughData\n}\n","/* globals BigInt */\n\nimport { Token, Type } from './token.js'\nimport { decodeErrPrefix, assertEnoughData } from './common.js'\n\nexport const uintBoundaries = [24, 256, 65536, 4294967296, BigInt('18446744073709551616')]\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number}\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}\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number}\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}\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number}\n */\nexport function readUint32 (data, offset, options) {\n assertEnoughData(data, offset, 4)\n const value = (data[offset] * 16777216 /* 2 ** 24 */) + (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}\n\n/**\n * @param {Uint8Array} data\n * @param {number} offset\n * @param {DecodeOptions} options\n * @returns {number|bigint}\n */\nexport function readUint64 (data, offset, options) {\n // assume BigInt, convert back to Number if within safe range\n assertEnoughData(data, offset, 8)\n const hi = (data[offset] * 16777216 /* 2 ** 24 */) + (data[offset + 1] << 16) + (data[offset + 2] << 8) + data[offset + 3]\n const lo = (data[offset + 4] * 16777216 /* 2 ** 24 */) + (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}\n\n/* not required thanks to quick[] list\nconst oneByteTokens = new Array(24).fill(0).map((v, i) => new Token(Type.uint, i, 1))\nexport function decodeUintCompact (data, pos, minor, options) {\n return oneByteTokens[minor]\n}\n*/\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint8 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint8(data, pos + 1, options), 2)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint16 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint16(data, pos + 1, options), 3)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint32 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint32(data, pos + 1, options), 5)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeUint64 (data, pos, _minor, options) {\n return new Token(Type.uint, readUint64(data, pos + 1, options), 9)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeUint (buf, token) {\n return encodeUintValue(buf, 0, token.value)\n}\n\n/**\n * @param {Bl} buf\n * @param {number} major\n * @param {number|bigint} uint\n */\nexport function encodeUintValue (buf, major, uint) {\n if (uint < uintBoundaries[0]) {\n const nuint = Number(uint)\n // pack into one byte, minor=0, additional=value\n buf.push([major | nuint])\n } else if (uint < uintBoundaries[1]) {\n const nuint = Number(uint)\n // pack into two byte, minor=0, additional=24\n buf.push([major | 24, nuint])\n } else if (uint < uintBoundaries[2]) {\n const nuint = Number(uint)\n // pack into three byte, minor=0, additional=25\n buf.push([major | 25, nuint >>> 8, nuint & 0xff])\n } else if (uint < uintBoundaries[3]) {\n const nuint = Number(uint)\n // pack into five byte, minor=0, additional=26\n buf.push([major | 26, (nuint >>> 24) & 0xff, (nuint >>> 16) & 0xff, (nuint >>> 8) & 0xff, nuint & 0xff])\n } else {\n const buint = BigInt(uint)\n if (buint < uintBoundaries[4]) {\n // pack into nine byte, minor=0, additional=27\n const set = [major | 27, 0, 0, 0, 0, 0, 0, 0]\n // simulate bitwise above 32 bits\n let lo = Number(buint & BigInt(0xffffffff))\n let hi = Number(buint >> BigInt(32) & BigInt(0xffffffff))\n set[8] = lo & 0xff\n lo = lo >> 8\n set[7] = lo & 0xff\n lo = lo >> 8\n set[6] = lo & 0xff\n lo = lo >> 8\n set[5] = lo & 0xff\n set[4] = hi & 0xff\n hi = hi >> 8\n set[3] = hi & 0xff\n hi = hi >> 8\n set[2] = hi & 0xff\n hi = hi >> 8\n set[1] = hi & 0xff\n buf.push(set)\n } else {\n throw new Error(`${decodeErrPrefix} encountered BigInt larger than allowable range`)\n }\n }\n}\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeUint.encodedSize = function encodedSize (token) {\n return encodeUintValue.encodedSize(token.value)\n}\n\n/**\n * @param {number} uint\n * @returns {number}\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}\n\n/**\n * @param {Token} tok1\n * @param {Token} tok2\n * @returns {number}\n */\nencodeUint.compareTokens = function compareTokens (tok1, tok2) {\n return tok1.value < tok2.value ? -1 : tok1.value > tok2.value ? 1 : /* c8 ignore next */ 0\n}\n","/* eslint-env es2020 */\n\nimport { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport { decodeErrPrefix } from './common.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint8 (data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint8(data, pos + 1, options), 2)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint16 (data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint16(data, pos + 1, options), 3)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeNegint32 (data, pos, _minor, options) {\n return new Token(Type.negint, -1 - uint.readUint32(data, pos + 1, options), 5)\n}\n\nconst neg1b = BigInt(-1)\nconst pos1b = BigInt(1)\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\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}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\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}\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeNegint.encodedSize = function encodedSize (token) {\n const negint = token.value\n const unsigned = (typeof negint === 'bigint' ? (negint * neg1b - pos1b) : (negint * -1 - 1))\n /* c8 ignore next 4 */\n // handled by quickEncode, we shouldn't get here but it's included for completeness\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}\n\n/**\n * @param {Token} tok1\n * @param {Token} tok2\n * @returns {number}\n */\nencodeNegint.compareTokens = function compareTokens (tok1, tok2) {\n // opposite of the uint comparison since we store the uint version in bytes\n return tok1.value < tok2.value ? 1 : tok1.value > tok2.value ? -1 : /* c8 ignore next */ 0\n}\n","import { Token, Type } from './token.js'\nimport { assertEnoughData, decodeErrPrefix } from './common.js'\nimport * as uint from './0uint.js'\nimport { compare, fromString, slice } from './byte-utils.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} prefix\n * @param {number} length\n * @returns {Token}\n */\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}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeBytesCompact (data, pos, minor, _options) {\n return toToken(data, pos, 1, minor)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeBytes32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options))\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\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}\n\n/**\n * `encodedBytes` allows for caching when we do a byte version of a string\n * for key sorting purposes\n * @param {Token} token\n * @returns {Uint8Array}\n */\nfunction tokenBytes (token) {\n if (token.encodedBytes === undefined) {\n token.encodedBytes = token.type === Type.string ? fromString(token.value) : token.value\n }\n // @ts-ignore c'mon\n return token.encodedBytes\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\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}\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeBytes.encodedSize = function encodedSize (token) {\n const bytes = tokenBytes(token)\n return uint.encodeUintValue.encodedSize(bytes.length) + bytes.length\n}\n\n/**\n * @param {Token} tok1\n * @param {Token} tok2\n * @returns {number}\n */\nencodeBytes.compareTokens = function compareTokens (tok1, tok2) {\n return compareBytes(tokenBytes(tok1), tokenBytes(tok2))\n}\n\n/**\n * @param {Uint8Array} b1\n * @param {Uint8Array} b2\n * @returns {number}\n */\nexport function compareBytes (b1, b2) {\n return b1.length < b2.length ? -1 : b1.length > b2.length ? 1 : compare(b1, b2)\n}\n","import { Token, Type } from './token.js'\nimport { assertEnoughData, decodeErrPrefix } from './common.js'\nimport * as uint from './0uint.js'\nimport { encodeBytes } from './2bytes.js'\nimport { toString, slice } from './byte-utils.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} prefix\n * @param {number} length\n * @param {DecodeOptions} options\n * @returns {Token}\n */\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}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeStringCompact (data, pos, minor, options) {\n return toToken(data, pos, 1, minor, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options), options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options), options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeString32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options), options)\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\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}\n\nexport const encodeString = encodeBytes\n","import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport { decodeErrPrefix } from './common.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} prefix\n * @param {number} length\n * @returns {Token}\n */\nfunction toToken (_data, _pos, prefix, length) {\n return new Token(Type.array, length, prefix)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeArrayCompact (data, pos, minor, _options) {\n return toToken(data, pos, 1, minor)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeArray32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options))\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\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}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\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}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeArray (buf, token) {\n uint.encodeUintValue(buf, Type.array.majorEncoded, token.value)\n}\n\n// using an array as a map key, are you sure about this? we can only sort\n// by map length here, it's up to the encoder to decide to look deeper\nencodeArray.compareTokens = uint.encodeUint.compareTokens\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeArray.encodedSize = function encodedSize (token) {\n return uint.encodeUintValue.encodedSize(token.value)\n}\n","import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\nimport { decodeErrPrefix } from './common.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} prefix\n * @param {number} length\n * @returns {Token}\n */\nfunction toToken (_data, _pos, prefix, length) {\n return new Token(Type.map, length, prefix)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeMapCompact (data, pos, minor, _options) {\n return toToken(data, pos, 1, minor)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap8 (data, pos, _minor, options) {\n return toToken(data, pos, 2, uint.readUint8(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap16 (data, pos, _minor, options) {\n return toToken(data, pos, 3, uint.readUint16(data, pos + 1, options))\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeMap32 (data, pos, _minor, options) {\n return toToken(data, pos, 5, uint.readUint32(data, pos + 1, options))\n}\n\n// TODO: maybe we shouldn't support this ..\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\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}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\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}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeMap (buf, token) {\n uint.encodeUintValue(buf, Type.map.majorEncoded, token.value)\n}\n\n// using a map as a map key, are you sure about this? we can only sort\n// by map length here, it's up to the encoder to decide to look deeper\nencodeMap.compareTokens = uint.encodeUint.compareTokens\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeMap.encodedSize = function encodedSize (token) {\n return uint.encodeUintValue.encodedSize(token.value)\n}\n","import { Token, Type } from './token.js'\nimport * as uint from './0uint.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} minor\n * @param {DecodeOptions} _options\n * @returns {Token}\n */\nexport function decodeTagCompact (_data, _pos, minor, _options) {\n return new Token(Type.tag, minor, 1)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag8 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint8(data, pos + 1, options), 2)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag16 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint16(data, pos + 1, options), 3)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag32 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint32(data, pos + 1, options), 5)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeTag64 (data, pos, _minor, options) {\n return new Token(Type.tag, uint.readUint64(data, pos + 1, options), 9)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n */\nexport function encodeTag (buf, token) {\n uint.encodeUintValue(buf, Type.tag.majorEncoded, token.value)\n}\n\nencodeTag.compareTokens = uint.encodeUint.compareTokens\n\n/**\n * @param {Token} token\n * @returns {number}\n */\nencodeTag.encodedSize = function encodedSize (token) {\n return uint.encodeUintValue.encodedSize(token.value)\n}\n","// TODO: shift some of the bytes logic to bytes-utils so we can use Buffer\n// where possible\n\nimport { Token, Type } from './token.js'\nimport { decodeErrPrefix } from './common.js'\nimport { encodeUint } from './0uint.js'\n\n/**\n * @typedef {import('./bl.js').Bl} Bl\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n * @typedef {import('../interface').EncodeOptions} EncodeOptions\n */\n\nconst MINOR_FALSE = 20\nconst MINOR_TRUE = 21\nconst MINOR_NULL = 22\nconst MINOR_UNDEFINED = 23\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\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}\n\n/**\n * @param {Uint8Array} _data\n * @param {number} _pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\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}\n\n/**\n * @param {number} value\n * @param {number} bytes\n * @param {DecodeOptions} options\n * @returns {Token}\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}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeFloat16 (data, pos, _minor, options) {\n return createToken(readFloat16(data, pos + 1), 3, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeFloat32 (data, pos, _minor, options) {\n return createToken(readFloat32(data, pos + 1), 5, options)\n}\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} _minor\n * @param {DecodeOptions} options\n * @returns {Token}\n */\nexport function decodeFloat64 (data, pos, _minor, options) {\n return createToken(readFloat64(data, pos + 1), 9, options)\n}\n\n/**\n * @param {Bl} buf\n * @param {Token} token\n * @param {EncodeOptions} options\n */\nexport function encodeFloat (buf, token, options) {\n const float = token.value\n\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] = 0xf9\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] = 0xfa\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] = 0xfb\n buf.push(ui8a.slice(0, 9))\n }\n }\n}\n\n/**\n * @param {Token} token\n * @param {EncodeOptions} options\n * @returns {number}\n */\nencodeFloat.encodedSize = function encodedSize (token, options) {\n const float = token.value\n\n if (float === false || float === true || float === null || float === undefined) {\n return 1\n }\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}\n\nconst buffer = new ArrayBuffer(9)\nconst dataView = new DataView(buffer, 1)\nconst ui8a = new Uint8Array(buffer, 0)\n\n/**\n * @param {number} inp\n */\nfunction encodeFloat16 (inp) {\n if (inp === Infinity) {\n dataView.setUint16(0, 0x7c00, false)\n } else if (inp === -Infinity) {\n dataView.setUint16(0, 0xfc00, false)\n } else if (Number.isNaN(inp)) {\n dataView.setUint16(0, 0x7e00, false)\n } else {\n dataView.setFloat32(0, inp)\n const valu32 = dataView.getUint32(0)\n const exponent = (valu32 & 0x7f800000) >> 23\n const mantissa = valu32 & 0x7fffff\n\n /* c8 ignore next 6 */\n if (exponent === 0xff) {\n // too big, Infinity, but this should be hard (impossible?) to trigger\n dataView.setUint16(0, 0x7c00, false)\n } else if (exponent === 0x00) {\n // 0.0, -0.0 and subnormals, shouldn't be possible to get here because 0.0 should be counted as an int\n dataView.setUint16(0, ((inp & 0x80000000) >> 16) | (mantissa >> 13), false)\n } else { // standard numbers\n // chunks of logic here borrowed from https://github.com/PJK/libcbor/blob/c78f437182533e3efa8d963ff4b945bb635c2284/src/cbor/encoding.c#L127\n const logicalExponent = exponent - 127\n // Now we know that 2^exponent <= 0 logically\n /* c8 ignore next 6 */\n if (logicalExponent < -24) {\n /* No unambiguous representation exists, this float is not a half float\n and is too small to be represented using a half, round off to zero.\n Consistent with the reference implementation. */\n // should be difficult (impossible?) to get here in JS\n dataView.setUint16(0, 0)\n } else if (logicalExponent < -14) {\n /* Offset the remaining decimal places by shifting the significand, the\n value is lost. This is an implementation decision that works around the\n absence of standard half-float in the language. */\n dataView.setUint16(0, ((valu32 & 0x80000000) >> 16) | /* sign bit */ (1 << (24 + logicalExponent)), false)\n } else {\n dataView.setUint16(0, ((valu32 & 0x80000000) >> 16) | ((logicalExponent + 15) << 10) | (mantissa >> 13), false)\n }\n }\n }\n}\n\n/**\n * @param {Uint8Array} ui8a\n * @param {number} pos\n * @returns {number}\n */\nfunction readFloat16 (ui8a, pos) {\n if (ui8a.length - pos < 2) {\n throw new Error(`${decodeErrPrefix} not enough data for float16`)\n }\n\n const half = (ui8a[pos] << 8) + ui8a[pos + 1]\n if (half === 0x7c00) {\n return Infinity\n }\n if (half === 0xfc00) {\n return -Infinity\n }\n if (half === 0x7e00) {\n return NaN\n }\n const exp = (half >> 10) & 0x1f\n const mant = half & 0x3ff\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 /* c8 ignore next 4 */\n } else {\n // may not be possible to get here\n val = mant === 0 ? Infinity : NaN\n }\n return (half & 0x8000) ? -val : val\n}\n\n/**\n * @param {number} inp\n */\nfunction encodeFloat32 (inp) {\n dataView.setFloat32(0, inp, false)\n}\n\n/**\n * @param {Uint8Array} ui8a\n * @param {number} pos\n * @returns {number}\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}\n\n/**\n * @param {number} inp\n */\nfunction encodeFloat64 (inp) {\n dataView.setFloat64(0, inp, false)\n}\n\n/**\n * @param {Uint8Array} ui8a\n * @param {number} pos\n * @returns {number}\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}\n\n/**\n * @param {Token} _tok1\n * @param {Token} _tok2\n * @returns {number}\n */\nencodeFloat.compareTokens = encodeUint.compareTokens\n/*\nencodeFloat.compareTokens = function compareTokens (_tok1, _tok2) {\n return _tok1\n throw new Error(`${encodeErrPrefix} cannot use floats as map keys`)\n}\n*/\n","import { Token, Type } 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'\n\n/**\n * @typedef {import('../interface').DecodeOptions} DecodeOptions\n */\n\n/**\n * @param {Uint8Array} data\n * @param {number} pos\n * @param {number} minor\n */\nfunction invalidMinor (data, pos, minor) {\n throw new Error(`${decodeErrPrefix} encountered invalid minor (${minor}) for major ${data[pos] >>> 5}`)\n}\n\n/**\n * @param {string} msg\n * @returns {()=>any}\n */\nfunction errorer (msg) {\n return () => { throw new Error(`${decodeErrPrefix} ${msg}`) }\n}\n\n/** @type {((data:Uint8Array, pos:number, minor:number, options?:DecodeOptions) => any)[]} */\nexport const jump = []\n\n// unsigned integer, 0x00..0x17 (0..23)\nfor (let i = 0; i <= 0x17; i++) {\n jump[i] = invalidMinor // uint.decodeUintCompact, handled by quick[]\n}\njump[0x18] = uint.decodeUint8 // unsigned integer, one-byte uint8_t follows\njump[0x19] = uint.decodeUint16 // unsigned integer, two-byte uint16_t follows\njump[0x1a] = uint.decodeUint32 // unsigned integer, four-byte uint32_t follows\njump[0x1b] = uint.decodeUint64 // unsigned integer, eight-byte uint64_t follows\njump[0x1c] = invalidMinor\njump[0x1d] = invalidMinor\njump[0x1e] = invalidMinor\njump[0x1f] = invalidMinor\n// negative integer, -1-0x00..-1-0x17 (-1..-24)\nfor (let i = 0x20; i <= 0x37; i++) {\n jump[i] = invalidMinor // negintDecode, handled by quick[]\n}\njump[0x38] = negint.decodeNegint8 // negative integer, -1-n one-byte uint8_t for n follows\njump[0x39] = negint.decodeNegint16 // negative integer, -1-n two-byte uint16_t for n follows\njump[0x3a] = negint.decodeNegint32 // negative integer, -1-n four-byte uint32_t for follows\njump[0x3b] = negint.decodeNegint64 // negative integer, -1-n eight-byte uint64_t for follows\njump[0x3c] = invalidMinor\njump[0x3d] = invalidMinor\njump[0x3e] = invalidMinor\njump[0x3f] = invalidMinor\n// byte string, 0x00..0x17 bytes follow\nfor (let i = 0x40; i <= 0x57; i++) {\n jump[i] = bytes.decodeBytesCompact\n}\njump[0x58] = bytes.decodeBytes8 // byte string, one-byte uint8_t for n, and then n bytes follow\njump[0x59] = bytes.decodeBytes16 // byte string, two-byte uint16_t for n, and then n bytes follow\njump[0x5a] = bytes.decodeBytes32 // byte string, four-byte uint32_t for n, and then n bytes follow\njump[0x5b] = bytes.decodeBytes64 // byte string, eight-byte uint64_t for n, and then n bytes follow\njump[0x5c] = invalidMinor\njump[0x5d] = invalidMinor\njump[0x5e] = invalidMinor\njump[0x5f] = errorer('indefinite length bytes/strings are not supported') // byte string, byte strings follow, terminated by \"break\"\n// UTF-8 string 0x00..0x17 bytes follow\nfor (let i = 0x60; i <= 0x77; i++) {\n jump[i] = string.decodeStringCompact\n}\njump[0x78] = string.decodeString8 // UTF-8 string, one-byte uint8_t for n, and then n bytes follow\njump[0x79] = string.decodeString16 // UTF-8 string, two-byte uint16_t for n, and then n bytes follow\njump[0x7a] = string.decodeString32 // UTF-8 string, four-byte uint32_t for n, and then n bytes follow\njump[0x7b] = string.decodeString64 // UTF-8 string, eight-byte uint64_t for n, and then n bytes follow\njump[0x7c] = invalidMinor\njump[0x7d] = invalidMinor\njump[0x7e] = invalidMinor\njump[0x7f] = errorer('indefinite length bytes/strings are not supported') // UTF-8 strings follow, terminated by \"break\"\n// array, 0x00..0x17 data items follow\nfor (let i = 0x80; i <= 0x97; i++) {\n jump[i] = array.decodeArrayCompact\n}\njump[0x98] = array.decodeArray8 // array, one-byte uint8_t for n, and then n data items follow\njump[0x99] = array.decodeArray16 // array, two-byte uint16_t for n, and then n data items follow\njump[0x9a] = array.decodeArray32 // array, four-byte uint32_t for n, and then n data items follow\njump[0x9b] = array.decodeArray64 // array, eight-byte uint64_t for n, and then n data items follow\njump[0x9c] = invalidMinor\njump[0x9d] = invalidMinor\njump[0x9e] = invalidMinor\njump[0x9f] = array.decodeArrayIndefinite // array, data items follow, terminated by \"break\"\n// map, 0x00..0x17 pairs of data items follow\nfor (let i = 0xa0; i <= 0xb7; i++) {\n jump[i] = map.decodeMapCompact\n}\njump[0xb8] = map.decodeMap8 // map, one-byte uint8_t for n, and then n pairs of data items follow\njump[0xb9] = map.decodeMap16 // map, two-byte uint16_t for n, and then n pairs of data items follow\njump[0xba] = map.decodeMap32 // map, four-byte uint32_t for n, and then n pairs of data items follow\njump[0xbb] = map.decodeMap64 // map, eight-byte uint64_t for n, and then n pairs of data items follow\njump[0xbc] = invalidMinor\njump[0xbd] = invalidMinor\njump[0xbe] = invalidMinor\njump[0xbf] = map.decodeMapIndefinite // map, pairs of data items follow, terminated by \"break\"\n// tags\nfor (let i = 0xc0; i <= 0xd7; i++) {\n jump[i] = tag.decodeTagCompact\n}\njump[0xd8] = tag.decodeTag8\njump[0xd9] = tag.decodeTag16\njump[0xda] = tag.decodeTag32\njump[0xdb] = tag.decodeTag64\njump[0xdc] = invalidMinor\njump[0xdd] = invalidMinor\njump[0xde] = invalidMinor\njump[0xdf] = invalidMinor\n// 0xe0..0xf3 simple values, unsupported\nfor (let i = 0xe0; i <= 0xf3; i++) {\n jump[i] = errorer('simple values are not supported')\n}\njump[0xf4] = invalidMinor // false, handled by quick[]\njump[0xf5] = invalidMinor // true, handled by quick[]\njump[0xf6] = invalidMinor // null, handled by quick[]\njump[0xf7] = float.decodeUndefined // undefined\njump[0xf8] = errorer('simple values are not supported') // simple value, one byte follows, unsupported\njump[0xf9] = float.decodeFloat16 // half-precision float (two-byte IEEE 754)\njump[0xfa] = float.decodeFloat32 // single-precision float (four-byte IEEE 754)\njump[0xfb] = float.decodeFloat64 // double-precision float (eight-byte IEEE 754)\njump[0xfc] = invalidMinor\njump[0xfd] = invalidMinor\njump[0xfe] = invalidMinor\njump[0xff] = float.decodeBreak // \"break\" stop code\n\n/** @type {Token[]} */\nexport const quick = []\n// ints <24\nfor (let i = 0; i < 24; i++) {\n quick[i] = new Token(Type.uint, i, 1)\n}\n// negints >= -24\nfor (let i = -1; i >= -24; i--) {\n quick[31 - i] = new Token(Type.negint, i, 1)\n}\n// empty bytes\nquick[0x40] = new Token(Type.bytes, new Uint8Array(0), 1)\n// empty string\nquick[0x60] = new Token(Type.string, '', 1)\n// empty list\nquick[0x80] = new Token(Type.array, 0, 1)\n// empty map\nquick[0xa0] = new Token(Type.map, 0, 1)\n// false\nquick[0xf4] = new Token(Type.false, false, 1)\n// true\nquick[0xf5] = new Token(Type.true, true, 1)\n// null\nquick[0xf6] = new Token(Type.null, null, 1)\n\n/**\n * @param {Token} token\n * @returns {Uint8Array|undefined}\n */\nexport function quickEncodeToken (token) {\n switch (token.type) {\n case Type.false:\n return fromArray([0xf4])\n case Type.true:\n return fromArray([0xf5])\n case Type.null:\n return fromArray([0xf6])\n case Type.bytes:\n if (!token.value.length) {\n return fromArray([0x40])\n }\n return\n case Type.string:\n if (token.value === '') {\n return fromArray([0x60])\n }\n return\n case Type.array:\n if (token.value === 0) {\n return fromArray([0x80])\n }\n /* c8 ignore next 2 */\n // shouldn't be possible if this were called when there was only one token\n return\n case Type.map:\n if (token.value === 0) {\n return fromArray([0xa0])\n }\n /* c8 ignore next 2 */\n // shouldn't be possible if this were called when there was only one token\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}\n","import { is } from './is.js'\nimport { Token, Type } from './token.js'\nimport { Bl } from './bl.js'\nimport { encodeErrPrefix } from './common.js'\nimport { quickEncodeToken } from './jump.js'\nimport { asU8A } from './byte-utils.js'\n\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'\n\n/**\n * @typedef {import('../interface').EncodeOptions} EncodeOptions\n * @typedef {import('../interface').OptionalTypeEncoder} OptionalTypeEncoder\n * @typedef {import('../interface').Reference} Reference\n * @typedef {import('../interface').StrictTypeEncoder} StrictTypeEncoder\n * @typedef {import('../interface').TokenTypeEncoder} TokenTypeEncoder\n * @typedef {import('../interface').TokenOrNestedTokens} TokenOrNestedTokens\n */\n\n/** @type {EncodeOptions} */\nconst defaultEncodeOptions = {\n float64: false,\n mapSorter,\n quickEncodeToken\n}\n\n/** @returns {TokenTypeEncoder[]} */\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}\n\nconst cborEncoders = makeCborEncoders()\n\nconst buf = new Bl()\n\n/** @implements {Reference} */\nclass Ref {\n /**\n * @param {object|any[]} obj\n * @param {Reference|undefined} parent\n */\n constructor (obj, parent) {\n this.obj = obj\n this.parent = parent\n }\n\n /**\n * @param {object|any[]} obj\n * @returns {boolean}\n */\n includes (obj) {\n /** @type {Reference|undefined} */\n let p = this\n do {\n if (p.obj === obj) {\n return true\n }\n } while (p = p.parent) // eslint-disable-line\n return false\n }\n\n /**\n * @param {Reference|undefined} stack\n * @param {object|any[]} obj\n * @returns {Reference}\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}\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}\n\n/** @type {{[typeName: string]: StrictTypeEncoder}} */\nconst typeEncoders = {\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\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\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\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\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n Uint8Array (obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, obj)\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n string (obj, _typ, _options, _refStack) {\n return new Token(Type.string, obj)\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n boolean (obj, _typ, _options, _refStack) {\n return obj ? simpleTokens.true : simpleTokens.false\n },\n\n /**\n * @param {any} _obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n null (_obj, _typ, _options, _refStack) {\n return simpleTokens.null\n },\n\n /**\n * @param {any} _obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n undefined (_obj, _typ, _options, _refStack) {\n return simpleTokens.undefined\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n ArrayBuffer (obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, new Uint8Array(obj))\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} _options\n * @param {Reference} [_refStack]\n * @returns {TokenOrNestedTokens}\n */\n DataView (obj, _typ, _options, _refStack) {\n return new Token(Type.bytes, new Uint8Array(obj.buffer, obj.byteOffset, obj.byteLength))\n },\n\n /**\n * @param {any} obj\n * @param {string} _typ\n * @param {EncodeOptions} options\n * @param {Reference} [refStack]\n * @returns {TokenOrNestedTokens}\n */\n Array (obj, _typ, options, refStack) {\n if (!obj.length) {\n if (options.addBreakTokens === true) {\n return [simpleTokens.emptyArray, new Token(Type.break)]\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 [new Token(Type.array, obj.length), entries, new Token(Type.break)]\n }\n return [new Token(Type.array, obj.length), entries]\n },\n\n /**\n * @param {any} obj\n * @param {string} typ\n * @param {EncodeOptions} options\n * @param {Reference} [refStack]\n * @returns {TokenOrNestedTokens}\n */\n Object (obj, typ, options, refStack) {\n // could be an Object or a Map\n const isMap = typ !== 'Object'\n // it's slightly quicker to use Object.keys() than Object.entries()\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 [simpleTokens.emptyMap, new Token(Type.break)]\n }\n return simpleTokens.emptyMap\n }\n refStack = Ref.createCheck(refStack, obj)\n /** @type {TokenOrNestedTokens[]} */\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 [new Token(Type.map, length), entries, new Token(Type.break)]\n }\n return [new Token(Type.map, length), 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}\n\n/**\n * @param {any} obj\n * @param {EncodeOptions} [options]\n * @param {Reference} [refStack]\n * @returns {TokenOrNestedTokens}\n */\nfunction objectToTokens (obj, options = {}, refStack) {\n const typ = is(obj)\n const customTypeEncoder = (options && options.typeEncoders && /** @type {OptionalTypeEncoder} */ 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}\n\n/*\nCBOR key sorting is a mess.\n\nThe canonicalisation recommendation from https://tools.ietf.org/html/rfc7049#section-3.9\nincludes the wording:\n\n> The keys in every map must be sorted lowest value to highest.\n> Sorting is performed on the bytes of the representation of the key\n> data items without paying attention to the 3/5 bit splitting for\n> major types.\n> ...\n> * If two keys have different lengths, the shorter one sorts\n earlier;\n> * If two keys have the same length, the one with the lower value\n in (byte-wise) lexical order sorts earlier.\n\n1. It is not clear what \"bytes of the representation of the key\" means: is it\n the CBOR representation, or the binary representation of the object itself?\n Consider the int and uint difference here.\n2. It is not clear what \"without paying attention to\" means: do we include it\n and compare on that? Or do we omit the special prefix byte, (mostly) treating\n the key in its plain binary representation form.\n\nThe FIDO 2.0: Client To Authenticator Protocol spec takes the original CBOR\nwording and clarifies it according to their understanding.\nhttps://fidoalliance.org/specs/fido-v2.0-rd-20170927/fido-client-to-authenticator-protocol-v2.0-rd-20170927.html#message-encoding\n\n> The keys in every map must be sorted lowest value to highest. Sorting is\n> performed on the bytes of the representation of the key data items without\n> paying attention to the 3/5 bit splitting for major types. The sorting rules\n> are:\n> * If the major types are different, the one with the lower value in numerical\n> order sorts earlier.\n> * If two keys have different lengths, the shorter one sorts earlier;\n> * If two keys have the same length, the one with the lower value in\n> (byte-wise) lexical order sorts earlier.\n\nSome other implementations, such as borc, do a full encode then do a\nlength-first, byte-wise-second comparison:\nhttps://github.com/dignifiedquire/borc/blob/b6bae8b0bcde7c3976b0f0f0957208095c392a36/src/encoder.js#L358\nhttps://github.com/dignifiedquire/borc/blob/b6bae8b0bcde7c3976b0f0f0957208095c392a36/src/utils.js#L143-L151\n\nThis has the benefit of being able to easily handle arbitrary keys, including\ncomplex types (maps and arrays).\n\nWe'll opt for the FIDO approach, since it affords some efficies since we don't\nneed a full encode of each key to determine order and can defer to the types\nto determine how to most efficiently order their values (i.e. int and uint\nordering can be done on the numbers, no need for byte-wise, for example).\n\nRecommendation: stick to single key types or you'll get into trouble, and prefer\nstring keys because it's much simpler that way.\n*/\n\n/*\n(UPDATE, Dec 2020)\nhttps://tools.ietf.org/html/rfc8949 is the updated CBOR spec and clarifies some\nof the questions above with a new recommendation for sorting order being much\ncloser to what would be expected in other environments (i.e. no length-first\nweirdness).\nThis new sorting order is not yet implemented here but could be added as an\noption. \"Determinism\" (canonicity) is system dependent and it's difficult to\nchange existing systems that are built with existing expectations. So if a new\nordering is introduced here, the old needs to be kept as well with the user\nhaving the option.\n*/\n\n/**\n * @param {TokenOrNestedTokens[]} entries\n * @param {EncodeOptions} options\n */\nfunction sortMapEntries (entries, options) {\n if (options.mapSorter) {\n entries.sort(options.mapSorter)\n }\n}\n\n/**\n * @param {(Token|Token[])[]} e1\n * @param {(Token|Token[])[]} e2\n * @returns {number}\n */\nfunction mapSorter (e1, e2) {\n // the key position ([0]) could have a single token or an array\n // almost always it'll be a single token but complex key might get involved\n /* c8 ignore next 2 */\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\n // different key types\n if (keyToken1.type !== keyToken2.type) {\n return keyToken1.type.compare(keyToken2.type)\n }\n\n const major = keyToken1.type.major\n // TODO: handle case where cmp === 0 but there are more keyToken e. complex type)\n const tcmp = cborEncoders[major].compareTokens(keyToken1, keyToken2)\n /* c8 ignore next 5 */\n if (tcmp === 0) {\n // duplicate key or complex type where the first token matched,\n // i.e. a map or array and we're only comparing the opening token\n console.warn('WARNING: complex key types used, CBOR key sorting guarantees are gone')\n }\n return tcmp\n}\n\n/**\n * @param {Bl} buf\n * @param {TokenOrNestedTokens} tokens\n * @param {TokenTypeEncoder[]} encoders\n * @param {EncodeOptions} options\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}\n\n/**\n * @param {any} data\n * @param {TokenTypeEncoder[]} encoders\n * @param {EncodeOptions} options\n * @returns {Uint8Array}\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 /* c8 ignore next 4 */\n // this would be a problem with encodedSize() functions\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}\n\n/**\n * @param {any} data\n * @param {EncodeOptions} [options]\n * @returns {Uint8Array}\n */\nfunction encode (data, options) {\n options = Object.assign({}, defaultEncodeOptions, options)\n return encodeCustom(data, cborEncoders, options)\n}\n\nexport { objectToTokens, encode, encodeCustom, Ref }\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} ByteView\n */\n\n/**\n * @template T\n * @typedef {import('multiformats/codecs/interface').ArrayBufferView} ArrayBufferView\n */\n\n/**\n * @template T\n * @param {ByteView | ArrayBufferView} buf\n * @returns {ByteView}\n */\nexport function toByteView (buf) {\n if (buf instanceof ArrayBuffer) {\n return new Uint8Array(buf, 0, buf.byteLength)\n }\n\n return buf\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\nexport const encodeOptions = {\n ..._encodeOptions,\n typeEncoders: {\n ..._encodeOptions.typeEncoders\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}\n_decodeOptions.tags[CID_CBOR_TAG] = cidDecoder\n\nexport const decodeOptions = {\n ..._decodeOptions,\n tags: _decodeOptions.tags.slice()\n}\n\nexport const name = 'dag-cbor'\nexport const code = 0x71\n\n/**\n * @template T\n * @param {T} node\n * @returns {ByteView}\n */\nexport const encode = (node) => cborg.encode(node, _encodeOptions)\n\n/**\n * @template T\n * @param {ByteView | ArrayBufferView} data\n * @returns {T}\n */\nexport const decode = (data) => cborg.decode(toByteView(data), _decodeOptions)\n","/* eslint-env browser */\nimport varint from 'varint'\nimport { encode as cborEncode } from '@ipld/dag-cbor'\n\n/**\n * @param {import('multiformats').UnknownLink[]} roots\n * @returns {Uint8Array}\n */\nfunction encodeHeader (roots) {\n const headerBytes = cborEncode({ version: 1, roots })\n const varintBytes = varint.encode(headerBytes.length)\n const header = new Uint8Array(varintBytes.length + headerBytes.length)\n header.set(varintBytes, 0)\n header.set(headerBytes, varintBytes.length)\n return header\n}\n\n/**\n * @param {import('@ipld/unixfs').Block} block\n * @returns {Uint8Array}\n */\nfunction encodeBlock (block) {\n const varintBytes = varint.encode(block.cid.bytes.length + block.bytes.length)\n const bytes = new Uint8Array(varintBytes.length + block.cid.bytes.length + block.bytes.length)\n bytes.set(varintBytes)\n bytes.set(block.cid.bytes, varintBytes.length)\n bytes.set(block.bytes, varintBytes.length + block.cid.bytes.length)\n return bytes\n}\n\n/**\n * @extends {TransformStream}\n */\nexport class CAREncoderStream extends TransformStream {\n /** @param {import('multiformats').UnknownLink[]} roots */\n constructor (roots = []) {\n super({\n start: (controller) => controller.enqueue(encodeHeader(roots)),\n transform: (block, controller) => {\n controller.enqueue(encodeBlock(block))\n this.finalBlock = block\n }\n })\n /** @type {import('@ipld/unixfs').Block?} */\n this.finalBlock = null\n }\n}\n","import { CAREncoderStream, createDirectoryEncoderStream } from 'ipfs-car';\nimport { getApiRoot } from '~/utilities/api';\n\nconst getSHA256Hash = async (input: File) => {\n const fileAsBuffer = await input.arrayBuffer();\n const hashBuffer = await window.crypto.subtle.digest('SHA-256', fileAsBuffer);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n return hashArray.map((item) => item.toString(16).padStart(2, '0')).join('');\n};\n\nconst getPresignedUrl = async (profileId: string, filename: string) => {\n return await $fetch<{ request_token: string; issuer_did: string }>(`${getApiRoot()}/studio/presign_upload`, {\n method: 'POST',\n body: JSON.stringify({ profile_id: profileId, filename }),\n });\n};\n\nexport class FilebaseUploader {\n async upload(profileId: string, files: File[]): Promise<{ filename: string; uris: string[]; hash: string }[]> {\n const filesToUpload: File[] = [];\n const filesInDirectory = [];\n for (const file of files) {\n const filename = file.name;\n const hash = await getSHA256Hash(file);\n filesToUpload.push(file);\n filesInDirectory.push({ filename, hash });\n }\n\n // TODO this solution is buffering all the files, to find out the root CID. Won't work for large directories\n const blocks = [];\n const writableStream = new WritableStream({\n write: (block) => blocks.push(block),\n });\n\n await createDirectoryEncoderStream(filesToUpload).pipeTo(writableStream);\n\n const rootCID = blocks.at(-1).cid;\n const blockStream = new ReadableStream({\n pull(controller) {\n if (blocks.length) {\n controller.enqueue(blocks.shift());\n } else {\n controller.close();\n }\n },\n });\n\n const encodedBlocks = [];\n const encodedWritableStream = new WritableStream({\n write: (block) => encodedBlocks.push(block),\n });\n\n await blockStream.pipeThrough(new CAREncoderStream([rootCID])).pipeTo(encodedWritableStream);\n\n const carBlob = new Blob(encodedBlocks, { type: 'application/car' });\n const carFile = new File([carBlob], `${rootCID}.car`);\n\n await $fetch(await getPresignedUrl(profileId, carFile.name), {\n method: 'PUT',\n headers: { 'x-amz-meta-import': 'car' },\n body: carFile,\n });\n\n return filesInDirectory.map((entry) => ({\n ...entry,\n uris: [\n `https://ipfs.mintgarden.io/ipfs/${rootCID}/${encodeURIComponent(entry.filename)}`,\n `ipfs://${rootCID}/${encodeURIComponent(entry.filename)}`,\n ],\n }));\n }\n}\n\nexport function addCollectionToMetadata(metadataToUpload: any, collection: any) {\n metadataToUpload.collection = {\n id: collection.id,\n name: collection.name,\n attributes: [],\n };\n const addAttributeIfSet = (type: string, value: string | undefined) => {\n if (value) {\n metadataToUpload.collection.attributes.push({\n type,\n value,\n });\n }\n };\n addAttributeIfSet('description', collection.description);\n addAttributeIfSet('icon', collection.iconUrl);\n addAttributeIfSet('banner', collection.bannerUrl);\n addAttributeIfSet('twitter', collection.twitterHandle);\n addAttributeIfSet('website', collection.website);\n return metadataToUpload;\n}\n","\n\n\n","\n\n","\n\n\n","/* @license\nPapa Parse\nv5.4.1\nhttps://github.com/mholt/PapaParse\nLicense: MIT\n*/\n!function(e,t){\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof module&&\"undefined\"!=typeof exports?module.exports=t():e.Papa=t()}(this,function s(){\"use strict\";var f=\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:void 0!==f?f:{};var n=!f.document&&!!f.postMessage,o=f.IS_PAPA_WORKER||!1,a={},u=0,b={parse:function(e,t){var r=(t=t||{}).dynamicTyping||!1;J(r)&&(t.dynamicTypingFunction=r,r={});if(t.dynamicTyping=r,t.transform=!!J(t.transform)&&t.transform,t.worker&&b.WORKERS_SUPPORTED){var i=function(){if(!b.WORKERS_SUPPORTED)return!1;var e=(r=f.URL||f.webkitURL||null,i=s.toString(),b.BLOB_URL||(b.BLOB_URL=r.createObjectURL(new Blob([\"var global = (function() { if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } return {}; })(); global.IS_PAPA_WORKER=true; \",\"(\",i,\")();\"],{type:\"text/javascript\"})))),t=new f.Worker(e);var r,i;return t.onmessage=_,t.id=u++,a[t.id]=t}();return i.userStep=t.step,i.userChunk=t.chunk,i.userComplete=t.complete,i.userError=t.error,t.step=J(t.step),t.chunk=J(t.chunk),t.complete=J(t.complete),t.error=J(t.error),delete t.worker,void i.postMessage({input:e,config:t,workerId:i.id})}var n=null;b.NODE_STREAM_INPUT,\"string\"==typeof e?(e=function(e){if(65279===e.charCodeAt(0))return e.slice(1);return e}(e),n=t.download?new l(t):new p(t)):!0===e.readable&&J(e.read)&&J(e.on)?n=new g(t):(f.File&&e instanceof File||e instanceof Object)&&(n=new c(t));return n.stream(e)},unparse:function(e,t){var n=!1,_=!0,m=\",\",y=\"\\r\\n\",s='\"',a=s+s,r=!1,i=null,o=!1;!function(){if(\"object\"!=typeof t)return;\"string\"!=typeof t.delimiter||b.BAD_DELIMITERS.filter(function(e){return-1!==t.delimiter.indexOf(e)}).length||(m=t.delimiter);(\"boolean\"==typeof t.quotes||\"function\"==typeof t.quotes||Array.isArray(t.quotes))&&(n=t.quotes);\"boolean\"!=typeof t.skipEmptyLines&&\"string\"!=typeof t.skipEmptyLines||(r=t.skipEmptyLines);\"string\"==typeof t.newline&&(y=t.newline);\"string\"==typeof t.quoteChar&&(s=t.quoteChar);\"boolean\"==typeof t.header&&(_=t.header);if(Array.isArray(t.columns)){if(0===t.columns.length)throw new Error(\"Option columns is empty\");i=t.columns}void 0!==t.escapeChar&&(a=t.escapeChar+s);(\"boolean\"==typeof t.escapeFormulae||t.escapeFormulae instanceof RegExp)&&(o=t.escapeFormulae instanceof RegExp?t.escapeFormulae:/^[=+\\-@\\t\\r].*$/)}();var u=new RegExp(Q(s),\"g\");\"string\"==typeof e&&(e=JSON.parse(e));if(Array.isArray(e)){if(!e.length||Array.isArray(e[0]))return h(null,e,r);if(\"object\"==typeof e[0])return h(i||Object.keys(e[0]),e,r)}else if(\"object\"==typeof e)return\"string\"==typeof e.data&&(e.data=JSON.parse(e.data)),Array.isArray(e.data)&&(e.fields||(e.fields=e.meta&&e.meta.fields||i),e.fields||(e.fields=Array.isArray(e.data[0])?e.fields:\"object\"==typeof e.data[0]?Object.keys(e.data[0]):[]),Array.isArray(e.data[0])||\"object\"==typeof e.data[0]||(e.data=[e.data])),h(e.fields||[],e.data||[],r);throw new Error(\"Unable to serialize unrecognized input\");function h(e,t,r){var i=\"\";\"string\"==typeof e&&(e=JSON.parse(e)),\"string\"==typeof t&&(t=JSON.parse(t));var n=Array.isArray(e)&&0=this._config.preview;if(o)f.postMessage({results:n,workerId:b.WORKER_ID,finished:a});else if(J(this._config.chunk)&&!t){if(this._config.chunk(n,this._handle),this._handle.paused()||this._handle.aborted())return void(this._halted=!0);n=void 0,this._completeResults=void 0}return this._config.step||this._config.chunk||(this._completeResults.data=this._completeResults.data.concat(n.data),this._completeResults.errors=this._completeResults.errors.concat(n.errors),this._completeResults.meta=n.meta),this._completed||!a||!J(this._config.complete)||n&&n.meta.aborted||(this._config.complete(this._completeResults,this._input),this._completed=!0),a||n&&n.meta.paused||this._nextChunk(),n}this._halted=!0},this._sendError=function(e){J(this._config.error)?this._config.error(e):o&&this._config.error&&f.postMessage({workerId:b.WORKER_ID,error:e,finished:!1})}}function l(e){var i;(e=e||{}).chunkSize||(e.chunkSize=b.RemoteChunkSize),h.call(this,e),this._nextChunk=n?function(){this._readChunk(),this._chunkLoaded()}:function(){this._readChunk()},this.stream=function(e){this._input=e,this._nextChunk()},this._readChunk=function(){if(this._finished)this._chunkLoaded();else{if(i=new XMLHttpRequest,this._config.withCredentials&&(i.withCredentials=this._config.withCredentials),n||(i.onload=v(this._chunkLoaded,this),i.onerror=v(this._chunkError,this)),i.open(this._config.downloadRequestBody?\"POST\":\"GET\",this._input,!n),this._config.downloadRequestHeaders){var e=this._config.downloadRequestHeaders;for(var t in e)i.setRequestHeader(t,e[t])}if(this._config.chunkSize){var r=this._start+this._config.chunkSize-1;i.setRequestHeader(\"Range\",\"bytes=\"+this._start+\"-\"+r)}try{i.send(this._config.downloadRequestBody)}catch(e){this._chunkError(e.message)}n&&0===i.status&&this._chunkError()}},this._chunkLoaded=function(){4===i.readyState&&(i.status<200||400<=i.status?this._chunkError():(this._start+=this._config.chunkSize?this._config.chunkSize:i.responseText.length,this._finished=!this._config.chunkSize||this._start>=function(e){var t=e.getResponseHeader(\"Content-Range\");if(null===t)return-1;return parseInt(t.substring(t.lastIndexOf(\"/\")+1))}(i),this.parseChunk(i.responseText)))},this._chunkError=function(e){var t=i.statusText||e;this._sendError(new Error(t))}}function c(e){var i,n;(e=e||{}).chunkSize||(e.chunkSize=b.LocalChunkSize),h.call(this,e);var s=\"undefined\"!=typeof FileReader;this.stream=function(e){this._input=e,n=e.slice||e.webkitSlice||e.mozSlice,s?((i=new FileReader).onload=v(this._chunkLoaded,this),i.onerror=v(this._chunkError,this)):i=new FileReaderSync,this._nextChunk()},this._nextChunk=function(){this._finished||this._config.preview&&!(this._rowCount=this._input.size,this.parseChunk(e.target.result)},this._chunkError=function(){this._sendError(i.error)}}function p(e){var r;h.call(this,e=e||{}),this.stream=function(e){return r=e,this._nextChunk()},this._nextChunk=function(){if(!this._finished){var e,t=this._config.chunkSize;return t?(e=r.substring(0,t),r=r.substring(t)):(e=r,r=\"\"),this._finished=!r,this.parseChunk(e)}}}function g(e){h.call(this,e=e||{});var t=[],r=!0,i=!1;this.pause=function(){h.prototype.pause.apply(this,arguments),this._input.pause()},this.resume=function(){h.prototype.resume.apply(this,arguments),this._input.resume()},this.stream=function(e){this._input=e,this._input.on(\"data\",this._streamData),this._input.on(\"end\",this._streamEnd),this._input.on(\"error\",this._streamError)},this._checkIsFinished=function(){i&&1===t.length&&(this._finished=!0)},this._nextChunk=function(){this._checkIsFinished(),t.length?this.parseChunk(t.shift()):r=!0},this._streamData=v(function(e){try{t.push(\"string\"==typeof e?e:e.toString(this._config.encoding)),r&&(r=!1,this._checkIsFinished(),this.parseChunk(t.shift()))}catch(e){this._streamError(e)}},this),this._streamError=v(function(e){this._streamCleanUp(),this._sendError(e)},this),this._streamEnd=v(function(){this._streamCleanUp(),i=!0,this._streamData(\"\")},this),this._streamCleanUp=v(function(){this._input.removeListener(\"data\",this._streamData),this._input.removeListener(\"end\",this._streamEnd),this._input.removeListener(\"error\",this._streamError)},this)}function r(m){var a,o,u,i=Math.pow(2,53),n=-i,s=/^\\s*-?(\\d+\\.?|\\.\\d+|\\d+\\.\\d+)([eE][-+]?\\d+)?\\s*$/,h=/^((\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d\\.\\d+([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z))|(\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z)))$/,t=this,r=0,f=0,d=!1,e=!1,l=[],c={data:[],errors:[],meta:{}};if(J(m.step)){var p=m.step;m.step=function(e){if(c=e,_())g();else{if(g(),0===c.data.length)return;r+=e.data.length,m.preview&&r>m.preview?o.abort():(c.data=c.data[0],p(c,t))}}}function y(e){return\"greedy\"===m.skipEmptyLines?\"\"===e.join(\"\").trim():1===e.length&&0===e[0].length}function g(){return c&&u&&(k(\"Delimiter\",\"UndetectableDelimiter\",\"Unable to auto-detect delimiting character; defaulted to '\"+b.DefaultDelimiter+\"'\"),u=!1),m.skipEmptyLines&&(c.data=c.data.filter(function(e){return!y(e)})),_()&&function(){if(!c)return;function e(e,t){J(m.transformHeader)&&(e=m.transformHeader(e,t)),l.push(e)}if(Array.isArray(c.data[0])){for(var t=0;_()&&t=l.length?\"__parsed_extra\":l[r]),m.transform&&(s=m.transform(s,n)),s=v(n,s),\"__parsed_extra\"===n?(i[n]=i[n]||[],i[n].push(s)):i[n]=s}return m.header&&(r>l.length?k(\"FieldMismatch\",\"TooManyFields\",\"Too many fields: expected \"+l.length+\" fields but parsed \"+r,f+t):r=i.length/2?\"\\r\\n\":\"\\r\"}(e,i)),u=!1,m.delimiter)J(m.delimiter)&&(m.delimiter=m.delimiter(e),c.meta.delimiter=m.delimiter);else{var n=function(e,t,r,i,n){var s,a,o,u;n=n||[\",\",\"\\t\",\"|\",\";\",b.RECORD_SEP,b.UNIT_SEP];for(var h=0;h=N)return L(!0)}else for(S=W,W++;;){if(-1===(S=i.indexOf(z,S+1)))return r||h.push({type:\"Quotes\",code:\"MissingQuotes\",message:\"Quoted field unterminated\",row:u.length,index:W}),T();if(S===n-1)return T(i.substring(W,S).replace(C,z));if(z!==K||i[S+1]!==K){if(z===K||0===S||i[S-1]!==K){-1!==w&&w=N)return L(!0);break}h.push({type:\"Quotes\",code:\"InvalidQuotes\",message:\"Trailing quote on quoted field is malformed\",row:u.length,index:W}),S++}}else S++}return T();function I(e){u.push(e),d=W}function A(e){var t=0;if(-1!==e){var r=i.substring(S+1,e);r&&\"\"===r.trim()&&(t=r.length)}return t}function T(e){return r||(void 0===e&&(e=i.substring(W)),f.push(e),W=n,I(f),o&&F()),L()}function D(e){W=e,I(f),f=[],R=i.indexOf(P,W)}function L(e){return{data:u,errors:h,meta:{delimiter:M,linebreak:P,aborted:H,truncated:!!e,cursor:d+(t||0)}}}function F(){q(L()),u=[],h=[]}},this.abort=function(){H=!0},this.getCharIndex=function(){return W}}function _(e){var t=e.data,r=a[t.workerId],i=!1;if(t.error)r.userError(t.error,t.file);else if(t.results&&t.results.data){var n={abort:function(){i=!0,m(t.workerId,{data:[],errors:[],meta:{aborted:!0}})},pause:y,resume:y};if(J(r.userStep)){for(var s=0;s 'metadata' in data;\nexport const isRemoteData = (data: ImagesAndMetadata): data is RemoteImagesAndMetadata => 'dataUris' in data;\n","\n\n\n","\n\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","\n\n","import type { SpendableCoin } from '~/composables/useGoby';\nimport type { Profile } from '~/types/generated';\n\nexport interface Did {\n name: string;\n didId: string;\n coinId: string;\n}\n\nexport interface Collection {\n id: string;\n name: string;\n description: string;\n iconUrl?: string;\n bannerUrl?: string;\n twitterHandle?: string;\n website?: string;\n licenseUrl?: string;\n licenseHash?: string | null;\n attributes: { name: string }[];\n}\n\nexport interface NftMetadata {\n format: 'CHIP-0007';\n minting_tool: 'mintgarden-studio';\n sensitive_content: boolean;\n name: string;\n description: string;\n attributes: { name: string; value: string }[];\n}\n\nexport interface NftOnChainMetadata {\n royaltyPercentage: number;\n targetAddress?: string;\n royaltyAddress?: string;\n licenseUrl?: string;\n licenseHash?: string;\n}\n\nexport type JobStatus = 'draft' | 'ready' | 'minting' | 'done';\nexport type MintStatus = 'ready' | 'uploading' | 'minting' | 'pending' | 'offering' | 'done';\n\ninterface BaseNftData {\n name?: string;\n file?: File;\n urisAndHashes?: {\n dataUris: string[];\n dataHash: string;\n metadataUris: string[];\n metadataHash: string;\n edition_number?: number;\n edition_total?: number;\n };\n requestedXch?: number;\n requestedNft?: string;\n nft?: { id: string; encodedId: string };\n offer?: { path: string; dexieId?: string };\n onChainMetadata?: { edition_number?: number; edition_total?: number };\n}\n\nexport interface SingleNftData extends BaseNftData {\n metadata: any;\n}\n\nexport interface BulkNftData extends BaseNftData {\n metadataPath: string;\n}\n\nexport type NftData = SingleNftData | BulkNftData;\n\nexport interface MintTask {\n id: string;\n // type: 'single' | 'bulk'; TODO Necessary?\n status: MintStatus;\n nftDataIds: string[];\n incomingTxId?: string;\n targetAddress?: string; // Only used for random minting, use nftdata.onChainMetadata.target_address when bulk minting\n spentDidCoinId?: string;\n error?: { stage: MintStatus; error: any };\n}\n\nexport type ProfileWithCoin = Profile & { didCoin: SpendableCoin; publicKey: string };\n\ninterface BaseMintJob {\n did: ProfileWithCoin;\n collectionId?: string;\n blockchainFee?: number;\n onChainMetadata: NftOnChainMetadata;\n}\n\nexport interface SingleMintJob extends BaseMintJob {\n offerPriceXch?: number;\n uploadOfferToDexie?: boolean;\n nfts: SingleNftData[];\n}\n\ninterface BaseBulkMintJob extends BaseMintJob {\n type: 'bulk';\n directoryPath: string;\n paymentMethod: 'upfront' | 'royalty';\n nfts: BulkNftData[];\n automaticallyAddSeries?: boolean;\n}\n\nexport interface DirectBulkMintJob extends BaseBulkMintJob {\n mintStrategy: 'bulk';\n createOfferFiles?: boolean;\n offerPriceXch?: number;\n uploadOfferToDexie?: boolean;\n}\n\nexport interface RandomBulkMintJob extends BaseBulkMintJob {\n mintStrategy: 'random';\n startTime: number | undefined;\n paymentAddress: string;\n paymentPrice: number;\n paymentAssetId: string | undefined;\n}\n\nexport type BulkMintJob = DirectBulkMintJob | RandomBulkMintJob;\n\nexport type MintJob = SingleMintJob | BulkMintJob;\n\nexport const initialMetadata = {\n format: 'CHIP-0007',\n minting_tool: 'mintgarden-studio',\n sensitive_content: false,\n name: '',\n description: '',\n attributes: [],\n};\nexport const initialOnChainMetadata = {\n royaltyPercentage: 0,\n targetAddress: undefined,\n royaltyAddress: undefined,\n licenseUrl: undefined,\n licenseHash: undefined,\n};\n\nexport interface Auction {\n id: string;\n nftIds: string[];\n startTimestamp: number;\n secondsPerStep: number;\n cooldownDuration: number;\n startingPrice: number;\n reservePrice: number;\n stepSize: number;\n auctionBaseUrl: string;\n}\n","export const isVideo = (filename: string) => {\n return (\n filename.toLowerCase().endsWith('.mpg') ||\n filename.toLowerCase().endsWith('.mpeg') ||\n filename.toLowerCase().endsWith('.ogg') ||\n filename.toLowerCase().endsWith('.mp4') ||\n filename.toLowerCase().endsWith('.webm') ||\n filename.toLowerCase().endsWith('.avi') ||\n filename.toLowerCase().endsWith('.3gp') ||\n filename.toLowerCase().endsWith('.mov')\n );\n};\n","\n\n\n\n","\n\n"],"names":["render","_ctx","_cache","_openBlock","_createBlock","_createVNode","props","__props","emit","__emit","selectedProfile","gobyStore","unsubscribe","mutation","state","_a","selectedCollection","profile","additionalCollections","truthyFilter","x","collections","newProfile","items","collectionMetadata","collection","metadata","license_uris","license_hash","description","attribute","iconUrl","_b","bannerUrl","_c","twitterHandle","_d","website","_e","licenseUrl","licenseHash","empty","hex","hexes","b","equals","aa","bb","ii","o","ALPHABET","name","BASE_MAP","j","i","xc","BASE","LEADER","FACTOR","iFACTOR","encode","source","zeroes","length","pbegin","pend","size","b58","carry","it1","it2","str","decodeUnsafe","psz","b256","it3","it4","vch","decode","string","buffer","prefix","baseEncode","__publicField","bytes","baseDecode","text","decoder","or","decoders","input","left","right","from","alphabet","basex","bitsPerChar","codes","end","out","bits","written","value","data","pad","mask","encode_1","MSB","REST","MSBALL","INT","num","offset","oldOffset","read","MSB$1","REST$1","buf","res","shift","counter","l","N1","N2","N3","N4","N5","N6","N7","N8","N9","varint","int","target","create","code","digest","sizeOffset","varint.encodingLength","digestOffset","varint.encodeTo","multihash","varint.decode","a","equalBytes","link","base","version","cid","baseCache","Digest.create","other","self","unknown","Digest.equals","Digest.decode","remainder","specs","prefixSize","multihashBytes","digestBytes","Digest.Digest","initialBytes","next","codec","multihashCode","digestSize","multihashSize","cache","codeOffset","hashOffset","v","byteLen","postOffset","index","wire","wireType","fieldNum","byts","links","linksBeforeData","node","textEncoder","encodeLink","nameBytes","n","abuf","bbuf","y","len","properties","p","Hash","pbl","e","pbn","fn","ctx","params","pending","resolve","reject","err","base64","exports","b64","s64","start","parts","chunk","t","invalidEncoding","c","evt","listeners","args","f32","f8b","le","writeFloat_f32_cpy","val","pos","writeFloat_f32_rev","readFloat_f32_cpy","readFloat_f32_rev","writeFloat_ieee754","writeUint","sign","exponent","mantissa","readFloat_ieee754","readUint","uint","f64","writeDouble_f64_cpy","writeDouble_f64_rev","readDouble_f64_cpy","readDouble_f64_rev","writeDouble_ieee754","off0","off1","readDouble_ieee754","lo","hi","utf8","c1","c2","alloc","slice","SIZE","MAX","slab","LongBits","util","require$$0","zero","zeroHash","unsigned","charCodeAt","hash","part0","part1","part2","require$$1","require$$2","require$$3","require$$4","require$$5","require$$6","require$$7","global","this","obj","prop","Buffer","sizeOrArray","merge","dst","src","ifNotSet","keys","newError","CustomError","message","fieldNames","fieldMap","encoding","Writer","BufferWriter","writer","push","write_uint32","write_int32","write_sint32","write_uint64","write_sint64","write_bool","write_fixed32","write_fixed64","write_float","write_double","writeBytes_set","writeBytes_for","write_bytes","write_string","fork","reset","ldelim","head","tail","finish","BufferWriter_","write_bytes_buffer","write_string_buffer","Reader","BufferReader","reader","writeLength","create_typed_array","create_array","read_uint32_setup","read_int32","read_sint32","read_bool","read_fixed32","read_sfixed32","read_float","read_double","read_bytes","nativeBuffer","read_string","skip","BufferReader_","read_string_buffer","rpcImpl","requestDelimited","responseDelimited","rpcCall","method","requestCtor","responseCtor","request","callback","response","endedByRPC","rpc","protobuf","configure","Data","ks","m","w","d","valuesById","values","UnixTime","Metadata","EMPTY","EMPTY_BUFFER","BLANK","PB.code","PB.encode","PB.prepare","content","entries","bitfield","fanout","hashType","ignoreMetadata","dag","path","root","pb","PB.decode","type","mtime","mode","blocksizes","rest","dagByteLength","defaultMode","specifiedMode","task","failed","output","error","forks","entry","effect","tasks","effects","tag","tags","tagged","instruction","member","group","driver","active","idle","stack","_message","loop","options","handle","result","failure","handler","promise","succeed","fail","onresolve","onreject","onfinally","init","controller","none","property","receiver","startOffset","endOffset","segments","byteLength","segment","nextOffset","range","part","get","byteOffset","iterate","reason","template","subject","substitutions","open","config","BufferQueue.empty","write","close","chunker","chunks","newNodes","queue","ready","has","wants","id","nodeID","needs","nodes","linked","original","delta","key","item","children","child","Task.none","Chunker.open","Queue.mutable","Chunker.write","leaves","layout","nodeQueue","Queue.addNodes","Task.listen","Task.effects","block","Queue.addLink","newState","Chunker.close","Task.fork","Task.suspend","Task.join","leaf","hasher","linker","encoder","Task.wait","UnixFS.NodeType","UnixFS.cumulativeContentByteLength","UnixFS.cumulativeDagByteLength","maxChunkSize","lastChunkSize","width","defaults","lastID","slices","leafIndex","nodeIndex","row","depth","height","top","Balanced.withWidth","UnixFS.code","UnixFS.name","UnixFS.encodeFileChunk","settings","Writer.init","view","Task.send","releaseLock","closeWriter","Task.loop","Writer.update","File.defaults","set","overwrite","writable","asWritable","remove","UnixFS.createFlatDirectory","UnixFS.encodeDirectory","bit","_bitField","bitField","popcount","unset","n1","n2","and","toBytes","fromBytes","undefined","library","_validBytes","_x86Multiply","_x86Rotl","_x86Fmix","h","_x64Add","_x64Multiply","_x64Rotl","_x64LeftShift","_x64Xor","_x64Fmix","seed","blocks","h1","k1","h2","h3","h4","k2","k3","k4","c3","c4","module","murmur","bitWidth","edit","datamap","nodemap","notFound","lookup","addedLeaf","removedLeaf","count","_shift","_path","newNode","Path","BitField","found","branch","newChild","oldId","newId","oldPath","oldKey","oldValue","newPath","newKey","newValue","newOffset","owner","editor","bytes.fromHex","hash64","hashSize","bitOffset","desired","byte","available","taking","bitsLeft","popcount32","Uint32Path.configure","Uint8ArrayPath.configure","builder","hamt","Node.get","createBitmapIndexedNode","Node.set","Node.delete","frameBitSize","bitCount","frameOffset","frame","maxBits","Path.configure","HAMT.builder","HAMT.from","dataCount","Node.keyAt","Node.valueAt","Node.resolveNode","enumerable","configurable","element","elementPath","ent","UnixFSPermaMap.iterate","shard","UnixFS.createDirectoryShard","UnixFSPermaMap.bitField","UnixFSPermaMap.tableSize","UnixFS.encodeHAMTShard","UnixFSPermaMap.from","UnixFSPermaMap.builder","callbackfn","thisArg","k","PermaMap.get","PermaMap.has","File.configure","File.create","Directory.create","UnixFS.withCapacity","UnixFS.configure","file","__privateAdd","_file","__privateSet","unixfsFileWriter","UnixFS.createFileWriter","__privateGet","dirWriter","UnixFS.createDirectoryWriter","UnixFS.createShardedDirectoryWriter","files","rootDir","dir","dirBuilder","readable","unixfsWriter","UnixFS.createWriter","typeOf","isBuffer","objectType","objectTypeName","major","terminal","typ","encodedLength","arr","off","b1","b2","chunkSize","topChunk","chunkPos","token","nuint","buint","encodedSize","compareTokens","tok1","tok2","negint","uint.encodeUintValue","uint.uintBoundaries","uint.encodeUint","float","decoded","success","inp","valu32","logicalExponent","ui8a","half","exp","mant","encoders","parent","_typ","_options","_refStack","_obj","refStack","isMap","customTypeEncoder","tokens","typeEncoder","e1","e2","keyToken1","keyToken2","tcmp","quickBytes","cborg.Token","cborg.Type","cborg.encode","roots","headerBytes","cborEncode","varintBytes","header","fileAsBuffer","hashBuffer","profileId","filename","filesToUpload","filesInDirectory","writableStream","rootCID","blockStream","encodedBlocks","encodedWritableStream","carBlob","carFile","metadataToUpload","addAttributeIfSet","uploader","modelValue","accept","isUploading","fileInput","selectedFile","fetchingLicenseInProgress","licenseError","drop","s","f","u","r","J","_","g","Q","z","M","P","U","q","N","B","K","H","L","E","I","F","R","C","S","D","T","O","A","dropzone","loadingDirectory","loadDirectoryError","imagesAndMetadata","automaticallyAddSeries","hasLocalData","hasRemoteData","hasEditions","onChainMetadata","hasSeries","imageAndMetadata","hasTargetAddress","hasRequestedNft","requestedNft","hasRequestedXch","requestedXch","loadAndSetFolder","selectedFiles","topLevelFiles","loadDirectory","loadAttributes","resetFile","attributeKeys","attributes","attributeKeySet","newAttributes","getAttributeValueFromList","imageAndMetadataPaths","metadataFile","getAttributes","metadataCsv","readCsv","dataUris","dataFile","baseMetadata","dataHash","metadataUris","metadataHash","aFilename","bFilename","objectUrls","generateURL","fileSrc","url","licenseFromCollection","mintType","dataString","stringifiedData","isValidJson","newAttribute","addAttribute","existingName","trait_type","deleteAttribute","traitTypeToDelete","existingAttributeIndex","royaltyOptions","selectedRoyaltyOption","option","resetRadioGroup","validLen","placeHoldersLen","lens","tmp","curByte","uint8","extraBytes","maxChunkLength","len2","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","rt","ieee754","customInspectSymbol","SlowBuffer","K_MAX_LENGTH","typedArraySupport","proto","createBuffer","arg","encodingOrOffset","allocUnsafe","fromString","fromArrayView","isInstance","fromArrayBuffer","valueOf","fromObject","assertSize","fill","checked","actual","fromArrayLike","array","arrayView","copy","numberIsNaN","list","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","max","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","foundIndex","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","ret","hexSliceLookupTable","newBuf","checkOffset","ext","noAssert","mul","defineBigIntMethod","validateNumber","first","last","boundsError","checkInt","min","maxBytes","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","limit","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","errors","sym","getMessage","Base","msg","received","addNumericalSeparator","checkBounds","INVALID_BASE64_RE","base64clean","units","leadSurrogate","byteArray","table","i16","BufferBigIntNotDefined","newShow","oldShow","saveAndClose","route","router","wizardState","confirmLegal","nftData","offerPrice","offerRequestedTokenId","uploadOfferToDexie","editionTotal","currentFile","selectedDid","showCreateCollectionModal","newCollections","newEdition","showPaymentInfoModal","paymentInfo","shouldGroupEditionIntoCollection","selectedEditionOption","query","queryStep","getProgressWidth","addCollection","getVideoCover","objectUrl","seekTo","videoPlayer","ex","canvas","dataURL","videoPreview","loadAndSetFile","isMintingEnabled","seriesData","nftForPreview","confirmedNFT","mintedNftId","uploadedDataUrl","mintForPreview","mint","seriesMetadata","setPaymentInfoAndMint","$event","uploadAndMintNft","collectionForPreview","confirmedCollection","selectedMintingType","mintingSteps","uploadPending","mintPending","mintOffering","editionOptions","groupEditionIntoCollectionOptions","mintingTypes","publishingMethods","selectedPublishingMethod","mintingError","uploadProgress","unwindJobId","unwindType","mintId","__temp","__restore","_withAsyncContext","nft","setType","handleSeriesUpload","updatedMintJob","nftsToUpload","nftToUpload","metadataString","filebaseUploader","uploadedFiles","dataUpload","metadataUpload","p2Puzzle","spendBundle","launcherCoinSpend","spend","didCoin","didFullPuzzle","curriedArgs","innerPuzzle","innerCurriedArgs","targetPuzzleHash","royaltyPuzzleHash","requestedMojos","requestedAssetId","secureTheMintRequest","_f","_g","_h","_i","rootCoinAmount","securedMint","prepend0xIfMissing","feePerNftInXCH","extraCoinsToCreate","mintingPaymentPuzzleHash","requiredMojos","acc","coin","xchCoins","coinSpends","coinSpend","signature","unwindMint","Sentry.captureException","_j","_k","newEvent","checkMintUnwindJob","status","pause","resume","openFilePicker","refresh","account","oldAccount","showConnectWalletModal"],"mappings":"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","x_google_ignoreList":[0,1,2,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,93,97,98,99]}