@stryke/capnp 0.12.80 → 0.12.82

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"src-BvgdYlCi.mjs","names":["#proxyHandler","padToWord","dump"],"sources":["../../../../node_modules/.pnpm/capnp-es@0.0.11_patch_hash=503a440bd2bef41c0cb22819bc4ced5a7f04993fb999f0d944e284220f14916b_typescript@5.9.3/node_modules/capnp-es/dist/shared/capnp-es.0-_cOx6D.mjs","../../../../node_modules/.pnpm/capnp-es@0.0.11_patch_hash=503a440bd2bef41c0cb22819bc4ced5a7f04993fb999f0d944e284220f14916b_typescript@5.9.3/node_modules/capnp-es/dist/shared/capnp-es.BvfUH5E6.mjs","../../../../node_modules/.pnpm/capnp-es@0.0.11_patch_hash=503a440bd2bef41c0cb22819bc4ced5a7f04993fb999f0d944e284220f14916b_typescript@5.9.3/node_modules/capnp-es/dist/shared/capnp-es.GpvEvMIK.mjs","../../../../node_modules/.pnpm/capnp-es@0.0.11_patch_hash=503a440bd2bef41c0cb22819bc4ced5a7f04993fb999f0d944e284220f14916b_typescript@5.9.3/node_modules/capnp-es/dist/shared/capnp-es.UAt3nLGq.mjs","../../../../node_modules/.pnpm/capnp-es@0.0.11_patch_hash=503a440bd2bef41c0cb22819bc4ced5a7f04993fb999f0d944e284220f14916b_typescript@5.9.3/node_modules/capnp-es/dist/index.mjs"],"sourcesContent":["var ListElementSize = /* @__PURE__ */ ((ListElementSize2) => {\n ListElementSize2[ListElementSize2[\"VOID\"] = 0] = \"VOID\";\n ListElementSize2[ListElementSize2[\"BIT\"] = 1] = \"BIT\";\n ListElementSize2[ListElementSize2[\"BYTE\"] = 2] = \"BYTE\";\n ListElementSize2[ListElementSize2[\"BYTE_2\"] = 3] = \"BYTE_2\";\n ListElementSize2[ListElementSize2[\"BYTE_4\"] = 4] = \"BYTE_4\";\n ListElementSize2[ListElementSize2[\"BYTE_8\"] = 5] = \"BYTE_8\";\n ListElementSize2[ListElementSize2[\"POINTER\"] = 6] = \"POINTER\";\n ListElementSize2[ListElementSize2[\"COMPOSITE\"] = 7] = \"COMPOSITE\";\n return ListElementSize2;\n})(ListElementSize || {});\n\nconst tmpWord = new DataView(new ArrayBuffer(8));\nnew Uint16Array(tmpWord.buffer)[0] = 258;\nconst DEFAULT_BUFFER_SIZE = 4096;\nconst DEFAULT_TRAVERSE_LIMIT = 64 << 20;\nconst LIST_SIZE_MASK = 7;\nconst MAX_BUFFER_DUMP_BYTES = 8192;\nconst MAX_INT32 = 2147483647;\nconst MAX_UINT32 = 4294967295;\nconst MIN_SINGLE_SEGMENT_GROWTH = 4096;\nconst NATIVE_LITTLE_ENDIAN = tmpWord.getUint8(0) === 2;\nconst PACK_SPAN_THRESHOLD = 2;\nconst POINTER_DOUBLE_FAR_MASK = 4;\nconst POINTER_TYPE_MASK = 3;\nconst MAX_DEPTH = MAX_INT32;\nconst MAX_SEGMENT_LENGTH = MAX_UINT32;\n\nconst INVARIANT_UNREACHABLE_CODE = \"CAPNP-TS000 Unreachable code detected.\";\nfunction assertNever(n) {\n throw new Error(INVARIANT_UNREACHABLE_CODE + ` (never block hit with: ${n})`);\n}\nconst MSG_INVALID_FRAME_HEADER = \"CAPNP-TS001 Attempted to parse an invalid message frame header; are you sure this is a Cap'n Proto message?\";\nconst MSG_PACK_NOT_WORD_ALIGNED = \"CAPNP-TS003 Attempted to pack a message that was not word-aligned.\";\nconst MSG_SEGMENT_OUT_OF_BOUNDS = \"CAPNP-TS004 Segment ID %X is out of bounds for message %s.\";\nconst MSG_SEGMENT_TOO_SMALL = \"CAPNP-TS005 First segment must have at least enough room to hold the root pointer (8 bytes).\";\nconst NOT_IMPLEMENTED = \"CAPNP-TS006 %s is not implemented.\";\nconst PTR_ADOPT_WRONG_MESSAGE = \"CAPNP-TS008 Attempted to adopt %s into a pointer in a different message %s.\";\nconst PTR_ALREADY_ADOPTED = \"CAPNP-TS009 Attempted to adopt %s more than once.\";\nconst PTR_COMPOSITE_SIZE_UNDEFINED = \"CAPNP-TS010 Attempted to set a composite list without providing a composite element size.\";\nconst PTR_DEPTH_LIMIT_EXCEEDED = \"CAPNP-TS011 Nesting depth limit exceeded for %s.\";\nconst PTR_INIT_COMPOSITE_STRUCT = \"CAPNP-TS013 Attempted to initialize a struct member from a composite list (%s).\";\nconst PTR_INVALID_FAR_TARGET = \"CAPNP-TS015 Target of a far pointer (%s) is another far pointer.\";\nconst PTR_INVALID_LIST_SIZE = \"CAPNP-TS016 Invalid list element size: %x.\";\nconst PTR_INVALID_POINTER_TYPE = \"CAPNP-TS017 Invalid pointer type: %x.\";\nconst PTR_INVALID_UNION_ACCESS = \"CAPNP-TS018 Attempted to access getter on %s for union field %s that is not currently set (wanted: %d, found: %d).\";\nconst PTR_OFFSET_OUT_OF_BOUNDS = \"CAPNP-TS019 Pointer offset %a is out of bounds for underlying buffer.\";\nconst PTR_STRUCT_DATA_OUT_OF_BOUNDS = \"CAPNP-TS020 Attempted to access out-of-bounds struct data (struct: %s, %d bytes at %a, data words: %d).\";\nconst PTR_STRUCT_POINTER_OUT_OF_BOUNDS = \"CAPNP-TS021 Attempted to access out-of-bounds struct pointer (%s, index: %d, length: %d).\";\nconst PTR_TRAVERSAL_LIMIT_EXCEEDED = \"CAPNP-TS022 Traversal limit exceeded! Slow down! %s\";\nconst PTR_WRONG_LIST_TYPE = \"CAPNP-TS023 Cannot convert %s to a %s list.\";\nconst PTR_WRONG_POINTER_TYPE = \"CAPNP-TS024 Attempted to convert pointer %s to a %s type.\";\nconst SEG_GET_NON_ZERO_SINGLE = \"CAPNP-TS035 Attempted to get a segment other than 0 (%d) from a single segment arena.\";\nconst SEG_ID_OUT_OF_BOUNDS = \"CAPNP-TS036 Attempted to get an out-of-bounds segment (%d).\";\nconst SEG_NOT_WORD_ALIGNED = \"CAPNP-TS037 Segment buffer length %d is not a multiple of 8.\";\nconst SEG_REPLACEMENT_BUFFER_TOO_SMALL = \"CAPNP-TS038 Attempted to replace a segment buffer with one that is smaller than the allocated space.\";\nconst SEG_SIZE_OVERFLOW = `CAPNP-TS039 Requested size %x exceeds maximum value (${MAX_SEGMENT_LENGTH}).`;\nconst TYPE_COMPOSITE_SIZE_UNDEFINED = \"CAPNP-TS040 Must provide a composite element size for composite list pointers.\";\nconst LIST_NO_MUTABLE = \"CAPNP-TS045: Cannot call mutative methods on an immutable list.\";\nconst LIST_NO_SEARCH = \"CAPNP-TS046: Search is not supported for list.\";\nconst RPC_NULL_CLIENT = \"CAPNP-TS100 Call on null client.\";\nconst RPC_CALL_QUEUE_FULL = \"CAPNP-TS101 Promised answer call queue full.\";\nconst RPC_QUEUE_CALL_CANCEL = \"CAPNP-TS102 Queue call canceled.\";\nconst RPC_ZERO_REF = \"CAPNP-TS105 Ref() called on zeroed refcount.\";\nconst RPC_IMPORT_CLOSED = \"CAPNP-TS106 Call on closed import.\";\nconst RPC_METHOD_NOT_IMPLEMENTED = \"CAPNP-TS107 Method not implemented.\";\nconst RPC_BAD_TARGET = \"CAPNP-TS109 Target not found.\";\nconst RPC_RETURN_FOR_UNKNOWN_QUESTION = \"CAPNP-TS111 Received return for unknown question (id=%s).\";\nconst RPC_QUESTION_ID_REUSED = \"CAPNP-TS112 Attempted to re-use question id (%s).\";\nconst RPC_UNKNOWN_EXPORT_ID = \"CAPNP-TS113 Capability table references unknown export ID (%s).\";\nconst RPC_UNKNOWN_ANSWER_ID = \"CAPNP-TS114 Capability table references unknown answer ID (%s).\";\nconst RPC_UNKNOWN_CAP_DESCRIPTOR = \"CAPNP-TS115 Unknown cap descriptor type (which: %s).\";\nconst RPC_METHOD_ERROR = \"CAPNP-TS116 RPC method failed at %s.%s(): %s\";\nconst RPC_ERROR = \"CAPNP-TS117 RPC call failed, reason: %s\";\nconst RPC_NO_MAIN_INTERFACE = \"CAPNP-TS118 Received bootstrap message without main interface set.\";\nconst RPC_FINISH_UNKNOWN_ANSWER = \"CAPNP-TS119 Received finish message for unknown answer ID (%s).\";\nconst RPC_FULFILL_ALREADY_CALLED = \"CAPNP-TS120 Fulfill called more than once for question (%s).\";\n\nfunction bufferToHex(buffer) {\n const a = new Uint8Array(buffer);\n const h = [];\n for (let i = 0; i < a.byteLength; i++) {\n h.push(pad(a[i].toString(16), 2));\n }\n return `[${h.join(\" \")}]`;\n}\nfunction dumpBuffer(buffer) {\n const b = buffer instanceof ArrayBuffer ? new Uint8Array(buffer) : new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const byteLength = Math.min(b.byteLength, MAX_BUFFER_DUMP_BYTES);\n let r = format(\"\\n=== buffer[%d] ===\", byteLength);\n for (let j = 0; j < byteLength; j += 16) {\n r += `\n${pad(j.toString(16), 8)}: `;\n let s = \"\";\n let k;\n for (k = 0; k < 16 && j + k < b.byteLength; k++) {\n const v = b[j + k];\n r += `${pad(v.toString(16), 2)} `;\n s += v > 31 && v < 255 ? String.fromCharCode(v) : \"\\xB7\";\n if (k === 7) {\n r += \" \";\n }\n }\n r += `${\" \".repeat((17 - k) * 3)}${s}`;\n }\n r += \"\\n\";\n if (byteLength !== b.byteLength) {\n r += format(\"=== (truncated %d bytes) ===\\n\", b.byteLength - byteLength);\n }\n return r;\n}\nfunction format(s, ...args) {\n const n = s.length;\n let arg;\n let argIndex = 0;\n let c;\n let escaped = false;\n let i = 0;\n let leadingZero = false;\n let precision;\n let result = \"\";\n function nextArg() {\n return args[argIndex++];\n }\n function slurpNumber() {\n let digits = \"\";\n while (/\\d/.test(s[i])) {\n digits += s[i++];\n c = s[i];\n }\n return digits.length > 0 ? Number.parseInt(digits, 10) : null;\n }\n for (; i < n; ++i) {\n c = s[i];\n if (escaped) {\n escaped = false;\n if (c === \".\") {\n leadingZero = false;\n c = s[++i];\n } else if (c === \"0\" && s[i + 1] === \".\") {\n leadingZero = true;\n i += 2;\n c = s[i];\n } else {\n leadingZero = true;\n }\n precision = slurpNumber();\n switch (c) {\n case \"a\": {\n result += \"0x\" + pad(Number.parseInt(String(nextArg()), 10).toString(16), 8);\n break;\n }\n case \"b\": {\n result += Number.parseInt(String(nextArg()), 10).toString(2);\n break;\n }\n case \"c\": {\n arg = nextArg();\n result += typeof arg === \"string\" || arg instanceof String ? arg : String.fromCharCode(Number.parseInt(String(arg), 10));\n break;\n }\n case \"d\": {\n result += Number.parseInt(String(nextArg()), 10);\n break;\n }\n case \"f\": {\n const tmp = Number.parseFloat(String(nextArg())).toFixed(\n precision || 6\n );\n result += leadingZero ? tmp : tmp.replace(/^0/, \"\");\n break;\n }\n case \"j\": {\n result += JSON.stringify(nextArg());\n break;\n }\n case \"o\": {\n result += \"0\" + Number.parseInt(String(nextArg()), 10).toString(8);\n break;\n }\n case \"s\": {\n result += nextArg();\n break;\n }\n case \"x\": {\n result += \"0x\" + Number.parseInt(String(nextArg()), 10).toString(16);\n break;\n }\n case \"X\": {\n result += \"0x\" + Number.parseInt(String(nextArg()), 10).toString(16).toUpperCase();\n break;\n }\n default: {\n result += c;\n break;\n }\n }\n } else if (c === \"%\") {\n escaped = true;\n } else {\n result += c;\n }\n }\n return result;\n}\nfunction pad(v, width, pad2 = \"0\") {\n return v.length >= width ? v : Array.from({ length: width - v.length + 1 }).join(pad2) + v;\n}\nfunction padToWord$1(size) {\n return size + 7 & -8;\n}\n\nclass ObjectSize {\n /**\n * Creates a new ObjectSize instance.\n *\n * @param dataByteLength - The number of bytes in the data section of the struct\n * @param pointerLength - The number of pointers in the pointer section of the struct\n */\n constructor(dataByteLength, pointerLength) {\n this.dataByteLength = dataByteLength;\n this.pointerLength = pointerLength;\n }\n toString() {\n return format(\n \"ObjectSize_dw:%d,pc:%d\",\n getDataWordLength(this),\n this.pointerLength\n );\n }\n}\nfunction getByteLength(o) {\n return o.dataByteLength + o.pointerLength * 8;\n}\nfunction getDataWordLength(o) {\n return o.dataByteLength / 8;\n}\nfunction getWordLength(o) {\n return o.dataByteLength / 8 + o.pointerLength;\n}\nfunction padToWord(o) {\n return new ObjectSize(padToWord$1(o.dataByteLength), o.pointerLength);\n}\n\nclass Orphan {\n /** If this member is not present then the orphan has already been adopted, or something went very wrong. */\n _capnp;\n byteOffset;\n segment;\n constructor(src) {\n const c = getContent(src);\n this.segment = c.segment;\n this.byteOffset = c.byteOffset;\n this._capnp = {};\n this._capnp.type = getTargetPointerType(src);\n switch (this._capnp.type) {\n case PointerType.STRUCT: {\n this._capnp.size = getTargetStructSize(src);\n break;\n }\n case PointerType.LIST: {\n this._capnp.length = getTargetListLength(src);\n this._capnp.elementSize = getTargetListElementSize(src);\n if (this._capnp.elementSize === ListElementSize.COMPOSITE) {\n this._capnp.size = getTargetCompositeListSize(src);\n }\n break;\n }\n case PointerType.OTHER: {\n this._capnp.capId = getCapabilityId(src);\n break;\n }\n default: {\n throw new Error(PTR_INVALID_POINTER_TYPE);\n }\n }\n erasePointer(src);\n }\n /**\n * Adopt (move) this orphan into the target pointer location. This will allocate far pointers in `dst` as needed.\n *\n * @param dst The destination pointer.\n */\n _moveTo(dst) {\n if (this._capnp === undefined) {\n throw new Error(format(PTR_ALREADY_ADOPTED, this));\n }\n if (this.segment.message !== dst.segment.message) {\n throw new Error(format(PTR_ADOPT_WRONG_MESSAGE, this, dst));\n }\n erase(dst);\n const res = initPointer(this.segment, this.byteOffset, dst);\n switch (this._capnp.type) {\n case PointerType.STRUCT: {\n setStructPointer(res.offsetWords, this._capnp.size, res.pointer);\n break;\n }\n case PointerType.LIST: {\n let { offsetWords } = res;\n if (this._capnp.elementSize === ListElementSize.COMPOSITE) {\n offsetWords--;\n }\n setListPointer(\n offsetWords,\n this._capnp.elementSize,\n this._capnp.length,\n res.pointer,\n this._capnp.size\n );\n break;\n }\n case PointerType.OTHER: {\n setInterfacePointer(this._capnp.capId, res.pointer);\n break;\n }\n /* istanbul ignore next */\n default: {\n throw new Error(PTR_INVALID_POINTER_TYPE);\n }\n }\n this._capnp = undefined;\n }\n dispose() {\n if (this._capnp === undefined) {\n return;\n }\n switch (this._capnp.type) {\n case PointerType.STRUCT: {\n this.segment.fillZeroWords(\n this.byteOffset,\n getWordLength(this._capnp.size)\n );\n break;\n }\n case PointerType.LIST: {\n const byteLength = getListByteLength(\n this._capnp.elementSize,\n this._capnp.length,\n this._capnp.size\n );\n this.segment.fillZeroWords(this.byteOffset, byteLength);\n break;\n }\n }\n this._capnp = undefined;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return format(\n \"Orphan_%d@%a,type:%s\",\n this.segment.id,\n this.byteOffset,\n this._capnp && this._capnp.type\n );\n }\n}\n\nfunction adopt(src, p) {\n src._moveTo(p);\n}\nfunction disown(p) {\n return new Orphan(p);\n}\nfunction dump(p) {\n return bufferToHex(p.segment.buffer.slice(p.byteOffset, p.byteOffset + 8));\n}\nfunction getListByteLength(elementSize, length, compositeSize) {\n switch (elementSize) {\n case ListElementSize.BIT: {\n return padToWord$1(length + 7 >>> 3);\n }\n case ListElementSize.BYTE:\n case ListElementSize.BYTE_2:\n case ListElementSize.BYTE_4:\n case ListElementSize.BYTE_8:\n case ListElementSize.POINTER:\n case ListElementSize.VOID: {\n return padToWord$1(getListElementByteLength(elementSize) * length);\n }\n /* istanbul ignore next */\n case ListElementSize.COMPOSITE: {\n if (compositeSize === undefined) {\n throw new Error(format(PTR_INVALID_LIST_SIZE, Number.NaN));\n }\n return length * padToWord$1(getByteLength(compositeSize));\n }\n /* istanbul ignore next */\n default: {\n throw new Error(PTR_INVALID_LIST_SIZE);\n }\n }\n}\nfunction getListElementByteLength(elementSize) {\n switch (elementSize) {\n /* istanbul ignore next */\n case ListElementSize.BIT: {\n return Number.NaN;\n }\n case ListElementSize.BYTE: {\n return 1;\n }\n case ListElementSize.BYTE_2: {\n return 2;\n }\n case ListElementSize.BYTE_4: {\n return 4;\n }\n case ListElementSize.BYTE_8:\n case ListElementSize.POINTER: {\n return 8;\n }\n /* istanbul ignore next */\n case ListElementSize.COMPOSITE: {\n return Number.NaN;\n }\n /* istanbul ignore next */\n case ListElementSize.VOID: {\n return 0;\n }\n /* istanbul ignore next */\n default: {\n throw new Error(format(PTR_INVALID_LIST_SIZE, elementSize));\n }\n }\n}\nfunction add(offset, p) {\n return new Pointer(p.segment, p.byteOffset + offset, p._capnp.depthLimit);\n}\nfunction copyFrom(src, p) {\n if (p.segment === src.segment && p.byteOffset === src.byteOffset) {\n return;\n }\n erase(p);\n if (isNull(src)) return;\n switch (getTargetPointerType(src)) {\n case PointerType.STRUCT: {\n copyFromStruct(src, p);\n break;\n }\n case PointerType.LIST: {\n copyFromList(src, p);\n break;\n }\n case PointerType.OTHER: {\n copyFromInterface(src, p);\n break;\n }\n /* istanbul ignore next */\n default: {\n throw new Error(\n format(PTR_INVALID_POINTER_TYPE, getTargetPointerType(p))\n );\n }\n }\n}\nfunction erase(p) {\n if (isNull(p)) return;\n let c;\n switch (getTargetPointerType(p)) {\n case PointerType.STRUCT: {\n const size = getTargetStructSize(p);\n c = getContent(p);\n c.segment.fillZeroWords(c.byteOffset, size.dataByteLength / 8);\n for (let i = 0; i < size.pointerLength; i++) {\n erase(add(i * 8, c));\n }\n break;\n }\n case PointerType.LIST: {\n const elementSize = getTargetListElementSize(p);\n const length = getTargetListLength(p);\n let contentWords = padToWord$1(\n length * getListElementByteLength(elementSize)\n );\n c = getContent(p);\n if (elementSize === ListElementSize.POINTER) {\n for (let i = 0; i < length; i++) {\n erase(\n new Pointer(\n c.segment,\n c.byteOffset + i * 8,\n p._capnp.depthLimit - 1\n )\n );\n }\n break;\n } else if (elementSize === ListElementSize.COMPOSITE) {\n const tag = add(-8, c);\n const compositeSize = getStructSize(tag);\n const compositeByteLength = getByteLength(compositeSize);\n contentWords = getOffsetWords(tag);\n c.segment.setWordZero(c.byteOffset - 8);\n for (let i = 0; i < length; i++) {\n for (let j = 0; j < compositeSize.pointerLength; j++) {\n erase(\n new Pointer(\n c.segment,\n c.byteOffset + i * compositeByteLength + j * 8,\n p._capnp.depthLimit - 1\n )\n );\n }\n }\n }\n c.segment.fillZeroWords(c.byteOffset, contentWords);\n break;\n }\n case PointerType.OTHER: {\n break;\n }\n default: {\n throw new Error(\n format(PTR_INVALID_POINTER_TYPE, getTargetPointerType(p))\n );\n }\n }\n erasePointer(p);\n}\nfunction erasePointer(p) {\n if (getPointerType(p) === PointerType.FAR) {\n const landingPad = followFar(p);\n if (isDoubleFar(p)) {\n landingPad.segment.setWordZero(landingPad.byteOffset + 8);\n }\n landingPad.segment.setWordZero(landingPad.byteOffset);\n }\n p.segment.setWordZero(p.byteOffset);\n}\nfunction followFar(p) {\n const targetSegment = p.segment.message.getSegment(\n p.segment.getUint32(p.byteOffset + 4)\n );\n const targetWordOffset = p.segment.getUint32(p.byteOffset) >>> 3;\n return new Pointer(\n targetSegment,\n targetWordOffset * 8,\n p._capnp.depthLimit - 1\n );\n}\nfunction followFars(p) {\n if (getPointerType(p) === PointerType.FAR) {\n const landingPad = followFar(p);\n if (isDoubleFar(p)) {\n landingPad.byteOffset += 8;\n }\n return landingPad;\n }\n return p;\n}\nfunction getCapabilityId(p) {\n return p.segment.getUint32(p.byteOffset + 4);\n}\nfunction isCompositeList(p) {\n return getTargetPointerType(p) === PointerType.LIST && getTargetListElementSize(p) === ListElementSize.COMPOSITE;\n}\nfunction getContent(p, ignoreCompositeIndex) {\n let c;\n if (isDoubleFar(p)) {\n const landingPad = followFar(p);\n c = new Pointer(\n p.segment.message.getSegment(getFarSegmentId(landingPad)),\n getOffsetWords(landingPad) * 8\n );\n } else {\n const target = followFars(p);\n c = new Pointer(\n target.segment,\n target.byteOffset + 8 + getOffsetWords(target) * 8\n );\n }\n if (isCompositeList(p)) {\n c.byteOffset += 8;\n }\n if (!ignoreCompositeIndex && p._capnp.compositeIndex !== undefined) {\n c.byteOffset -= 8;\n c.byteOffset += 8 + p._capnp.compositeIndex * getByteLength(padToWord(getStructSize(c)));\n }\n return c;\n}\nfunction getFarSegmentId(p) {\n return p.segment.getUint32(p.byteOffset + 4);\n}\nfunction getListElementSize(p) {\n return p.segment.getUint32(p.byteOffset + 4) & LIST_SIZE_MASK;\n}\nfunction getListLength(p) {\n return p.segment.getUint32(p.byteOffset + 4) >>> 3;\n}\nfunction getOffsetWords(p) {\n const o = p.segment.getInt32(p.byteOffset);\n return o & 2 ? o >> 3 : o >> 2;\n}\nfunction getPointerType(p) {\n return p.segment.getUint32(p.byteOffset) & POINTER_TYPE_MASK;\n}\nfunction getStructDataWords(p) {\n return p.segment.getUint16(p.byteOffset + 4);\n}\nfunction getStructPointerLength(p) {\n return p.segment.getUint16(p.byteOffset + 6);\n}\nfunction getStructSize(p) {\n return new ObjectSize(getStructDataWords(p) * 8, getStructPointerLength(p));\n}\nfunction getTargetCompositeListTag(p) {\n const c = getContent(p);\n c.byteOffset -= 8;\n return c;\n}\nfunction getTargetCompositeListSize(p) {\n return getStructSize(getTargetCompositeListTag(p));\n}\nfunction getTargetListElementSize(p) {\n return getListElementSize(followFars(p));\n}\nfunction getTargetListLength(p) {\n const t = followFars(p);\n if (getListElementSize(t) === ListElementSize.COMPOSITE) {\n return getOffsetWords(getTargetCompositeListTag(p));\n }\n return getListLength(t);\n}\nfunction getTargetPointerType(p) {\n const t = getPointerType(followFars(p));\n if (t === PointerType.FAR) {\n throw new Error(format(PTR_INVALID_FAR_TARGET, p));\n }\n return t;\n}\nfunction getTargetStructSize(p) {\n return getStructSize(followFars(p));\n}\nfunction initPointer(contentSegment, contentOffset, p) {\n if (p.segment !== contentSegment) {\n if (!contentSegment.hasCapacity(8)) {\n const landingPad2 = p.segment.allocate(16);\n setFarPointer(true, landingPad2.byteOffset / 8, landingPad2.segment.id, p);\n setFarPointer(false, contentOffset / 8, contentSegment.id, landingPad2);\n landingPad2.byteOffset += 8;\n return new PointerAllocationResult(landingPad2, 0);\n }\n const landingPad = contentSegment.allocate(8);\n if (landingPad.segment.id !== contentSegment.id) {\n throw new Error(INVARIANT_UNREACHABLE_CODE);\n }\n setFarPointer(false, landingPad.byteOffset / 8, landingPad.segment.id, p);\n return new PointerAllocationResult(\n landingPad,\n (contentOffset - landingPad.byteOffset - 8) / 8\n );\n }\n return new PointerAllocationResult(p, (contentOffset - p.byteOffset - 8) / 8);\n}\nfunction isDoubleFar(p) {\n return getPointerType(p) === PointerType.FAR && (p.segment.getUint32(p.byteOffset) & POINTER_DOUBLE_FAR_MASK) !== 0;\n}\nfunction isNull(p) {\n return p.segment.isWordZero(p.byteOffset);\n}\nfunction relocateTo(dst, src) {\n const t = followFars(src);\n const lo = t.segment.getUint8(t.byteOffset) & 3;\n const hi = t.segment.getUint32(t.byteOffset + 4);\n erase(dst);\n const res = initPointer(\n t.segment,\n t.byteOffset + 8 + getOffsetWords(t) * 8,\n dst\n );\n res.pointer.segment.setUint32(\n res.pointer.byteOffset,\n lo | res.offsetWords << 2\n );\n res.pointer.segment.setUint32(res.pointer.byteOffset + 4, hi);\n erasePointer(src);\n}\nfunction setFarPointer(doubleFar, offsetWords, segmentId, p) {\n const A = PointerType.FAR;\n const B = doubleFar ? 1 : 0;\n const C = offsetWords;\n const D = segmentId;\n p.segment.setUint32(p.byteOffset, A | B << 2 | C << 3);\n p.segment.setUint32(p.byteOffset + 4, D);\n}\nfunction setInterfacePointer(capId, p) {\n p.segment.setUint32(p.byteOffset, PointerType.OTHER);\n p.segment.setUint32(p.byteOffset + 4, capId);\n}\nfunction getInterfacePointer(p) {\n return p.segment.getUint32(p.byteOffset + 4);\n}\nfunction setListPointer(offsetWords, size, length, p, compositeSize) {\n const A = PointerType.LIST;\n const B = offsetWords;\n const C = size;\n let D = length;\n if (size === ListElementSize.COMPOSITE) {\n if (compositeSize === undefined) {\n throw new TypeError(TYPE_COMPOSITE_SIZE_UNDEFINED);\n }\n D *= getWordLength(compositeSize);\n }\n p.segment.setUint32(p.byteOffset, A | B << 2);\n p.segment.setUint32(p.byteOffset + 4, C | D << 3);\n}\nfunction setStructPointer(offsetWords, size, p) {\n const A = PointerType.STRUCT;\n const B = offsetWords;\n const C = getDataWordLength(size);\n const D = size.pointerLength;\n p.segment.setUint32(p.byteOffset, A | B << 2);\n p.segment.setUint16(p.byteOffset + 4, C);\n p.segment.setUint16(p.byteOffset + 6, D);\n}\nfunction validate(pointerType, p, elementSize) {\n if (isNull(p)) {\n return;\n }\n const t = followFars(p);\n const A = t.segment.getUint32(t.byteOffset) & POINTER_TYPE_MASK;\n if (A !== pointerType) {\n throw new Error(format(PTR_WRONG_POINTER_TYPE, p, pointerType));\n }\n if (elementSize !== undefined) {\n const C = t.segment.getUint32(t.byteOffset + 4) & LIST_SIZE_MASK;\n if (C !== elementSize) {\n throw new Error(\n format(PTR_WRONG_LIST_TYPE, p, ListElementSize[elementSize])\n );\n }\n }\n}\nfunction copyFromInterface(src, dst) {\n const srcCapId = getInterfacePointer(src);\n if (srcCapId < 0) {\n return;\n }\n const srcCapTable = src.segment.message._capnp.capTable;\n if (!srcCapTable) {\n return;\n }\n const client = srcCapTable[srcCapId];\n if (!client) {\n return;\n }\n const dstCapId = dst.segment.message.addCap(client);\n setInterfacePointer(dstCapId, dst);\n}\nfunction copyFromList(src, dst) {\n if (dst._capnp.depthLimit <= 0) {\n throw new Error(PTR_DEPTH_LIMIT_EXCEEDED);\n }\n const srcContent = getContent(src);\n const srcElementSize = getTargetListElementSize(src);\n const srcLength = getTargetListLength(src);\n let srcCompositeSize;\n let srcStructByteLength;\n let dstContent;\n if (srcElementSize === ListElementSize.POINTER) {\n dstContent = dst.segment.allocate(srcLength << 3);\n for (let i = 0; i < srcLength; i++) {\n const srcPtr = new Pointer(\n srcContent.segment,\n srcContent.byteOffset + (i << 3),\n src._capnp.depthLimit - 1\n );\n const dstPtr = new Pointer(\n dstContent.segment,\n dstContent.byteOffset + (i << 3),\n dst._capnp.depthLimit - 1\n );\n copyFrom(srcPtr, dstPtr);\n }\n } else if (srcElementSize === ListElementSize.COMPOSITE) {\n srcCompositeSize = padToWord(getTargetCompositeListSize(src));\n srcStructByteLength = getByteLength(srcCompositeSize);\n dstContent = dst.segment.allocate(\n getByteLength(srcCompositeSize) * srcLength + 8\n );\n dstContent.segment.copyWord(\n dstContent.byteOffset,\n srcContent.segment,\n srcContent.byteOffset - 8\n );\n if (srcCompositeSize.dataByteLength > 0) {\n const wordLength = getWordLength(srcCompositeSize) * srcLength;\n dstContent.segment.copyWords(\n dstContent.byteOffset + 8,\n srcContent.segment,\n srcContent.byteOffset,\n wordLength\n );\n }\n for (let i = 0; i < srcLength; i++) {\n for (let j = 0; j < srcCompositeSize.pointerLength; j++) {\n const offset = i * srcStructByteLength + srcCompositeSize.dataByteLength + (j << 3);\n const srcPtr = new Pointer(\n srcContent.segment,\n srcContent.byteOffset + offset,\n src._capnp.depthLimit - 1\n );\n const dstPtr = new Pointer(\n dstContent.segment,\n dstContent.byteOffset + offset + 8,\n dst._capnp.depthLimit - 1\n );\n copyFrom(srcPtr, dstPtr);\n }\n }\n } else {\n const byteLength = padToWord$1(\n srcElementSize === ListElementSize.BIT ? srcLength + 7 >>> 3 : getListElementByteLength(srcElementSize) * srcLength\n );\n const wordLength = byteLength >>> 3;\n dstContent = dst.segment.allocate(byteLength);\n dstContent.segment.copyWords(\n dstContent.byteOffset,\n srcContent.segment,\n srcContent.byteOffset,\n wordLength\n );\n }\n const res = initPointer(dstContent.segment, dstContent.byteOffset, dst);\n setListPointer(\n res.offsetWords,\n srcElementSize,\n srcLength,\n res.pointer,\n srcCompositeSize\n );\n}\nfunction copyFromStruct(src, dst) {\n if (dst._capnp.depthLimit <= 0) {\n throw new Error(PTR_DEPTH_LIMIT_EXCEEDED);\n }\n const srcContent = getContent(src);\n const srcSize = getTargetStructSize(src);\n const srcDataWordLength = getDataWordLength(srcSize);\n const dstContent = dst.segment.allocate(getByteLength(srcSize));\n dstContent.segment.copyWords(\n dstContent.byteOffset,\n srcContent.segment,\n srcContent.byteOffset,\n srcDataWordLength\n );\n for (let i = 0; i < srcSize.pointerLength; i++) {\n const offset = srcSize.dataByteLength + i * 8;\n const srcPtr = new Pointer(\n srcContent.segment,\n srcContent.byteOffset + offset,\n src._capnp.depthLimit - 1\n );\n const dstPtr = new Pointer(\n dstContent.segment,\n dstContent.byteOffset + offset,\n dst._capnp.depthLimit - 1\n );\n copyFrom(srcPtr, dstPtr);\n }\n if (dst._capnp.compositeList) {\n return;\n }\n const res = initPointer(dstContent.segment, dstContent.byteOffset, dst);\n setStructPointer(res.offsetWords, srcSize, res.pointer);\n}\nfunction trackPointerAllocation(message, p) {\n message._capnp.traversalLimit -= 8;\n if (message._capnp.traversalLimit <= 0) {\n throw new Error(format(PTR_TRAVERSAL_LIMIT_EXCEEDED, p));\n }\n}\nclass PointerAllocationResult {\n constructor(pointer, offsetWords) {\n this.pointer = pointer;\n this.offsetWords = offsetWords;\n }\n}\n\nvar PointerType = /* @__PURE__ */ ((PointerType2) => {\n PointerType2[PointerType2[\"STRUCT\"] = 0] = \"STRUCT\";\n PointerType2[PointerType2[\"LIST\"] = 1] = \"LIST\";\n PointerType2[PointerType2[\"FAR\"] = 2] = \"FAR\";\n PointerType2[PointerType2[\"OTHER\"] = 3] = \"OTHER\";\n return PointerType2;\n})(PointerType || {});\nclass Pointer {\n static _capnp = {\n displayName: \"Pointer\"\n };\n _capnp;\n /** Offset, in bytes, from the start of the segment to the beginning of this pointer. */\n byteOffset;\n /**\n * The starting segment for this pointer's data. In the case of a far pointer, the actual content this pointer is\n * referencing will be in another segment within the same message.\n */\n segment;\n constructor(segment, byteOffset, depthLimit = MAX_DEPTH) {\n this._capnp = { compositeList: false, depthLimit };\n this.segment = segment;\n this.byteOffset = byteOffset;\n if (depthLimit < 1) {\n throw new Error(format(PTR_DEPTH_LIMIT_EXCEEDED, this));\n }\n trackPointerAllocation(segment.message, this);\n if (byteOffset < 0 || byteOffset > segment.byteLength) {\n throw new Error(format(PTR_OFFSET_OUT_OF_BOUNDS, byteOffset));\n }\n }\n [Symbol.toStringTag]() {\n return format(\"Pointer_%d\", this.segment.id);\n }\n toString() {\n return format(\"->%d@%a%s\", this.segment.id, this.byteOffset, dump(this));\n }\n}\n\nclass List extends Pointer {\n static _capnp = {\n displayName: \"List<Generic>\",\n size: ListElementSize.VOID\n };\n constructor(segment, byteOffset, depthLimit) {\n super(segment, byteOffset, depthLimit);\n return new Proxy(this, List.#proxyHandler);\n }\n static #proxyHandler = {\n get(target, prop, receiver) {\n const val = Reflect.get(target, prop, receiver);\n if (val !== undefined) {\n return val;\n }\n if (typeof prop === \"string\") {\n return target.get(+prop);\n }\n }\n };\n get length() {\n return getTargetListLength(this);\n }\n toArray() {\n const { length } = this;\n const res = Array.from({ length });\n for (let i = 0; i < length; i++) {\n res[i] = this.at(i);\n }\n return res;\n }\n get(_index) {\n throw new TypeError(\"Cannot get from a generic list.\");\n }\n set(_index, _value) {\n throw new TypeError(\"Cannot set on a generic list.\");\n }\n at(index) {\n return this.get(index < 0 ? this.length + index : index);\n }\n concat(other) {\n const { length } = this;\n const otherLength = other.length;\n const res = Array.from({ length: length + otherLength });\n for (let i = 0; i < length; i++) res[i] = this.at(i);\n for (let i = 0; i < otherLength; i++) res[i + length] = other.at(i);\n return res;\n }\n some(cb, _this) {\n for (let i = 0; i < this.length; i++) {\n if (cb.call(_this, this.at(i), i, this)) {\n return true;\n }\n }\n return false;\n }\n filter(cb, _this) {\n const res = [];\n for (let i = 0; i < this.length; i++) {\n const value = this.at(i);\n if (cb.call(_this, value, i, this)) {\n res.push(value);\n }\n }\n return res;\n }\n find(cb, _this) {\n for (let i = 0; i < this.length; i++) {\n const value = this.at(i);\n if (cb.call(_this, value, i, this)) {\n return value;\n }\n }\n return undefined;\n }\n findIndex(cb, _this) {\n for (let i = 0; i < this.length; i++) {\n const value = this.at(i);\n if (cb.call(_this, value, i, this)) {\n return i;\n }\n }\n return -1;\n }\n forEach(cb, _this) {\n for (let i = 0; i < this.length; i++) {\n cb.call(_this, this.at(i), i, this);\n }\n }\n map(cb, _this) {\n const { length } = this;\n const res = Array.from({ length });\n for (let i = 0; i < length; i++) {\n res[i] = cb.call(_this, this.at(i), i, this);\n }\n return res;\n }\n flatMap(cb, _this) {\n const res = [];\n for (let i = 0; i < this.length; i++) {\n const r = cb.call(_this, this.at(i), i, this);\n res.push(...Array.isArray(r) ? r : [r]);\n }\n return res;\n }\n every(cb, _this) {\n for (let i = 0; i < this.length; i++) {\n if (!cb.call(_this, this.at(i), i, this)) {\n return false;\n }\n }\n return true;\n }\n reduce(cb, initialValue) {\n let i = 0;\n let res;\n if (initialValue === undefined) {\n res = this.at(0);\n i++;\n } else {\n res = initialValue;\n }\n for (; i < this.length; i++) {\n res = cb(res, this.at(i), i, this);\n }\n return res;\n }\n reduceRight(cb, initialValue) {\n let i = this.length - 1;\n let res;\n if (initialValue === undefined) {\n res = this.at(i);\n i--;\n } else {\n res = initialValue;\n }\n for (; i >= 0; i--) {\n res = cb(res, this.at(i), i, this);\n }\n return res;\n }\n slice(start = 0, end) {\n const length = end ? Math.min(this.length, end) : this.length;\n const res = Array.from({ length: length - start });\n for (let i = start; i < length; i++) {\n res[i] = this.at(i);\n }\n return res;\n }\n join(separator) {\n return this.toArray().join(separator);\n }\n toReversed() {\n return this.toArray().reverse();\n }\n toSorted(compareFn) {\n return this.toArray().sort(compareFn);\n }\n toSpliced(start, deleteCount, ...items) {\n return this.toArray().splice(start, deleteCount, ...items);\n }\n fill(value, start, end) {\n const { length } = this;\n const s = Math.max(start ?? 0, 0);\n const e = Math.min(end ?? length, length);\n for (let i = s; i < e; i++) {\n this.set(i, value);\n }\n return this;\n }\n copyWithin(target, start, end) {\n const { length } = this;\n const e = end ?? length;\n const s = start < 0 ? Math.max(length + start, 0) : start;\n const t = target < 0 ? Math.max(length + target, 0) : target;\n const len = Math.min(e - s, length - t);\n for (let i = 0; i < len; i++) {\n this.set(t + i, this.at(s + i));\n }\n return this;\n }\n keys() {\n return Array.from({ length: this.length }, (_, i) => i)[Symbol.iterator]();\n }\n values() {\n return this.toArray().values();\n }\n entries() {\n return this.toArray().entries();\n }\n flat(depth) {\n return this.toArray().flat(depth);\n }\n with(index, value) {\n return this.toArray().with(index, value);\n }\n includes(_searchElement, _fromIndex) {\n throw new Error(LIST_NO_SEARCH);\n }\n findLast(_cb, _thisArg) {\n throw new Error(LIST_NO_SEARCH);\n }\n findLastIndex(_cb, _t) {\n throw new Error(LIST_NO_SEARCH);\n }\n indexOf(_searchElement, _fromIndex) {\n throw new Error(LIST_NO_SEARCH);\n }\n lastIndexOf(_searchElement, _fromIndex) {\n throw new Error(LIST_NO_SEARCH);\n }\n pop() {\n throw new Error(LIST_NO_MUTABLE);\n }\n push(..._items) {\n throw new Error(LIST_NO_MUTABLE);\n }\n reverse() {\n throw new Error(LIST_NO_MUTABLE);\n }\n shift() {\n throw new Error(LIST_NO_MUTABLE);\n }\n unshift(..._items) {\n throw new Error(LIST_NO_MUTABLE);\n }\n splice(_start, _deleteCount, ..._rest) {\n throw new Error(LIST_NO_MUTABLE);\n }\n sort(_fn) {\n throw new Error(LIST_NO_MUTABLE);\n }\n get [Symbol.unscopables]() {\n return Array.prototype[Symbol.unscopables];\n }\n [Symbol.iterator]() {\n return this.values();\n }\n toJSON() {\n return this.toArray();\n }\n toString() {\n return this.join(\",\");\n }\n toLocaleString(_locales, _options) {\n return this.toString();\n }\n [Symbol.toStringTag]() {\n return \"[object Array]\";\n }\n static [Symbol.toStringTag]() {\n return this._capnp.displayName;\n }\n}\nfunction initList$1(elementSize, length, list, compositeSize) {\n let c;\n switch (elementSize) {\n case ListElementSize.BIT: {\n c = list.segment.allocate(Math.ceil(length / 8));\n break;\n }\n case ListElementSize.BYTE:\n case ListElementSize.BYTE_2:\n case ListElementSize.BYTE_4:\n case ListElementSize.BYTE_8:\n case ListElementSize.POINTER: {\n c = list.segment.allocate(length * getListElementByteLength(elementSize));\n break;\n }\n case ListElementSize.COMPOSITE: {\n if (compositeSize === undefined) {\n throw new Error(format(PTR_COMPOSITE_SIZE_UNDEFINED));\n }\n compositeSize = padToWord(compositeSize);\n const byteLength = getByteLength(compositeSize) * length;\n c = list.segment.allocate(byteLength + 8);\n setStructPointer(length, compositeSize, c);\n break;\n }\n case ListElementSize.VOID: {\n setListPointer(0, elementSize, length, list);\n return;\n }\n default: {\n throw new Error(format(PTR_INVALID_LIST_SIZE, elementSize));\n }\n }\n const res = initPointer(c.segment, c.byteOffset, list);\n setListPointer(\n res.offsetWords,\n elementSize,\n length,\n res.pointer,\n compositeSize\n );\n}\n\nclass Data extends List {\n static fromPointer(pointer) {\n validate(PointerType.LIST, pointer, ListElementSize.BYTE);\n return this._fromPointerUnchecked(pointer);\n }\n static _fromPointerUnchecked(pointer) {\n return new this(\n pointer.segment,\n pointer.byteOffset,\n pointer._capnp.depthLimit\n );\n }\n /**\n * Copy the contents of `src` into this Data pointer. If `src` is smaller than the length of this pointer then the\n * remaining bytes will be zeroed out. Extra bytes in `src` are ignored.\n *\n * @param src The source buffer.\n */\n // TODO: Would be nice to have a way to zero-copy a buffer by allocating a new segment into the message with that\n // buffer data.\n copyBuffer(src) {\n const c = getContent(this);\n const dstLength = this.length;\n const srcLength = src.byteLength;\n const i = src instanceof ArrayBuffer ? new Uint8Array(src) : new Uint8Array(\n src.buffer,\n src.byteOffset,\n Math.min(dstLength, srcLength)\n );\n const o = new Uint8Array(c.segment.buffer, c.byteOffset, this.length);\n o.set(i);\n if (dstLength > srcLength) {\n o.fill(0, srcLength, dstLength);\n }\n }\n /**\n * Read a byte from the specified offset.\n *\n * @param byteOffset The byte offset to read.\n * @returns The byte value.\n */\n get(byteOffset) {\n const c = getContent(this);\n return c.segment.getUint8(c.byteOffset + byteOffset);\n }\n /**\n * Write a byte at the specified offset.\n *\n * @param byteOffset The byte offset to set.\n * @param value The byte value to set.\n */\n set(byteOffset, value) {\n const c = getContent(this);\n c.segment.setUint8(c.byteOffset + byteOffset, value);\n }\n /**\n * Creates a **copy** of the underlying buffer data and returns it as an ArrayBuffer.\n *\n * To obtain a reference to the underlying buffer instead, use `toUint8Array()` or `toDataView()`.\n *\n * @returns A copy of this data buffer.\n */\n toArrayBuffer() {\n const c = getContent(this);\n return c.segment.buffer.slice(c.byteOffset, c.byteOffset + this.length);\n }\n /**\n * Convert this Data pointer to a DataView representing the pointer's contents.\n *\n * WARNING: The DataView references memory from a message segment, so do not venture outside the bounds of the\n * DataView or else BAD THINGS.\n *\n * @returns A live reference to the underlying buffer.\n */\n toDataView() {\n const c = getContent(this);\n return new DataView(c.segment.buffer, c.byteOffset, this.length);\n }\n [Symbol.toStringTag]() {\n return `Data_${super.toString()}`;\n }\n /**\n * Convert this Data pointer to a Uint8Array representing the pointer's contents.\n *\n * WARNING: The Uint8Array references memory from a message segment, so do not venture outside the bounds of the\n * Uint8Array or else BAD THINGS.\n *\n * @returns A live reference to the underlying buffer.\n */\n toUint8Array() {\n const c = getContent(this);\n return new Uint8Array(c.segment.buffer, c.byteOffset, this.length);\n }\n}\n\nconst textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nclass Text extends List {\n static fromPointer(pointer) {\n validate(PointerType.LIST, pointer, ListElementSize.BYTE);\n return textFromPointerUnchecked(pointer);\n }\n /**\n * Read a utf-8 encoded string value from this pointer.\n *\n * @param index The index at which to start reading; defaults to zero.\n * @returns The string value.\n */\n get(index = 0) {\n if (isNull(this)) {\n return \"\";\n }\n const c = getContent(this);\n return textDecoder.decode(\n new Uint8Array(\n c.segment.buffer,\n c.byteOffset + index,\n this.length - index\n )\n );\n }\n /**\n * Get the number of utf-8 encoded bytes in this text. This does **not** include the NUL byte.\n *\n * @returns The number of bytes allocated for the text.\n */\n get length() {\n return super.length - 1;\n }\n /**\n * Write a utf-8 encoded string value starting at the specified index.\n *\n * @param index The index at which to start copying the string. Note that if this is not zero the bytes\n * before `index` will be left as-is. All bytes after `index` will be overwritten.\n * @param value The string value to set.\n */\n set(index, value) {\n const src = textEncoder.encode(value);\n const dstLength = src.byteLength + index;\n let c;\n let original;\n if (!isNull(this)) {\n c = getContent(this);\n const originalLength = Math.min(this.length, index);\n original = new Uint8Array(\n c.segment.buffer.slice(c.byteOffset, c.byteOffset + originalLength)\n );\n erase(this);\n }\n initList$1(ListElementSize.BYTE, dstLength + 1, this);\n c = getContent(this);\n const dst = new Uint8Array(c.segment.buffer, c.byteOffset, dstLength);\n if (original) {\n dst.set(original);\n }\n dst.set(src, index);\n }\n toString() {\n return this.get();\n }\n toJSON() {\n return this.get();\n }\n [Symbol.toPrimitive]() {\n return this.get();\n }\n [Symbol.toStringTag]() {\n return `Text_${super.toString()}`;\n }\n}\nfunction textFromPointerUnchecked(pointer) {\n return new Text(\n pointer.segment,\n pointer.byteOffset,\n pointer._capnp.depthLimit\n );\n}\n\nclass Struct extends Pointer {\n static _capnp = {\n displayName: \"Struct\"\n };\n /**\n * Create a new pointer to a struct.\n *\n * @param segment The segment the pointer resides in.\n * @param byteOffset The offset from the beginning of the segment to the beginning of the pointer data.\n * @param depthLimit The nesting depth limit for this object.\n * @param compositeIndex If set, then this pointer is actually a reference to a composite list\n * (`this._getPointerTargetType() === PointerType.LIST`), and this number is used as the index of the struct within\n * the list. It is not valid to call `initStruct()` on a composite struct – the struct contents are initialized when\n * the list pointer is initialized.\n */\n constructor(segment, byteOffset, depthLimit = MAX_DEPTH, compositeIndex) {\n super(segment, byteOffset, depthLimit);\n this._capnp.compositeIndex = compositeIndex;\n this._capnp.compositeList = compositeIndex !== undefined;\n }\n static [Symbol.toStringTag]() {\n return this._capnp.displayName;\n }\n [Symbol.toStringTag]() {\n return `Struct_${super.toString()}${this._capnp.compositeIndex === undefined ? \"\" : `,ci:${this._capnp.compositeIndex}`} > ${getContent(this).toString()}`;\n }\n}\nclass AnyStruct extends Struct {\n static _capnp = {\n displayName: \"AnyStruct\",\n id: \"0\",\n size: new ObjectSize(0, 0)\n };\n}\n\nclass FixedAnswer {\n struct() {\n return Promise.resolve(this.structSync());\n }\n}\n\nclass ErrorAnswer extends FixedAnswer {\n constructor(err) {\n super();\n this.err = err;\n }\n structSync() {\n throw this.err;\n }\n pipelineCall(_transform, _call) {\n return this;\n }\n pipelineClose(_transform) {\n throw this.err;\n }\n}\n\nclass ErrorClient {\n constructor(err) {\n this.err = err;\n }\n call(_call) {\n return new ErrorAnswer(this.err);\n }\n close() {\n throw this.err;\n }\n}\nfunction clientOrNull(client) {\n return client ?? new ErrorClient(new Error(RPC_NULL_CLIENT));\n}\n\nconst TMP_WORD = new DataView(new ArrayBuffer(8));\nfunction initStruct(size, s) {\n if (s._capnp.compositeIndex !== undefined) {\n throw new Error(format(PTR_INIT_COMPOSITE_STRUCT, s));\n }\n erase(s);\n const c = s.segment.allocate(getByteLength(size));\n const res = initPointer(c.segment, c.byteOffset, s);\n setStructPointer(res.offsetWords, size, res.pointer);\n}\nfunction initStructAt(index, StructClass, p) {\n const s = getPointerAs(index, StructClass, p);\n initStruct(StructClass._capnp.size, s);\n return s;\n}\nfunction checkPointerBounds(index, s) {\n const { pointerLength } = getSize(s);\n if (index < 0 || index >= pointerLength) {\n throw new Error(\n format(PTR_STRUCT_POINTER_OUT_OF_BOUNDS, s, index, pointerLength)\n );\n }\n}\nfunction getInterfaceClientOrNullAt(index, s) {\n return getInterfaceClientOrNull(getPointer(index, s));\n}\nfunction getInterfaceClientOrNull(p) {\n let client = null;\n const capId = getInterfacePointer(p);\n const { capTable } = p.segment.message._capnp;\n if (capTable && capId >= 0 && capId < capTable.length) {\n client = capTable[capId];\n }\n return clientOrNull(client);\n}\nfunction resize(dstSize, s) {\n const srcSize = getSize(s);\n const srcContent = getContent(s);\n const dstContent = s.segment.allocate(getByteLength(dstSize));\n dstContent.segment.copyWords(\n dstContent.byteOffset,\n srcContent.segment,\n srcContent.byteOffset,\n Math.min(getDataWordLength(srcSize), getDataWordLength(dstSize))\n );\n const res = initPointer(dstContent.segment, dstContent.byteOffset, s);\n setStructPointer(res.offsetWords, dstSize, res.pointer);\n for (let i = 0; i < Math.min(srcSize.pointerLength, dstSize.pointerLength); i++) {\n const srcPtr = new Pointer(\n srcContent.segment,\n srcContent.byteOffset + srcSize.dataByteLength + i * 8\n );\n if (isNull(srcPtr)) {\n continue;\n }\n const srcPtrTarget = followFars(srcPtr);\n const srcPtrContent = getContent(srcPtr);\n const dstPtr = new Pointer(\n dstContent.segment,\n dstContent.byteOffset + dstSize.dataByteLength + i * 8\n );\n if (getTargetPointerType(srcPtr) === PointerType.LIST && getTargetListElementSize(srcPtr) === ListElementSize.COMPOSITE) {\n srcPtrContent.byteOffset -= 8;\n }\n const r = initPointer(\n srcPtrContent.segment,\n srcPtrContent.byteOffset,\n dstPtr\n );\n const a = srcPtrTarget.segment.getUint8(srcPtrTarget.byteOffset) & 3;\n const b = srcPtrTarget.segment.getUint32(srcPtrTarget.byteOffset + 4);\n r.pointer.segment.setUint32(r.pointer.byteOffset, a | r.offsetWords << 2);\n r.pointer.segment.setUint32(r.pointer.byteOffset + 4, b);\n }\n srcContent.segment.fillZeroWords(\n srcContent.byteOffset,\n getWordLength(srcSize)\n );\n}\nfunction getAs(StructClass, s) {\n return new StructClass(\n s.segment,\n s.byteOffset,\n s._capnp.depthLimit,\n s._capnp.compositeIndex\n );\n}\nfunction getBit(bitOffset, s, defaultMask) {\n const byteOffset = Math.floor(bitOffset / 8);\n const bitMask = 1 << bitOffset % 8;\n checkDataBounds(byteOffset, 1, s);\n const ds = getDataSection(s);\n const v = ds.segment.getUint8(ds.byteOffset + byteOffset);\n if (defaultMask === undefined) {\n return (v & bitMask) !== 0;\n }\n const defaultValue = defaultMask.getUint8(0);\n return ((v ^ defaultValue) & bitMask) !== 0;\n}\nfunction getData(index, s, defaultValue) {\n checkPointerBounds(index, s);\n const ps = getPointerSection(s);\n ps.byteOffset += index * 8;\n const l = new Data(ps.segment, ps.byteOffset, s._capnp.depthLimit - 1);\n if (isNull(l)) {\n if (defaultValue) {\n copyFrom(defaultValue, l);\n } else {\n initList$1(ListElementSize.BYTE, 0, l);\n }\n }\n return l;\n}\nfunction getDataSection(s) {\n return getContent(s);\n}\nfunction getFloat32(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 4, s);\n const ds = getDataSection(s);\n if (defaultMask === undefined) {\n return ds.segment.getFloat32(ds.byteOffset + byteOffset);\n }\n const v = ds.segment.getUint32(ds.byteOffset + byteOffset) ^ defaultMask.getUint32(0, true);\n TMP_WORD.setUint32(0, v, NATIVE_LITTLE_ENDIAN);\n return TMP_WORD.getFloat32(0, NATIVE_LITTLE_ENDIAN);\n}\nfunction getFloat64(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 8, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n const lo = ds.segment.getUint32(ds.byteOffset + byteOffset) ^ defaultMask.getUint32(0, true);\n const hi = ds.segment.getUint32(ds.byteOffset + byteOffset + 4) ^ defaultMask.getUint32(4, true);\n TMP_WORD.setUint32(0, lo, NATIVE_LITTLE_ENDIAN);\n TMP_WORD.setUint32(4, hi, NATIVE_LITTLE_ENDIAN);\n return TMP_WORD.getFloat64(0, NATIVE_LITTLE_ENDIAN);\n }\n return ds.segment.getFloat64(ds.byteOffset + byteOffset);\n}\nfunction getInt16(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 2, s);\n const ds = getDataSection(s);\n if (defaultMask === undefined) {\n return ds.segment.getInt16(ds.byteOffset + byteOffset);\n }\n const v = ds.segment.getUint16(ds.byteOffset + byteOffset) ^ defaultMask.getUint16(0, true);\n TMP_WORD.setUint16(0, v, NATIVE_LITTLE_ENDIAN);\n return TMP_WORD.getInt16(0, NATIVE_LITTLE_ENDIAN);\n}\nfunction getInt32(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 4, s);\n const ds = getDataSection(s);\n if (defaultMask === undefined) {\n return ds.segment.getInt32(ds.byteOffset + byteOffset);\n }\n const v = ds.segment.getUint32(ds.byteOffset + byteOffset) ^ defaultMask.getUint16(0, true);\n TMP_WORD.setUint32(0, v, NATIVE_LITTLE_ENDIAN);\n return TMP_WORD.getInt32(0, NATIVE_LITTLE_ENDIAN);\n}\nfunction getInt64(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 8, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n const lo = ds.segment.getUint32(ds.byteOffset + byteOffset) ^ defaultMask.getUint32(0, true);\n const hi = ds.segment.getUint32(ds.byteOffset + byteOffset + 4) ^ defaultMask.getUint32(4, true);\n TMP_WORD.setUint32(NATIVE_LITTLE_ENDIAN ? 0 : 4, lo, NATIVE_LITTLE_ENDIAN);\n TMP_WORD.setUint32(NATIVE_LITTLE_ENDIAN ? 4 : 0, hi, NATIVE_LITTLE_ENDIAN);\n return TMP_WORD.getBigInt64(0, NATIVE_LITTLE_ENDIAN);\n }\n return ds.segment.getInt64(ds.byteOffset + byteOffset);\n}\nfunction getInt8(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 1, s);\n const ds = getDataSection(s);\n if (defaultMask === undefined) {\n return ds.segment.getInt8(ds.byteOffset + byteOffset);\n }\n const v = ds.segment.getUint8(ds.byteOffset + byteOffset) ^ defaultMask.getUint8(0);\n TMP_WORD.setUint8(0, v);\n return TMP_WORD.getInt8(0);\n}\nfunction getList(index, ListClass, s, defaultValue) {\n checkPointerBounds(index, s);\n const ps = getPointerSection(s);\n ps.byteOffset += index * 8;\n const l = new ListClass(ps.segment, ps.byteOffset, s._capnp.depthLimit - 1);\n if (isNull(l)) {\n if (defaultValue) {\n copyFrom(defaultValue, l);\n } else {\n initList$1(ListClass._capnp.size, 0, l, ListClass._capnp.compositeSize);\n }\n } else if (ListClass._capnp.compositeSize !== undefined) {\n const srcSize = getTargetCompositeListSize(l);\n const dstSize = ListClass._capnp.compositeSize;\n if (dstSize.dataByteLength > srcSize.dataByteLength || dstSize.pointerLength > srcSize.pointerLength) {\n const srcContent = getContent(l);\n const srcLength = getTargetListLength(l);\n const dstContent = l.segment.allocate(\n getByteLength(dstSize) * srcLength + 8\n );\n const res = initPointer(dstContent.segment, dstContent.byteOffset, l);\n setListPointer(\n res.offsetWords,\n ListClass._capnp.size,\n srcLength,\n res.pointer,\n dstSize\n );\n setStructPointer(srcLength, dstSize, dstContent);\n dstContent.byteOffset += 8;\n for (let i = 0; i < srcLength; i++) {\n const srcElementOffset = srcContent.byteOffset + i * getByteLength(srcSize);\n const dstElementOffset = dstContent.byteOffset + i * getByteLength(dstSize);\n dstContent.segment.copyWords(\n dstElementOffset,\n srcContent.segment,\n srcElementOffset,\n getWordLength(srcSize)\n );\n for (let j = 0; j < srcSize.pointerLength; j++) {\n const srcPtr = new Pointer(\n srcContent.segment,\n srcElementOffset + srcSize.dataByteLength + j * 8\n );\n const dstPtr = new Pointer(\n dstContent.segment,\n dstElementOffset + dstSize.dataByteLength + j * 8\n );\n const srcPtrTarget = followFars(srcPtr);\n const srcPtrContent = getContent(srcPtr);\n if (getTargetPointerType(srcPtr) === PointerType.LIST && getTargetListElementSize(srcPtr) === ListElementSize.COMPOSITE) {\n srcPtrContent.byteOffset -= 8;\n }\n const r = initPointer(\n srcPtrContent.segment,\n srcPtrContent.byteOffset,\n dstPtr\n );\n const a = srcPtrTarget.segment.getUint8(srcPtrTarget.byteOffset) & 3;\n const b = srcPtrTarget.segment.getUint32(srcPtrTarget.byteOffset + 4);\n r.pointer.segment.setUint32(\n r.pointer.byteOffset,\n a | r.offsetWords << 2\n );\n r.pointer.segment.setUint32(r.pointer.byteOffset + 4, b);\n }\n }\n srcContent.segment.fillZeroWords(\n srcContent.byteOffset,\n getWordLength(srcSize) * srcLength\n );\n }\n }\n return l;\n}\nfunction getPointer(index, s) {\n checkPointerBounds(index, s);\n const ps = getPointerSection(s);\n ps.byteOffset += index * 8;\n return new Pointer(ps.segment, ps.byteOffset, s._capnp.depthLimit - 1);\n}\nfunction getPointerAs(index, PointerClass, s) {\n checkPointerBounds(index, s);\n const ps = getPointerSection(s);\n ps.byteOffset += index * 8;\n return new PointerClass(ps.segment, ps.byteOffset, s._capnp.depthLimit - 1);\n}\nfunction getPointerSection(s) {\n const ps = getContent(s);\n ps.byteOffset += padToWord$1(getSize(s).dataByteLength);\n return ps;\n}\nfunction getSize(s) {\n if (s._capnp.compositeIndex !== undefined) {\n const c = getContent(s, true);\n c.byteOffset -= 8;\n return getStructSize(c);\n }\n return getTargetStructSize(s);\n}\nfunction getStruct(index, StructClass, s, defaultValue) {\n const t = getPointerAs(index, StructClass, s);\n if (isNull(t)) {\n if (defaultValue) {\n copyFrom(defaultValue, t);\n } else {\n initStruct(StructClass._capnp.size, t);\n }\n } else {\n validate(PointerType.STRUCT, t);\n const ts = getTargetStructSize(t);\n if (ts.dataByteLength < StructClass._capnp.size.dataByteLength || ts.pointerLength < StructClass._capnp.size.pointerLength) {\n resize(StructClass._capnp.size, t);\n }\n }\n return t;\n}\nfunction getText(index, s, defaultValue) {\n const t = Text.fromPointer(getPointer(index, s));\n if (isNull(t) && defaultValue) {\n t.set(0, defaultValue);\n }\n return t.get(0);\n}\nfunction getUint16(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 2, s);\n const ds = getDataSection(s);\n if (defaultMask === undefined) {\n return ds.segment.getUint16(ds.byteOffset + byteOffset);\n }\n return ds.segment.getUint16(ds.byteOffset + byteOffset) ^ defaultMask.getUint16(0, true);\n}\nfunction getUint32(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 4, s);\n const ds = getDataSection(s);\n if (defaultMask === undefined) {\n return ds.segment.getUint32(ds.byteOffset + byteOffset);\n }\n return ds.segment.getUint32(ds.byteOffset + byteOffset) ^ defaultMask.getUint32(0, true);\n}\nfunction getUint64(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 8, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n const lo = ds.segment.getUint32(ds.byteOffset + byteOffset) ^ defaultMask.getUint32(0, true);\n const hi = ds.segment.getUint32(ds.byteOffset + byteOffset + 4) ^ defaultMask.getUint32(4, true);\n TMP_WORD.setUint32(NATIVE_LITTLE_ENDIAN ? 0 : 4, lo, NATIVE_LITTLE_ENDIAN);\n TMP_WORD.setUint32(NATIVE_LITTLE_ENDIAN ? 4 : 0, hi, NATIVE_LITTLE_ENDIAN);\n return TMP_WORD.getBigUint64(0, NATIVE_LITTLE_ENDIAN);\n }\n return ds.segment.getUint64(ds.byteOffset + byteOffset);\n}\nfunction getUint8(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 1, s);\n const ds = getDataSection(s);\n if (defaultMask === undefined) {\n return ds.segment.getUint8(ds.byteOffset + byteOffset);\n }\n return ds.segment.getUint8(ds.byteOffset + byteOffset) ^ defaultMask.getUint8(0);\n}\nfunction initData(index, length, s) {\n checkPointerBounds(index, s);\n const ps = getPointerSection(s);\n ps.byteOffset += index * 8;\n const l = new Data(ps.segment, ps.byteOffset, s._capnp.depthLimit - 1);\n erase(l);\n initList$1(ListElementSize.BYTE, length, l);\n return l;\n}\nfunction initList(index, ListClass, length, s) {\n checkPointerBounds(index, s);\n const ps = getPointerSection(s);\n ps.byteOffset += index * 8;\n const l = new ListClass(ps.segment, ps.byteOffset, s._capnp.depthLimit - 1);\n erase(l);\n initList$1(ListClass._capnp.size, length, l, ListClass._capnp.compositeSize);\n return l;\n}\nfunction setBit(bitOffset, value, s, defaultMask) {\n const byteOffset = Math.floor(bitOffset / 8);\n const bitMask = 1 << bitOffset % 8;\n checkDataBounds(byteOffset, 1, s);\n const ds = getDataSection(s);\n const b = ds.segment.getUint8(ds.byteOffset + byteOffset);\n if (defaultMask !== undefined) {\n value = (defaultMask.getUint8(0) & bitMask) === 0 ? value : !value;\n }\n ds.segment.setUint8(\n ds.byteOffset + byteOffset,\n value ? b | bitMask : b & ~bitMask\n );\n}\nfunction setFloat32(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 4, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n TMP_WORD.setFloat32(0, value, NATIVE_LITTLE_ENDIAN);\n const v = TMP_WORD.getUint32(0, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint32(0, true);\n ds.segment.setUint32(ds.byteOffset + byteOffset, v);\n return;\n }\n ds.segment.setFloat32(ds.byteOffset + byteOffset, value);\n}\nfunction setFloat64(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 8, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n TMP_WORD.setFloat64(0, value, NATIVE_LITTLE_ENDIAN);\n const lo = TMP_WORD.getUint32(0, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint32(0, true);\n const hi = TMP_WORD.getUint32(4, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint32(4, true);\n ds.segment.setUint32(ds.byteOffset + byteOffset, lo);\n ds.segment.setUint32(ds.byteOffset + byteOffset + 4, hi);\n return;\n }\n ds.segment.setFloat64(ds.byteOffset + byteOffset, value);\n}\nfunction setInt16(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 2, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n TMP_WORD.setInt16(0, value, NATIVE_LITTLE_ENDIAN);\n const v = TMP_WORD.getUint16(0, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint16(0, true);\n ds.segment.setUint16(ds.byteOffset + byteOffset, v);\n return;\n }\n ds.segment.setInt16(ds.byteOffset + byteOffset, value);\n}\nfunction setInt32(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 4, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n TMP_WORD.setInt32(0, value, NATIVE_LITTLE_ENDIAN);\n const v = TMP_WORD.getUint32(0, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint32(0, true);\n ds.segment.setUint32(ds.byteOffset + byteOffset, v);\n return;\n }\n ds.segment.setInt32(ds.byteOffset + byteOffset, value);\n}\nfunction setInt64(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 8, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n TMP_WORD.setBigInt64(0, value, NATIVE_LITTLE_ENDIAN);\n const lo = TMP_WORD.getUint32(NATIVE_LITTLE_ENDIAN ? 0 : 4, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint32(0, true);\n const hi = TMP_WORD.getUint32(NATIVE_LITTLE_ENDIAN ? 4 : 0, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint32(4, true);\n ds.segment.setUint32(ds.byteOffset + byteOffset, lo);\n ds.segment.setUint32(ds.byteOffset + byteOffset + 4, hi);\n return;\n }\n ds.segment.setInt64(ds.byteOffset + byteOffset, value);\n}\nfunction setInt8(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 1, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n TMP_WORD.setInt8(0, value);\n const v = TMP_WORD.getUint8(0) ^ defaultMask.getUint8(0);\n ds.segment.setUint8(ds.byteOffset + byteOffset, v);\n return;\n }\n ds.segment.setInt8(ds.byteOffset + byteOffset, value);\n}\nfunction setText(index, value, s) {\n Text.fromPointer(getPointer(index, s)).set(0, value);\n}\nfunction setUint16(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 2, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n value ^= defaultMask.getUint16(0, true);\n }\n ds.segment.setUint16(ds.byteOffset + byteOffset, value);\n}\nfunction setUint32(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 4, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n value ^= defaultMask.getUint32(0, true);\n }\n ds.segment.setUint32(ds.byteOffset + byteOffset, value);\n}\nfunction setUint64(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 8, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n TMP_WORD.setBigUint64(0, value, NATIVE_LITTLE_ENDIAN);\n const lo = TMP_WORD.getUint32(NATIVE_LITTLE_ENDIAN ? 0 : 4, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint32(0, true);\n const hi = TMP_WORD.getUint32(NATIVE_LITTLE_ENDIAN ? 4 : 0, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint32(4, true);\n ds.segment.setUint32(ds.byteOffset + byteOffset, lo);\n ds.segment.setUint32(ds.byteOffset + byteOffset + 4, hi);\n return;\n }\n ds.segment.setUint64(ds.byteOffset + byteOffset, value);\n}\nfunction setUint8(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 1, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n value ^= defaultMask.getUint8(0);\n }\n ds.segment.setUint8(ds.byteOffset + byteOffset, value);\n}\nfunction testWhich(name, found, wanted, s) {\n if (found !== wanted) {\n throw new Error(format(PTR_INVALID_UNION_ACCESS, s, name, found, wanted));\n }\n}\nfunction checkDataBounds(byteOffset, byteLength, s) {\n const { dataByteLength } = getSize(s);\n if (byteOffset < 0 || byteLength < 0 || byteOffset + byteLength > dataByteLength) {\n throw new Error(\n format(\n PTR_STRUCT_DATA_OUT_OF_BOUNDS,\n s,\n byteLength,\n byteOffset,\n dataByteLength\n )\n );\n }\n}\n\nexport { Pointer as $, setInt16 as A, getInt32 as B, setInt32 as C, getInt64 as D, setInt64 as E, getFloat32 as F, setFloat32 as G, getFloat64 as H, setFloat64 as I, getData as J, initData as K, List as L, ListElementSize as M, format as N, ObjectSize as O, SEG_NOT_WORD_ALIGNED as P, DEFAULT_BUFFER_SIZE as Q, SEG_ID_OUT_OF_BOUNDS as R, Struct as S, padToWord$1 as T, SEG_GET_NON_ZERO_SINGLE as U, MIN_SINGLE_SEGMENT_GROWTH as V, assertNever as W, MSG_PACK_NOT_WORD_ALIGNED as X, PACK_SPAN_THRESHOLD as Y, MAX_SEGMENT_LENGTH as Z, SEG_SIZE_OVERFLOW as _, adopt as a, setListPointer as a$, NATIVE_LITTLE_ENDIAN as a0, SEG_REPLACEMENT_BUFFER_TOO_SMALL as a1, DEFAULT_TRAVERSE_LIMIT as a2, MSG_INVALID_FRAME_HEADER as a3, MSG_SEGMENT_TOO_SMALL as a4, MSG_SEGMENT_OUT_OF_BOUNDS as a5, dumpBuffer as a6, validate as a7, PointerType as a8, getTargetStructSize as a9, getCapabilityId as aA, getContent as aB, getDataSection as aC, getFarSegmentId as aD, getInterfaceClientOrNullAt as aE, getInterfacePointer as aF, getListByteLength as aG, getListElementByteLength as aH, getListElementSize as aI, getListLength as aJ, getOffsetWords as aK, getPointerAs as aL, getPointerSection as aM, getPointerType as aN, getSize as aO, getStructDataWords as aP, getStructPointerLength as aQ, getStructSize as aR, getTargetCompositeListSize as aS, getTargetCompositeListTag as aT, getTargetListElementSize as aU, getTargetListLength as aV, initPointer as aW, isDoubleFar as aX, relocateTo as aY, setFarPointer as aZ, setInterfacePointer as a_, resize as aa, initStruct as ab, MAX_DEPTH as ac, getTargetPointerType as ad, FixedAnswer as ae, getInterfaceClientOrNull as af, ErrorAnswer as ag, RPC_CALL_QUEUE_FULL as ah, INVARIANT_UNREACHABLE_CODE as ai, RPC_QUEUE_CALL_CANCEL as aj, RPC_NULL_CLIENT as ak, RPC_METHOD_ERROR as al, RPC_METHOD_NOT_IMPLEMENTED as am, pad as an, PointerAllocationResult as ao, add as ap, checkDataBounds as aq, checkPointerBounds as ar, copyFromInterface as as, copyFromList as at, copyFromStruct as au, dump as av, erase as aw, erasePointer as ax, followFar as ay, followFars as az, getUint16 as b, setStructPointer as b0, trackPointerAllocation as b1, Data as b2, Text as b3, ErrorClient as b4, RPC_ZERO_REF as b5, RPC_ERROR as b6, RPC_FULFILL_ALREADY_CALLED as b7, NOT_IMPLEMENTED as b8, RPC_IMPORT_CLOSED as b9, AnyStruct as ba, RPC_QUESTION_ID_REUSED as bb, RPC_NO_MAIN_INTERFACE as bc, RPC_BAD_TARGET as bd, RPC_UNKNOWN_CAP_DESCRIPTOR as be, RPC_FINISH_UNKNOWN_ANSWER as bf, RPC_RETURN_FOR_UNKNOWN_QUESTION as bg, RPC_UNKNOWN_ANSWER_ID as bh, RPC_UNKNOWN_EXPORT_ID as bi, Orphan as bj, clientOrNull as bk, copyFrom as c, disown as d, getUint32 as e, setUint32 as f, getPointer as g, getBit as h, isNull as i, setBit as j, getStruct as k, initStructAt as l, getList as m, initList as n, getUint8 as o, setUint8 as p, getText as q, setText as r, setUint16 as s, testWhich as t, getUint64 as u, setUint64 as v, getAs as w, getInt8 as x, setInt8 as y, getInt16 as z };\n","import { L as List, M as ListElementSize, c as copyFrom } from './capnp-es.0-_cOx6D.mjs';\n\nfunction CompositeList(CompositeClass) {\n return class extends List {\n static _capnp = {\n compositeSize: CompositeClass._capnp.size,\n displayName: `List<${CompositeClass._capnp.displayName}>`,\n size: ListElementSize.COMPOSITE\n };\n get(index) {\n return new CompositeClass(\n this.segment,\n this.byteOffset,\n this._capnp.depthLimit - 1,\n index\n );\n }\n set(index, value) {\n copyFrom(value, this.get(index));\n }\n [Symbol.toStringTag]() {\n return `Composite_${super.toString()},cls:${CompositeClass.toString()}`;\n }\n };\n}\n\nfunction _makePrimitiveMaskFn(byteLength, setter) {\n return (x) => {\n const dv = new DataView(new ArrayBuffer(byteLength));\n setter.call(dv, 0, x, true);\n return dv;\n };\n}\nconst getFloat32Mask = _makePrimitiveMaskFn(\n 4,\n DataView.prototype.setFloat32\n);\nconst getFloat64Mask = _makePrimitiveMaskFn(\n 8,\n DataView.prototype.setFloat64\n);\nconst getInt16Mask = _makePrimitiveMaskFn(\n 2,\n DataView.prototype.setInt16\n);\nconst getInt32Mask = _makePrimitiveMaskFn(\n 4,\n DataView.prototype.setInt32\n);\nconst getInt64Mask = _makePrimitiveMaskFn(\n 8,\n DataView.prototype.setBigInt64\n);\nconst getInt8Mask = _makePrimitiveMaskFn(1, DataView.prototype.setInt8);\nconst getUint16Mask = _makePrimitiveMaskFn(\n 2,\n DataView.prototype.setUint16\n);\nconst getUint32Mask = _makePrimitiveMaskFn(\n 4,\n DataView.prototype.setUint32\n);\nconst getUint64Mask = _makePrimitiveMaskFn(\n 8,\n DataView.prototype.setBigUint64\n);\nconst getUint8Mask = _makePrimitiveMaskFn(\n 1,\n DataView.prototype.setUint8\n);\nfunction getBitMask(value, bitOffset) {\n const dv = new DataView(new ArrayBuffer(1));\n if (!value) {\n return dv;\n }\n dv.setUint8(0, 1 << bitOffset % 8);\n return dv;\n}\n\nexport { CompositeList as C, getUint8Mask as a, getUint16Mask as b, getFloat32Mask as c, getFloat64Mask as d, getInt16Mask as e, getInt32Mask as f, getBitMask as g, getInt64Mask as h, getInt8Mask as i, getUint32Mask as j, getUint64Mask as k };\n","import { N as format, P as SEG_NOT_WORD_ALIGNED, Q as DEFAULT_BUFFER_SIZE, R as SEG_ID_OUT_OF_BOUNDS, T as padToWord, U as SEG_GET_NON_ZERO_SINGLE, V as MIN_SINGLE_SEGMENT_GROWTH, W as assertNever, X as MSG_PACK_NOT_WORD_ALIGNED, Y as PACK_SPAN_THRESHOLD, Z as MAX_SEGMENT_LENGTH, _ as SEG_SIZE_OVERFLOW, $ as Pointer, a0 as NATIVE_LITTLE_ENDIAN, a1 as SEG_REPLACEMENT_BUFFER_TOO_SMALL, a2 as DEFAULT_TRAVERSE_LIMIT, a3 as MSG_INVALID_FRAME_HEADER, a4 as MSG_SEGMENT_TOO_SMALL, a5 as MSG_SEGMENT_OUT_OF_BOUNDS, a6 as dumpBuffer, a7 as validate, a8 as PointerType, a9 as getTargetStructSize, aa as resize, ab as initStruct, c as copyFrom } from './capnp-es.0-_cOx6D.mjs';\n\nvar ArenaKind = /* @__PURE__ */ ((ArenaKind2) => {\n ArenaKind2[ArenaKind2[\"SINGLE_SEGMENT\"] = 0] = \"SINGLE_SEGMENT\";\n ArenaKind2[ArenaKind2[\"MULTI_SEGMENT\"] = 1] = \"MULTI_SEGMENT\";\n return ArenaKind2;\n})(ArenaKind || {});\n\nclass ArenaAllocationResult {\n /**\n * The newly allocated buffer. This buffer might be a copy of an existing segment's buffer with free space appended.\n */\n buffer;\n /**\n * The id of the newly-allocated segment.\n */\n id;\n constructor(id, buffer) {\n this.id = id;\n this.buffer = buffer;\n }\n}\n\nclass MultiSegmentArena {\n constructor(buffers = [new ArrayBuffer(DEFAULT_BUFFER_SIZE)]) {\n this.buffers = buffers;\n let i = buffers.length;\n while (--i >= 0) {\n if ((buffers[i].byteLength & 7) !== 0) {\n throw new Error(format(SEG_NOT_WORD_ALIGNED, buffers[i].byteLength));\n }\n }\n }\n static allocate = allocate$2;\n static getBuffer = getBuffer$2;\n static getNumSegments = getNumSegments$2;\n kind = ArenaKind.MULTI_SEGMENT;\n toString() {\n return format(\"MultiSegmentArena_segments:%d\", getNumSegments$2(this));\n }\n}\nfunction allocate$2(minSize, m) {\n const b = new ArrayBuffer(padToWord(Math.max(minSize, DEFAULT_BUFFER_SIZE)));\n m.buffers.push(b);\n return new ArenaAllocationResult(m.buffers.length - 1, b);\n}\nfunction getBuffer$2(id, m) {\n if (id < 0 || id >= m.buffers.length) {\n throw new Error(format(SEG_ID_OUT_OF_BOUNDS, id));\n }\n return m.buffers[id];\n}\nfunction getNumSegments$2(m) {\n return m.buffers.length;\n}\n\nclass SingleSegmentArena {\n static allocate = allocate$1;\n static getBuffer = getBuffer$1;\n static getNumSegments = getNumSegments$1;\n buffer;\n kind = ArenaKind.SINGLE_SEGMENT;\n constructor(buffer = new ArrayBuffer(DEFAULT_BUFFER_SIZE)) {\n if ((buffer.byteLength & 7) !== 0) {\n throw new Error(format(SEG_NOT_WORD_ALIGNED, buffer.byteLength));\n }\n this.buffer = buffer;\n }\n toString() {\n return format(\"SingleSegmentArena_len:%x\", this.buffer.byteLength);\n }\n}\nfunction allocate$1(minSize, segments, s) {\n const srcBuffer = segments.length > 0 ? segments[0].buffer : s.buffer;\n minSize = minSize < MIN_SINGLE_SEGMENT_GROWTH ? MIN_SINGLE_SEGMENT_GROWTH : padToWord(minSize);\n s.buffer = new ArrayBuffer(srcBuffer.byteLength + minSize);\n new Float64Array(s.buffer).set(new Float64Array(srcBuffer));\n return new ArenaAllocationResult(0, s.buffer);\n}\nfunction getBuffer$1(id, s) {\n if (id !== 0) throw new Error(format(SEG_GET_NON_ZERO_SINGLE, id));\n return s.buffer;\n}\nfunction getNumSegments$1() {\n return 1;\n}\n\nclass Arena {\n static allocate = allocate;\n static copy = copy$1;\n static getBuffer = getBuffer;\n static getNumSegments = getNumSegments;\n}\nfunction allocate(minSize, segments, a) {\n switch (a.kind) {\n case ArenaKind.MULTI_SEGMENT: {\n return MultiSegmentArena.allocate(minSize, a);\n }\n case ArenaKind.SINGLE_SEGMENT: {\n return SingleSegmentArena.allocate(minSize, segments, a);\n }\n default: {\n return assertNever(a);\n }\n }\n}\nfunction copy$1(a) {\n switch (a.kind) {\n case ArenaKind.MULTI_SEGMENT: {\n let i = a.buffers.length;\n const buffers = Array.from({ length: i });\n while (--i >= 0) {\n buffers[i] = a.buffers[i].slice(0);\n }\n return new MultiSegmentArena(buffers);\n }\n case ArenaKind.SINGLE_SEGMENT: {\n return new SingleSegmentArena(a.buffer.slice(0));\n }\n default: {\n return assertNever(a);\n }\n }\n}\nfunction getBuffer(id, a) {\n switch (a.kind) {\n case ArenaKind.MULTI_SEGMENT: {\n return MultiSegmentArena.getBuffer(id, a);\n }\n case ArenaKind.SINGLE_SEGMENT: {\n return SingleSegmentArena.getBuffer(id, a);\n }\n default: {\n return assertNever(a);\n }\n }\n}\nfunction getNumSegments(a) {\n switch (a.kind) {\n case ArenaKind.MULTI_SEGMENT: {\n return MultiSegmentArena.getNumSegments(a);\n }\n case ArenaKind.SINGLE_SEGMENT: {\n return SingleSegmentArena.getNumSegments();\n }\n default: {\n return assertNever(a);\n }\n }\n}\n\nfunction getHammingWeight(x) {\n let w = x - (x >> 1 & 1431655765);\n w = (w & 858993459) + (w >> 2 & 858993459);\n return (w + (w >> 4) & 252645135) * 16843009 >> 24;\n}\nfunction getTagByte(a, b, c, d, e, f, g, h) {\n return (a === 0 ? 0 : 1) | (b === 0 ? 0 : 2) | (c === 0 ? 0 : 4) | (d === 0 ? 0 : 8) | (e === 0 ? 0 : 16) | (f === 0 ? 0 : 32) | (g === 0 ? 0 : 64) | (h === 0 ? 0 : 128);\n}\nfunction getUnpackedByteLength(packed) {\n const p = new Uint8Array(packed);\n let wordCount = 0;\n let lastTag = 119 /* NONZERO_NONSPAN */;\n for (let i = 0; i < p.byteLength; ) {\n const tag = p[i];\n if (lastTag === 0 /* ZERO */) {\n wordCount += tag;\n i++;\n lastTag = 119 /* NONZERO_NONSPAN */;\n } else if (lastTag === 255 /* SPAN */) {\n wordCount += tag;\n i += tag * 8 + 1;\n lastTag = 119 /* NONZERO_NONSPAN */;\n } else {\n wordCount++;\n i += getHammingWeight(tag) + 1;\n lastTag = tag;\n }\n }\n return wordCount * 8;\n}\nfunction getZeroByteCount(a, b, c, d, e, f, g, h) {\n return (a === 0 ? 1 : 0) + (b === 0 ? 1 : 0) + (c === 0 ? 1 : 0) + (d === 0 ? 1 : 0) + (e === 0 ? 1 : 0) + (f === 0 ? 1 : 0) + (g === 0 ? 1 : 0) + (h === 0 ? 1 : 0);\n}\nfunction pack(unpacked, byteOffset = 0, byteLength) {\n if (unpacked.byteLength % 8 !== 0) {\n throw new Error(MSG_PACK_NOT_WORD_ALIGNED);\n }\n const src = new Uint8Array(unpacked, byteOffset, byteLength);\n const dst = [];\n let lastTag = 119 /* NONZERO_NONSPAN */;\n let spanWordCountOffset = 0;\n let rangeWordCount = 0;\n for (let srcByteOffset = 0; srcByteOffset < src.byteLength; srcByteOffset += 8) {\n const a = src[srcByteOffset];\n const b = src[srcByteOffset + 1];\n const c = src[srcByteOffset + 2];\n const d = src[srcByteOffset + 3];\n const e = src[srcByteOffset + 4];\n const f = src[srcByteOffset + 5];\n const g = src[srcByteOffset + 6];\n const h = src[srcByteOffset + 7];\n const tag = getTagByte(a, b, c, d, e, f, g, h);\n let skipWriteWord = true;\n switch (lastTag) {\n case 0 /* ZERO */: {\n if (tag !== 0 /* ZERO */ || rangeWordCount >= 255) {\n dst.push(rangeWordCount);\n rangeWordCount = 0;\n skipWriteWord = false;\n } else {\n rangeWordCount++;\n }\n break;\n }\n case 255 /* SPAN */: {\n const zeroCount = getZeroByteCount(a, b, c, d, e, f, g, h);\n if (zeroCount >= PACK_SPAN_THRESHOLD || rangeWordCount >= 255) {\n dst[spanWordCountOffset] = rangeWordCount;\n rangeWordCount = 0;\n skipWriteWord = false;\n } else {\n dst.push(a, b, c, d, e, f, g, h);\n rangeWordCount++;\n }\n break;\n }\n default: {\n skipWriteWord = false;\n break;\n }\n }\n if (skipWriteWord) {\n continue;\n }\n dst.push(tag);\n lastTag = tag;\n if (a !== 0) dst.push(a);\n if (b !== 0) dst.push(b);\n if (c !== 0) dst.push(c);\n if (d !== 0) dst.push(d);\n if (e !== 0) dst.push(e);\n if (f !== 0) dst.push(f);\n if (g !== 0) dst.push(g);\n if (h !== 0) dst.push(h);\n if (tag === 255 /* SPAN */) {\n spanWordCountOffset = dst.length;\n dst.push(0);\n }\n }\n if (lastTag === 0 /* ZERO */) {\n dst.push(rangeWordCount);\n } else if (lastTag === 255 /* SPAN */) {\n dst[spanWordCountOffset] = rangeWordCount;\n }\n return new Uint8Array(dst).buffer;\n}\nfunction unpack(packed) {\n const src = new Uint8Array(packed);\n const dst = new Uint8Array(new ArrayBuffer(getUnpackedByteLength(packed)));\n let lastTag = 119 /* NONZERO_NONSPAN */;\n for (let srcByteOffset = 0, dstByteOffset = 0; srcByteOffset < src.byteLength; ) {\n const tag = src[srcByteOffset];\n if (lastTag === 0 /* ZERO */) {\n dstByteOffset += tag * 8;\n srcByteOffset++;\n lastTag = 119 /* NONZERO_NONSPAN */;\n } else if (lastTag === 255 /* SPAN */) {\n const spanByteLength = tag * 8;\n dst.set(\n src.subarray(srcByteOffset + 1, srcByteOffset + 1 + spanByteLength),\n dstByteOffset\n );\n dstByteOffset += spanByteLength;\n srcByteOffset += 1 + spanByteLength;\n lastTag = 119 /* NONZERO_NONSPAN */;\n } else {\n srcByteOffset++;\n for (let i = 1; i <= 128; i <<= 1) {\n if ((tag & i) !== 0) {\n dst[dstByteOffset] = src[srcByteOffset++];\n }\n dstByteOffset++;\n }\n lastTag = tag;\n }\n }\n return dst.buffer;\n}\n\nclass Segment {\n constructor(id, message, buffer, byteLength = 0) {\n this.id = id;\n this.message = message;\n this.message = message;\n this.buffer = buffer;\n this._dv = new DataView(buffer);\n this.byteOffset = 0;\n this.byteLength = byteLength;\n }\n buffer;\n /** The number of bytes currently allocated in the segment. */\n byteLength;\n /**\n * This value should always be zero. It's only here to satisfy the DataView interface.\n *\n * In the future the Segment implementation (or a child class) may allow accessing the buffer from a nonzero offset,\n * but that adds a lot of extra arithmetic.\n */\n byteOffset;\n [Symbol.toStringTag] = \"Segment\";\n _dv;\n /**\n * Attempt to allocate the requested number of bytes in this segment. If this segment is full this method will return\n * a pointer to freshly allocated space in another segment from the same message.\n *\n * @param byteLength The number of bytes to allocate, will be rounded up to the nearest word.\n * @returns A pointer to the newly allocated space.\n */\n allocate(byteLength) {\n let segment = this;\n byteLength = padToWord(byteLength);\n if (byteLength > MAX_SEGMENT_LENGTH - 8) {\n throw new Error(format(SEG_SIZE_OVERFLOW, byteLength));\n }\n if (!segment.hasCapacity(byteLength)) {\n segment = segment.message.allocateSegment(byteLength);\n }\n const byteOffset = segment.byteLength;\n segment.byteLength += byteLength;\n return new Pointer(segment, byteOffset);\n }\n /**\n * Quickly copy a word (8 bytes) from `srcSegment` into this one at the given offset.\n *\n * @param byteOffset The offset to write the word to.\n * @param srcSegment The segment to copy the word from.\n * @param srcByteOffset The offset from the start of `srcSegment` to copy from.\n */\n copyWord(byteOffset, srcSegment, srcByteOffset) {\n const value = srcSegment._dv.getFloat64(\n srcByteOffset,\n NATIVE_LITTLE_ENDIAN\n );\n this._dv.setFloat64(byteOffset, value, NATIVE_LITTLE_ENDIAN);\n }\n /**\n * Quickly copy words from `srcSegment` into this one.\n *\n * @param byteOffset The offset to start copying into.\n * @param srcSegment The segment to copy from.\n * @param srcByteOffset The start offset to copy from.\n * @param wordLength The number of words to copy.\n */\n copyWords(byteOffset, srcSegment, srcByteOffset, wordLength) {\n const dst = new Float64Array(this.buffer, byteOffset, wordLength);\n const src = new Float64Array(srcSegment.buffer, srcByteOffset, wordLength);\n dst.set(src);\n }\n /**\n * Quickly fill a number of words in the buffer with zeroes.\n *\n * @param byteOffset The first byte to set to zero.\n * @param wordLength The number of words (not bytes!) to zero out.\n */\n fillZeroWords(byteOffset, wordLength) {\n new Float64Array(this.buffer, byteOffset, wordLength).fill(0);\n }\n getBigInt64(byteOffset, littleEndian) {\n return this._dv.getBigInt64(byteOffset, littleEndian);\n }\n getBigUint64(byteOffset, littleEndian) {\n return this._dv.getBigUint64(byteOffset, littleEndian);\n }\n /**\n * Get the total number of bytes available in this segment (the size of its underlying buffer).\n *\n * @returns The total number of bytes this segment can hold.\n */\n getCapacity() {\n return this.buffer.byteLength;\n }\n /**\n * Read a float32 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getFloat32(byteOffset) {\n return this._dv.getFloat32(byteOffset, true);\n }\n /**\n * Read a float64 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getFloat64(byteOffset) {\n return this._dv.getFloat64(byteOffset, true);\n }\n /**\n * Read an int16 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getInt16(byteOffset) {\n return this._dv.getInt16(byteOffset, true);\n }\n /**\n * Read an int32 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getInt32(byteOffset) {\n return this._dv.getInt32(byteOffset, true);\n }\n /**\n * Read an int64 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getInt64(byteOffset) {\n return this._dv.getBigInt64(byteOffset, true);\n }\n /**\n * Read an int8 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getInt8(byteOffset) {\n return this._dv.getInt8(byteOffset);\n }\n /**\n * Read a uint16 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getUint16(byteOffset) {\n return this._dv.getUint16(byteOffset, true);\n }\n /**\n * Read a uint32 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getUint32(byteOffset) {\n return this._dv.getUint32(byteOffset, true);\n }\n /**\n * Read a uint64 value (as a bigint) out of this segment.\n * NOTE: this does not copy the memory region, so updates to the underlying buffer will affect the returned value!\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getUint64(byteOffset) {\n return this._dv.getBigUint64(byteOffset, true);\n }\n /**\n * Read a uint8 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getUint8(byteOffset) {\n return this._dv.getUint8(byteOffset);\n }\n hasCapacity(byteLength) {\n return this.buffer.byteLength - this.byteLength >= byteLength;\n }\n /**\n * Quickly check the word at the given offset to see if it is equal to zero.\n *\n * PERF_V8: Fastest way to do this is by reading the whole word as a `number` (float64) in the _native_ endian format\n * and see if it's zero.\n *\n * Benchmark: http://jsben.ch/#/Pjooc\n *\n * @param byteOffset The offset to the word.\n * @returns `true` if the word is zero.\n */\n isWordZero(byteOffset) {\n return this._dv.getFloat64(byteOffset, NATIVE_LITTLE_ENDIAN) === 0;\n }\n /**\n * Swap out this segment's underlying buffer with a new one. It's assumed that the new buffer has the same content but\n * more free space, otherwise all existing pointers to this segment will be hilariously broken.\n *\n * @param buffer The new buffer to use.\n */\n replaceBuffer(buffer) {\n if (this.buffer === buffer) {\n return;\n }\n if (buffer.byteLength < this.byteLength) {\n throw new Error(SEG_REPLACEMENT_BUFFER_TOO_SMALL);\n }\n this._dv = new DataView(buffer);\n this.buffer = buffer;\n }\n setBigInt64(byteOffset, value, littleEndian) {\n this._dv.setBigInt64(byteOffset, value, littleEndian);\n }\n /** WARNING: This function is not yet implemented. */\n setBigUint64(byteOffset, value, littleEndian) {\n this._dv.setBigUint64(byteOffset, value, littleEndian);\n }\n /**\n * Write a float32 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setFloat32(byteOffset, val) {\n this._dv.setFloat32(byteOffset, val, true);\n }\n /**\n * Write an float64 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setFloat64(byteOffset, val) {\n this._dv.setFloat64(byteOffset, val, true);\n }\n /**\n * Write an int16 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setInt16(byteOffset, val) {\n this._dv.setInt16(byteOffset, val, true);\n }\n /**\n * Write an int32 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setInt32(byteOffset, val) {\n this._dv.setInt32(byteOffset, val, true);\n }\n /**\n * Write an int8 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setInt8(byteOffset, val) {\n this._dv.setInt8(byteOffset, val);\n }\n /**\n * Write an int64 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setInt64(byteOffset, val) {\n this._dv.setBigInt64(byteOffset, val, true);\n }\n /**\n * Write a uint16 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setUint16(byteOffset, val) {\n this._dv.setUint16(byteOffset, val, true);\n }\n /**\n * Write a uint32 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setUint32(byteOffset, val) {\n this._dv.setUint32(byteOffset, val, true);\n }\n /**\n * Write a uint64 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setUint64(byteOffset, val) {\n this._dv.setBigUint64(byteOffset, val, true);\n }\n /**\n * Write a uint8 (byte) value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setUint8(byteOffset, val) {\n this._dv.setUint8(byteOffset, val);\n }\n /**\n * Write a zero word (8 bytes) to the specified offset. This is slightly faster than calling `setUint64` or\n * `setFloat64` with a zero value.\n *\n * Benchmark: http://jsben.ch/#/dUdPI\n *\n * @param byteOffset The offset of the word to set to zero.\n */\n setWordZero(byteOffset) {\n this._dv.setFloat64(byteOffset, 0, NATIVE_LITTLE_ENDIAN);\n }\n toString() {\n return format(\n \"Segment_id:%d,off:%a,len:%a,cap:%a\",\n this.id,\n this.byteLength,\n this.byteOffset,\n this.buffer.byteLength\n );\n }\n}\n\nclass Message {\n static allocateSegment = allocateSegment;\n static dump = dump;\n static getRoot = getRoot;\n static getSegment = getSegment;\n static initRoot = initRoot;\n static readRawPointer = readRawPointer;\n static toArrayBuffer = toArrayBuffer;\n static toPackedArrayBuffer = toPackedArrayBuffer;\n _capnp;\n /**\n * A Cap'n Proto message.\n *\n * SECURITY WARNING: In Node.js do not pass a Buffer's internal array buffer into this constructor. Pass the buffer\n * directly and everything will be fine. If not, your message will potentially be initialized with random memory\n * contents!\n *\n * The constructor method creates a new Message, optionally using a provided arena for segment allocation, or a buffer\n * to read from.\n *\n * @param src The source for the message.\n * A value of `undefined` will cause the message to initialize with a single segment arena only big enough for the\n * root pointer; it will expand as you go. This is a reasonable choice for most messages.\n *\n * Passing an arena will cause the message to use that arena for its segment allocation. Contents will be accepted\n * as-is.\n *\n * Passing an array buffer view (like `DataView`, `Uint8Array` or `Buffer`) will create a **copy** of the source\n * buffer; beware of the potential performance cost!\n *\n * @param packed Whether or not the message is packed. If `true` (the default), the message will be\n * unpacked.\n *\n * @param singleSegment If true, `src` will be treated as a message consisting of a single segment without\n * a framing header.\n *\n */\n constructor(src, packed = true, singleSegment = false) {\n this._capnp = initMessage(src, packed, singleSegment);\n if (src) {\n preallocateSegments(this);\n }\n }\n allocateSegment(byteLength) {\n return allocateSegment(byteLength, this);\n }\n /**\n * Copies the contents of this message into an identical message with its own ArrayBuffers.\n *\n * @returns A copy of this message.\n */\n copy() {\n return copy(this);\n }\n /**\n * Create a pretty-printed string dump of this message; incredibly useful for debugging.\n *\n * WARNING: Do not call this method on large messages!\n *\n * @returns A big steaming pile of pretty hex digits.\n */\n dump() {\n return dump(this);\n }\n /**\n * Get a struct pointer for the root of this message. This is primarily used when reading a message; it will not\n * overwrite existing data.\n *\n * @param RootStruct The struct type to use as the root.\n * @returns A struct representing the root of the message.\n */\n getRoot(RootStruct) {\n return getRoot(RootStruct, this);\n }\n /**\n * Get a segment by its id.\n *\n * This will lazily allocate the first segment if it doesn't already exist.\n *\n * @param id The segment id.\n * @returns The requested segment.\n */\n getSegment(id) {\n return getSegment(id, this);\n }\n /**\n * Initialize a new message using the provided struct type as the root.\n *\n * @param RootStruct The struct type to use as the root.\n * @returns An initialized struct pointing to the root of the message.\n */\n initRoot(RootStruct) {\n return initRoot(RootStruct, this);\n }\n /**\n * Set the root of the message to a copy of the given pointer. Used internally\n * to make copies of pointers for default values.\n *\n * @param src The source pointer to copy.\n */\n setRoot(src) {\n setRoot(src, this);\n }\n /**\n * Combine the contents of this message's segments into a single array buffer and prepend a stream framing header\n * containing information about the following segment data.\n *\n * @returns An ArrayBuffer with the contents of this message.\n */\n toArrayBuffer() {\n return toArrayBuffer(this);\n }\n /**\n * Like `toArrayBuffer()`, but also applies the packing algorithm to the output. This is typically what you want to\n * use if you're sending the message over a network link or other slow I/O interface where size matters.\n *\n * @returns A packed message.\n */\n toPackedArrayBuffer() {\n return toPackedArrayBuffer(this);\n }\n addCap(client) {\n if (!this._capnp.capTable) {\n this._capnp.capTable = [];\n }\n const id = this._capnp.capTable.length;\n this._capnp.capTable.push(client);\n return id;\n }\n toString() {\n return `Message_arena:${this._capnp.arena}`;\n }\n}\nfunction initMessage(src, packed = true, singleSegment = false) {\n if (src === undefined) {\n return {\n arena: new SingleSegmentArena(),\n segments: [],\n traversalLimit: DEFAULT_TRAVERSE_LIMIT\n };\n }\n if (isAnyArena(src)) {\n return { arena: src, segments: [], traversalLimit: DEFAULT_TRAVERSE_LIMIT };\n }\n let buf = src;\n if (isArrayBufferView(buf)) {\n buf = buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + buf.byteLength\n );\n }\n if (packed) {\n buf = unpack(buf);\n }\n if (singleSegment) {\n return {\n arena: new SingleSegmentArena(buf),\n segments: [],\n traversalLimit: DEFAULT_TRAVERSE_LIMIT\n };\n }\n return {\n arena: new MultiSegmentArena(getFramedSegments(buf)),\n segments: [],\n traversalLimit: DEFAULT_TRAVERSE_LIMIT\n };\n}\nfunction getFramedSegments(message) {\n const dv = new DataView(message);\n const segmentCount = dv.getUint32(0, true) + 1;\n const segments = Array.from({ length: segmentCount });\n let byteOffset = 4 + segmentCount * 4;\n byteOffset += byteOffset % 8;\n if (byteOffset + segmentCount * 4 > message.byteLength) {\n throw new Error(MSG_INVALID_FRAME_HEADER);\n }\n for (let i = 0; i < segmentCount; i++) {\n const byteLength = dv.getUint32(4 + i * 4, true) * 8;\n if (byteOffset + byteLength > message.byteLength) {\n throw new Error(MSG_INVALID_FRAME_HEADER);\n }\n segments[i] = message.slice(byteOffset, byteOffset + byteLength);\n byteOffset += byteLength;\n }\n return segments;\n}\nfunction preallocateSegments(m) {\n const numSegments = Arena.getNumSegments(m._capnp.arena);\n m._capnp.segments = Array.from({ length: numSegments });\n for (let i = 0; i < numSegments; i++) {\n if (i === 0 && Arena.getBuffer(i, m._capnp.arena).byteLength < 8) {\n throw new Error(MSG_SEGMENT_TOO_SMALL);\n }\n const buffer = Arena.getBuffer(i, m._capnp.arena);\n const segment = new Segment(i, m, buffer, buffer.byteLength);\n m._capnp.segments[i] = segment;\n }\n}\nfunction isArrayBufferView(src) {\n return src.byteOffset !== undefined;\n}\nfunction isAnyArena(o) {\n return o.kind !== undefined;\n}\nfunction allocateSegment(byteLength, m) {\n const res = Arena.allocate(byteLength, m._capnp.segments, m._capnp.arena);\n let s;\n if (res.id === m._capnp.segments.length) {\n s = new Segment(res.id, m, res.buffer);\n m._capnp.segments.push(s);\n } else if (res.id < 0 || res.id > m._capnp.segments.length) {\n throw new Error(format(MSG_SEGMENT_OUT_OF_BOUNDS, res.id, m));\n } else {\n s = m._capnp.segments[res.id];\n s.replaceBuffer(res.buffer);\n }\n return s;\n}\nfunction dump(m) {\n let r = \"\";\n if (m._capnp.segments.length === 0) {\n return \"================\\nNo Segments\\n================\\n\";\n }\n for (let i = 0; i < m._capnp.segments.length; i++) {\n r += `================\nSegment #${i}\n================\n`;\n const { buffer, byteLength } = m._capnp.segments[i];\n const b = new Uint8Array(buffer, 0, byteLength);\n r += dumpBuffer(b);\n }\n return r;\n}\nfunction getRoot(RootStruct, m) {\n const root = new RootStruct(m.getSegment(0), 0);\n validate(PointerType.STRUCT, root);\n const ts = getTargetStructSize(root);\n if (ts.dataByteLength < RootStruct._capnp.size.dataByteLength || ts.pointerLength < RootStruct._capnp.size.pointerLength) {\n resize(RootStruct._capnp.size, root);\n }\n return root;\n}\nfunction getSegment(id, m) {\n const segmentLength = m._capnp.segments.length;\n if (id === 0 && segmentLength === 0) {\n const arenaSegments = Arena.getNumSegments(m._capnp.arena);\n if (arenaSegments === 0) {\n allocateSegment(DEFAULT_BUFFER_SIZE, m);\n } else {\n m._capnp.segments[0] = new Segment(\n 0,\n m,\n Arena.getBuffer(0, m._capnp.arena)\n );\n }\n if (!m._capnp.segments[0].hasCapacity(8)) {\n throw new Error(MSG_SEGMENT_TOO_SMALL);\n }\n m._capnp.segments[0].allocate(8);\n return m._capnp.segments[0];\n }\n if (id < 0 || id >= segmentLength) {\n throw new Error(format(MSG_SEGMENT_OUT_OF_BOUNDS, id, m));\n }\n return m._capnp.segments[id];\n}\nfunction initRoot(RootStruct, m) {\n const root = new RootStruct(m.getSegment(0), 0);\n initStruct(RootStruct._capnp.size, root);\n return root;\n}\nfunction readRawPointer(data) {\n return new Pointer(new Message(data).getSegment(0), 0);\n}\nfunction setRoot(src, m) {\n copyFrom(src, new Pointer(m.getSegment(0), 0));\n}\nfunction toArrayBuffer(m) {\n const streamFrame = getStreamFrame(m);\n if (m._capnp.segments.length === 0) {\n getSegment(0, m);\n }\n const { segments } = m._capnp;\n const totalLength = streamFrame.byteLength + segments.reduce((l, s) => l + padToWord(s.byteLength), 0);\n const out = new Uint8Array(new ArrayBuffer(totalLength));\n let o = streamFrame.byteLength;\n out.set(new Uint8Array(streamFrame));\n for (const s of segments) {\n const segmentLength = padToWord(s.byteLength);\n out.set(new Uint8Array(s.buffer, 0, segmentLength), o);\n o += segmentLength;\n }\n return out.buffer;\n}\nfunction toPackedArrayBuffer(m) {\n const streamFrame = pack(getStreamFrame(m));\n if (m._capnp.segments.length === 0) {\n m.getSegment(0);\n }\n const segments = m._capnp.segments.map(\n (s) => pack(s.buffer, 0, padToWord(s.byteLength))\n );\n const totalLength = streamFrame.byteLength + segments.reduce((l, s) => l + s.byteLength, 0);\n const out = new Uint8Array(new ArrayBuffer(totalLength));\n let o = streamFrame.byteLength;\n out.set(new Uint8Array(streamFrame));\n for (const s of segments) {\n out.set(new Uint8Array(s), o);\n o += s.byteLength;\n }\n return out.buffer;\n}\nfunction getStreamFrame(m) {\n const { length } = m._capnp.segments;\n if (length === 0) {\n return new Float64Array(1).buffer;\n }\n const frameLength = 4 + length * 4 + (1 - length % 2) * 4;\n const out = new DataView(new ArrayBuffer(frameLength));\n out.setUint32(0, length - 1, true);\n for (const [i, s] of m._capnp.segments.entries()) {\n out.setUint32(i * 4 + 4, s.byteLength / 8, true);\n }\n return out.buffer;\n}\nfunction copy(m) {\n return new Message(Arena.copy(m._capnp.arena));\n}\n\nexport { Message as M, readRawPointer as r };\n","import { $ as Pointer, ac as MAX_DEPTH, N as format, ad as getTargetPointerType, a8 as PointerType, ab as initStruct, S as Struct, g as getPointer, ae as FixedAnswer, af as getInterfaceClientOrNull, ag as ErrorAnswer, ah as RPC_CALL_QUEUE_FULL, ai as INVARIANT_UNREACHABLE_CODE, aj as RPC_QUEUE_CALL_CANCEL, ak as RPC_NULL_CLIENT, c as copyFrom, w as getAs, al as RPC_METHOD_ERROR, am as RPC_METHOD_NOT_IMPLEMENTED } from './capnp-es.0-_cOx6D.mjs';\nimport { M as Message } from './capnp-es.GpvEvMIK.mjs';\n\nclass Interface extends Pointer {\n static _capnp = {\n displayName: \"Interface\"\n };\n static getCapID = getCapID;\n static getAsInterface = getAsInterface;\n static isInterface = isInterface;\n static getClient = getClient;\n constructor(segment, byteOffset, depthLimit = MAX_DEPTH) {\n super(segment, byteOffset, depthLimit);\n }\n static fromPointer(p) {\n return getAsInterface(p);\n }\n getCapId() {\n return getCapID(this);\n }\n getClient() {\n return getClient(this);\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return format(\n \"Interface_%d@%a,%d,limit:%x\",\n this.segment.id,\n this.byteOffset,\n this.getCapId(),\n this._capnp.depthLimit\n );\n }\n}\nfunction getAsInterface(p) {\n if (getTargetPointerType(p) === PointerType.OTHER) {\n return new Interface(p.segment, p.byteOffset, p._capnp.depthLimit);\n }\n return null;\n}\nfunction isInterface(p) {\n return getTargetPointerType(p) === PointerType.OTHER;\n}\nfunction getCapID(i) {\n if (i.segment.getUint32(i.byteOffset) !== PointerType.OTHER) {\n return -1;\n }\n return i.segment.getUint32(i.byteOffset + 4);\n}\nfunction getClient(i) {\n const capID = getCapID(i);\n const { capTable } = i.segment.message._capnp;\n if (!capTable) {\n return null;\n }\n return capTable[capID];\n}\n\nfunction isFuncCall(call) {\n return !isDataCall(call);\n}\nfunction isDataCall(call) {\n return !!call.params;\n}\nfunction copyCall(call) {\n if (isDataCall(call)) {\n return call;\n }\n return {\n method: call.method,\n params: placeParams(call, undefined)\n };\n}\nfunction placeParams(call, contentPtr) {\n if (isDataCall(call)) {\n return call.params;\n }\n let p;\n if (contentPtr) {\n p = new call.method.ParamsClass(\n contentPtr.segment,\n contentPtr.byteOffset,\n contentPtr._capnp.depthLimit\n );\n } else {\n const msg = new Message();\n p = new call.method.ParamsClass(msg.getSegment(0), 0);\n }\n initStruct(call.method.ParamsClass._capnp.size, p);\n if (call.paramsFunc) {\n call.paramsFunc(p);\n }\n return p;\n}\n\nfunction pointerToStruct(p) {\n if (getTargetPointerType(p) === PointerType.STRUCT) {\n return new Struct(\n p.segment,\n p.byteOffset,\n p._capnp.depthLimit,\n p._capnp.compositeIndex\n );\n }\n return null;\n}\n\nfunction transformPtr(p, transform) {\n if (transform.length === 0) {\n return p;\n }\n let s = pointerToStruct(p);\n if (!s) {\n return p;\n }\n for (const op of transform) {\n s = getPointer(op.field, s);\n }\n return s;\n}\n\nclass Deferred {\n static fromPromise(p) {\n const d = new Deferred();\n p.then(d.resolve, d.reject);\n return d;\n }\n promise;\n reject;\n resolve;\n constructor() {\n this.promise = new Promise((a, b) => {\n this.resolve = a;\n this.reject = b;\n });\n }\n}\n\nclass ImmediateAnswer extends FixedAnswer {\n constructor(s) {\n super();\n this.s = s;\n }\n structSync() {\n return this.s;\n }\n findClient(transform) {\n const p = transformPtr(this.s, transform);\n return getInterfaceClientOrNull(p);\n }\n pipelineCall(transform, call) {\n return this.findClient(transform).call(call);\n }\n pipelineClose(transform) {\n this.findClient(transform).close();\n }\n}\n\nclass Queue {\n // creates a new queue that starts with n elements.\n // The interface's length must not change over the course of\n // the queue's usage.\n constructor(q, n) {\n this.q = q;\n this.n = n;\n this.cap = q.len();\n }\n start = 0;\n cap;\n // len returns the length of the queue. This is different from the underlying\n // interface's length, which is the queue's capacity.\n len() {\n return this.n;\n }\n // push reserves space for an element on the queue, returning its index.\n // if the queue is full, push returns -1.\n push() {\n if (this.n >= this.cap) {\n return -1;\n }\n const i = (this.start + this.n) % this.cap;\n this.n++;\n return i;\n }\n // front returns the index of the front of the queue, or -1 if the queue is empty.\n front() {\n if (this.n === 0) {\n return -1;\n }\n return this.start;\n }\n // pop pops an element from the queue, returning whether it succeeded.\n pop() {\n if (this.n === 0) {\n return false;\n }\n this.q.clear(this.start);\n this.start = (this.start + 1) % this.cap;\n this.n--;\n return true;\n }\n}\n\nclass EmbargoClient {\n _client;\n q;\n calls;\n constructor(client, queue) {\n this._client = client;\n this.calls = queue.copy();\n this.q = new Queue(this.calls, this.calls.len());\n this.flushQueue();\n }\n flushQueue() {\n let c = null;\n {\n const i = this.q.front();\n if (i !== -1) {\n c = this.calls.data[i];\n }\n }\n while (c && c.call) {\n const ans = this._client.call(c.call);\n void (async (f, ans2) => {\n try {\n f.fulfill(await ans2.struct());\n } catch (error_) {\n f.reject(error_);\n }\n })(c.f, ans);\n this.q.pop();\n {\n const i = this.q.front();\n c = i === -1 ? null : this.calls.data[i];\n }\n }\n }\n // client returns the underlying client if the embargo has\n // been lifted and null otherwise\n client() {\n return this.isPassthrough() ? this._client : null;\n }\n isPassthrough() {\n return this.q.len() === 0;\n }\n // call either queues a call to the underlying client or starts a\n // call if the embargo has been lifted\n call(call) {\n if (this.isPassthrough()) {\n return this._client.call(call);\n }\n return this.push(call);\n }\n push(_call) {\n const f = new Fulfiller();\n const call = copyCall(_call);\n const i = this.q.push();\n if (i === -1) {\n return new ErrorAnswer(new Error(RPC_CALL_QUEUE_FULL));\n }\n this.calls.data[i] = {\n call,\n f\n };\n return f;\n }\n close() {\n while (this.q.len() > 0) {\n const first = this.calls.data[this.q.front()];\n if (!first) {\n throw new Error(INVARIANT_UNREACHABLE_CODE);\n }\n first.f.reject(new Error(RPC_QUEUE_CALL_CANCEL));\n this.q.pop();\n }\n this._client.close();\n }\n}\n\nclass Ecalls {\n data;\n constructor(data) {\n this.data = data;\n }\n static copyOf(data) {\n return new Ecalls([...data]);\n }\n len() {\n return this.data.length;\n }\n clear(i) {\n this.data[i] = null;\n }\n copy() {\n return Ecalls.copyOf(this.data);\n }\n}\n\nconst callQueueSize = 64;\nclass Fulfiller {\n resolved = false;\n answer;\n queue = [];\n queueCap = callQueueSize;\n deferred = new Deferred();\n fulfill(s) {\n this.answer = new ImmediateAnswer(s);\n const queues = this.emptyQueue(s);\n const msgcap = s.segment.message._capnp;\n if (!msgcap.capTable) {\n msgcap.capTable = [];\n }\n const ctab = msgcap.capTable;\n for (const _capIdx of Object.keys(queues)) {\n const capIdx = +_capIdx;\n const q = queues[capIdx];\n const client = ctab[capIdx];\n if (!client) {\n throw new Error(INVARIANT_UNREACHABLE_CODE);\n }\n ctab[capIdx] = new EmbargoClient(client, q);\n }\n this.deferred.resolve(s);\n }\n reject(err) {\n this.deferred.reject(err);\n }\n peek() {\n return this.answer;\n }\n async struct() {\n return await this.deferred.promise;\n }\n // pipelineCall calls pipelineCall on the fulfilled answer or\n // queues the call if f has not been fulfilled\n pipelineCall(transform, call) {\n {\n const a = this.peek();\n if (a) {\n return a.pipelineCall(transform, call);\n }\n }\n if (this.queue.length === this.queueCap) {\n return new ErrorAnswer(new Error(RPC_CALL_QUEUE_FULL));\n }\n const cc = copyCall(call);\n const g = new Fulfiller();\n this.queue.push({\n call: cc,\n f: g,\n transform\n });\n return g;\n }\n // pipelineClose waits until f is resolved and then calls\n // pipelineClose on the fulfilled answer\n // FIXME: should this be async?\n pipelineClose(transform) {\n const onFinally = () => {\n if (this.answer) {\n this.answer.pipelineClose(transform);\n }\n };\n this.deferred.promise.then(onFinally, onFinally);\n }\n // emptyQueue splits the queue by which capability it targets and\n // drops any invalid calls. Once this function returns, f.queue will\n // be nil.\n emptyQueue(s) {\n const qs = {};\n for (let i = 0; i < this.queue.length; i++) {\n const pc = this.queue[i];\n let c;\n try {\n c = transformPtr(s, pc.transform);\n } catch (error_) {\n pc.f.reject(error_);\n continue;\n }\n const iface = Interface.fromPointer(c);\n if (!iface) {\n pc.f.reject(new Error(RPC_NULL_CLIENT));\n continue;\n }\n const cn = iface.getCapId();\n if (!qs[cn]) {\n qs[cn] = new Ecalls([]);\n }\n qs[cn].data.push(pc);\n }\n this.queue = [];\n return qs;\n }\n}\n\nclass PipelineClient {\n constructor(pipeline) {\n this.pipeline = pipeline;\n }\n transform() {\n return this.pipeline.transform();\n }\n call(call) {\n return this.pipeline.answer.pipelineCall(this.transform(), call);\n }\n close() {\n this.pipeline.answer.pipelineClose(this.transform());\n }\n}\n\nclass Pipeline {\n // Returns a new Pipeline based on an answer\n constructor(ResultsClass, answer, op, parent) {\n this.ResultsClass = ResultsClass;\n this.answer = answer;\n this.parent = parent;\n this.op = op || { field: 0 };\n }\n op;\n pipelineClient;\n // transform returns the operations needed to transform the root answer\n // into the value p represents.\n transform() {\n const xform = [];\n for (let q = this; q.parent; q = q.parent) {\n xform.unshift(q.op);\n }\n return xform;\n }\n // Struct waits until the answer is resolved and returns the struct\n // this pipeline represents.\n async struct() {\n const s = await this.answer.struct();\n const t = transformPtr(s, this.transform());\n if (!t) {\n if (this.op.defaultValue) {\n copyFrom(this.op.defaultValue, t);\n } else {\n initStruct(this.ResultsClass._capnp.size, t);\n }\n }\n return getAs(this.ResultsClass, t);\n }\n // client returns the client version of this pipeline\n client() {\n if (!this.pipelineClient) {\n this.pipelineClient = new PipelineClient(this);\n }\n return this.pipelineClient;\n }\n // getPipeline returns a derived pipeline which yields the pointer field given\n getPipeline(ResultsClass, off, defaultValue) {\n return new Pipeline(\n ResultsClass,\n this.answer,\n { field: off, defaultValue },\n this\n );\n }\n}\n\nclass MethodError extends Error {\n constructor(method, message) {\n super(\n format(\n RPC_METHOD_ERROR,\n method.interfaceName,\n method.methodName,\n message\n )\n );\n this.method = method;\n }\n}\n\nclass Registry {\n static interfaces = /* @__PURE__ */ new Map();\n static register(id, def) {\n this.interfaces.set(id, def);\n }\n static lookup(id) {\n return this.interfaces.get(id);\n }\n}\n\nclass Server {\n constructor(target, methods) {\n this.target = target;\n this.methods = methods;\n }\n startCall(call) {\n const msg = new Message();\n const results = msg.initRoot(call.method.ResultsClass);\n call.serverMethod.impl.call(this.target, call.params, results).then(() => call.answer.fulfill(results)).catch((error_) => call.answer.reject(error_));\n }\n call(call) {\n const serverMethod = this.methods[call.method.methodId];\n if (!serverMethod) {\n return new ErrorAnswer(\n new MethodError(call.method, RPC_METHOD_NOT_IMPLEMENTED)\n );\n }\n const serverCall = {\n ...copyCall(call),\n answer: new Fulfiller(),\n serverMethod\n };\n this.startCall(serverCall);\n return serverCall.answer;\n }\n close() {\n }\n}\n\nexport { Deferred as D, Fulfiller as F, Interface as I, MethodError as M, Pipeline as P, Queue as Q, Registry as R, Server as S, PipelineClient as a, isDataCall as b, copyCall as c, isFuncCall as i, placeParams as p, transformPtr as t };\n","import { S as Struct, O as ObjectSize, ao as PointerAllocationResult, ap as add, a as adopt, aq as checkDataBounds, ar as checkPointerBounds, c as copyFrom, as as copyFromInterface, at as copyFromList, au as copyFromStruct, d as disown, av as dump, aw as erase, ax as erasePointer, ay as followFar, az as followFars, w as getAs, h as getBit, aA as getCapabilityId, aB as getContent, J as getData, aC as getDataSection, aD as getFarSegmentId, F as getFloat32, H as getFloat64, z as getInt16, B as getInt32, D as getInt64, x as getInt8, af as getInterfaceClientOrNull, aE as getInterfaceClientOrNullAt, aF as getInterfacePointer, m as getList, aG as getListByteLength, aH as getListElementByteLength, aI as getListElementSize, aJ as getListLength, aK as getOffsetWords, g as getPointer, aL as getPointerAs, aM as getPointerSection, aN as getPointerType, aO as getSize, k as getStruct, aP as getStructDataWords, aQ as getStructPointerLength, aR as getStructSize, aS as getTargetCompositeListSize, aT as getTargetCompositeListTag, aU as getTargetListElementSize, aV as getTargetListLength, ad as getTargetPointerType, a9 as getTargetStructSize, q as getText, b as getUint16, e as getUint32, u as getUint64, o as getUint8, K as initData, n as initList, aW as initPointer, ab as initStruct, l as initStructAt, aX as isDoubleFar, i as isNull, aY as relocateTo, aa as resize, j as setBit, aZ as setFarPointer, G as setFloat32, I as setFloat64, A as setInt16, C as setInt32, E as setInt64, y as setInt8, a_ as setInterfacePointer, a$ as setListPointer, b0 as setStructPointer, r as setText, s as setUint16, f as setUint32, v as setUint64, p as setUint8, t as testWhich, b1 as trackPointerAllocation, a7 as validate, L as List, M as ListElementSize, $ as Pointer, b2 as Data, b3 as Text, b4 as ErrorClient, b5 as RPC_ZERO_REF, N as format, b6 as RPC_ERROR, ai as INVARIANT_UNREACHABLE_CODE, b7 as RPC_FULFILL_ALREADY_CALLED, b8 as NOT_IMPLEMENTED, ag as ErrorAnswer, ah as RPC_CALL_QUEUE_FULL, ak as RPC_NULL_CLIENT, b9 as RPC_IMPORT_CLOSED, ba as AnyStruct, bb as RPC_QUESTION_ID_REUSED, bc as RPC_NO_MAIN_INTERFACE, bd as RPC_BAD_TARGET, be as RPC_UNKNOWN_CAP_DESCRIPTOR, ae as FixedAnswer, bf as RPC_FINISH_UNKNOWN_ANSWER, bg as RPC_RETURN_FOR_UNKNOWN_QUESTION, bh as RPC_UNKNOWN_ANSWER_ID, bi as RPC_UNKNOWN_EXPORT_ID } from './shared/capnp-es.0-_cOx6D.mjs';\nexport { bj as Orphan, a8 as PointerType, bk as clientOrNull } from './shared/capnp-es.0-_cOx6D.mjs';\nimport { M as Message } from './shared/capnp-es.GpvEvMIK.mjs';\nexport { r as readRawPointer } from './shared/capnp-es.GpvEvMIK.mjs';\nexport { C as CompositeList, g as getBitMask, c as getFloat32Mask, d as getFloat64Mask, e as getInt16Mask, f as getInt32Mask, h as getInt64Mask, i as getInt8Mask, b as getUint16Mask, j as getUint32Mask, k as getUint64Mask, a as getUint8Mask } from './shared/capnp-es.BvfUH5E6.mjs';\nimport { I as Interface, t as transformPtr, D as Deferred, Q as Queue, c as copyCall, F as Fulfiller, P as Pipeline, M as MethodError, R as Registry, p as placeParams, a as PipelineClient } from './shared/capnp-es.UAt3nLGq.mjs';\nexport { S as Server, b as isDataCall, i as isFuncCall } from './shared/capnp-es.UAt3nLGq.mjs';\nimport { Exception, Message as Message$1, Disembargo_Context_Which, PromisedAnswer_Op, Return, MessageTarget, CapDescriptor } from './capnp/rpc.mjs';\n\nclass Void extends Struct {\n static _capnp = {\n displayName: \"Void\",\n id: \"0\",\n size: new ObjectSize(0, 0)\n };\n}\n\nconst utils = {\n __proto__: null,\n PointerAllocationResult: PointerAllocationResult,\n add: add,\n adopt: adopt,\n checkDataBounds: checkDataBounds,\n checkPointerBounds: checkPointerBounds,\n copyFrom: copyFrom,\n copyFromInterface: copyFromInterface,\n copyFromList: copyFromList,\n copyFromStruct: copyFromStruct,\n disown: disown,\n dump: dump,\n erase: erase,\n erasePointer: erasePointer,\n followFar: followFar,\n followFars: followFars,\n getAs: getAs,\n getBit: getBit,\n getCapabilityId: getCapabilityId,\n getContent: getContent,\n getData: getData,\n getDataSection: getDataSection,\n getFarSegmentId: getFarSegmentId,\n getFloat32: getFloat32,\n getFloat64: getFloat64,\n getInt16: getInt16,\n getInt32: getInt32,\n getInt64: getInt64,\n getInt8: getInt8,\n getInterfaceClientOrNull: getInterfaceClientOrNull,\n getInterfaceClientOrNullAt: getInterfaceClientOrNullAt,\n getInterfacePointer: getInterfacePointer,\n getList: getList,\n getListByteLength: getListByteLength,\n getListElementByteLength: getListElementByteLength,\n getListElementSize: getListElementSize,\n getListLength: getListLength,\n getOffsetWords: getOffsetWords,\n getPointer: getPointer,\n getPointerAs: getPointerAs,\n getPointerSection: getPointerSection,\n getPointerType: getPointerType,\n getSize: getSize,\n getStruct: getStruct,\n getStructDataWords: getStructDataWords,\n getStructPointerLength: getStructPointerLength,\n getStructSize: getStructSize,\n getTargetCompositeListSize: getTargetCompositeListSize,\n getTargetCompositeListTag: getTargetCompositeListTag,\n getTargetListElementSize: getTargetListElementSize,\n getTargetListLength: getTargetListLength,\n getTargetPointerType: getTargetPointerType,\n getTargetStructSize: getTargetStructSize,\n getText: getText,\n getUint16: getUint16,\n getUint32: getUint32,\n getUint64: getUint64,\n getUint8: getUint8,\n initData: initData,\n initList: initList,\n initPointer: initPointer,\n initStruct: initStruct,\n initStructAt: initStructAt,\n isDoubleFar: isDoubleFar,\n isNull: isNull,\n relocateTo: relocateTo,\n resize: resize,\n setBit: setBit,\n setFarPointer: setFarPointer,\n setFloat32: setFloat32,\n setFloat64: setFloat64,\n setInt16: setInt16,\n setInt32: setInt32,\n setInt64: setInt64,\n setInt8: setInt8,\n setInterfacePointer: setInterfacePointer,\n setListPointer: setListPointer,\n setStructPointer: setStructPointer,\n setText: setText,\n setUint16: setUint16,\n setUint32: setUint32,\n setUint64: setUint64,\n setUint8: setUint8,\n testWhich: testWhich,\n trackPointerAllocation: trackPointerAllocation,\n validate: validate\n};\n\nfunction PointerList(PointerClass) {\n return class extends List {\n static _capnp = {\n displayName: `List<${PointerClass._capnp.displayName}>`,\n size: ListElementSize.POINTER\n };\n get(index) {\n const c = getContent(this);\n return new PointerClass(\n c.segment,\n c.byteOffset + index * 8,\n this._capnp.depthLimit - 1\n );\n }\n set(index, value) {\n copyFrom(value, this.get(index));\n }\n [Symbol.toStringTag]() {\n return `Pointer_${super.toString()},cls:${PointerClass.toString()}`;\n }\n };\n}\n\nconst AnyPointerList = PointerList(Pointer);\n\nclass BoolList extends List {\n static _capnp = {\n displayName: \"List<boolean>\",\n size: ListElementSize.BIT\n };\n get(index) {\n const bitMask = 1 << index % 8;\n const byteOffset = index >>> 3;\n const c = getContent(this);\n const v = c.segment.getUint8(c.byteOffset + byteOffset);\n return (v & bitMask) !== 0;\n }\n set(index, value) {\n const bitMask = 1 << index % 8;\n const c = getContent(this);\n const byteOffset = c.byteOffset + (index >>> 3);\n const v = c.segment.getUint8(byteOffset);\n c.segment.setUint8(byteOffset, value ? v | bitMask : v & ~bitMask);\n }\n [Symbol.toStringTag]() {\n return `Bool_${super.toString()}`;\n }\n}\n\nconst DataList = PointerList(Data);\n\nclass Float32List extends List {\n static _capnp = {\n displayName: \"List<Float32>\",\n size: ListElementSize.BYTE_4\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getFloat32(c.byteOffset + index * 4);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setFloat32(c.byteOffset + index * 4, value);\n }\n [Symbol.toStringTag]() {\n return `Float32_${super.toString()}`;\n }\n}\n\nclass Float64List extends List {\n static _capnp = {\n displayName: \"List<Float64>\",\n size: ListElementSize.BYTE_8\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getFloat64(c.byteOffset + index * 8);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setFloat64(c.byteOffset + index * 8, value);\n }\n [Symbol.toStringTag]() {\n return `Float64_${super.toString()}`;\n }\n}\n\nclass Int8List extends List {\n static _capnp = {\n displayName: \"List<Int8>\",\n size: ListElementSize.BYTE\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getInt8(c.byteOffset + index);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setInt8(c.byteOffset + index, value);\n }\n [Symbol.toStringTag]() {\n return `Int8_${super.toString()}`;\n }\n}\n\nclass Int16List extends List {\n static _capnp = {\n displayName: \"List<Int16>\",\n size: ListElementSize.BYTE_2\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getInt16(c.byteOffset + index * 2);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setInt16(c.byteOffset + index * 2, value);\n }\n [Symbol.toStringTag]() {\n return `Int16_${super.toString()}`;\n }\n}\n\nclass Int32List extends List {\n static _capnp = {\n displayName: \"List<Int32>\",\n size: ListElementSize.BYTE_4\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getInt32(c.byteOffset + index * 4);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setInt32(c.byteOffset + index * 4, value);\n }\n [Symbol.toStringTag]() {\n return `Int32_${super.toString()}`;\n }\n}\n\nclass Int64List extends List {\n static _capnp = {\n displayName: \"List<Int64>\",\n size: ListElementSize.BYTE_8\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getInt64(c.byteOffset + index * 8);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setInt64(c.byteOffset + index * 8, value);\n }\n [Symbol.toStringTag]() {\n return `Int64_${super.toString()}`;\n }\n}\n\nconst InterfaceList = PointerList(Interface);\n\nclass TextList extends List {\n static _capnp = {\n displayName: \"List<Text>\",\n size: ListElementSize.POINTER\n };\n get(index) {\n const c = getContent(this);\n c.byteOffset += index * 8;\n return Text.fromPointer(c).get(0);\n }\n set(index, value) {\n const c = getContent(this);\n c.byteOffset += index * 8;\n Text.fromPointer(c).set(0, value);\n }\n [Symbol.toStringTag]() {\n return `Text_${super.toString()}`;\n }\n}\n\nclass Uint8List extends List {\n static _capnp = {\n displayName: \"List<Uint8>\",\n size: ListElementSize.BYTE\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getUint8(c.byteOffset + index);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setUint8(c.byteOffset + index, value);\n }\n [Symbol.toStringTag]() {\n return `Uint8_${super.toString()}`;\n }\n}\n\nclass Uint16List extends List {\n static _capnp = {\n displayName: \"List<Uint16>\",\n size: ListElementSize.BYTE_2\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getUint16(c.byteOffset + index * 2);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setUint16(c.byteOffset + index * 2, value);\n }\n [Symbol.toStringTag]() {\n return `Uint16_${super.toString()}`;\n }\n}\n\nclass Uint32List extends List {\n static _capnp = {\n displayName: \"List<Uint32>\",\n size: ListElementSize.BYTE_4\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getUint32(c.byteOffset + index * 4);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setUint32(c.byteOffset + index * 4, value);\n }\n [Symbol.toStringTag]() {\n return `Uint32_${super.toString()}`;\n }\n}\n\nclass Uint64List extends List {\n static _capnp = {\n displayName: \"List<Uint64>\",\n size: ListElementSize.BYTE_8\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getUint64(c.byteOffset + index * 8);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setUint64(c.byteOffset + index * 8, value);\n }\n [Symbol.toStringTag]() {\n return `Uint64_${super.toString()}`;\n }\n}\n\nconst VoidList = PointerList(Void);\n\nfunction isSameClient(c, d) {\n const norm = (c2) => {\n return c2;\n };\n return norm(c) === norm(d);\n}\nfunction clientFromResolution(transform, obj, err) {\n if (err) {\n return new ErrorClient(err);\n }\n if (!obj) {\n return new ErrorClient(new Error(`null obj!`));\n }\n const out = transformPtr(obj, transform);\n return getInterfaceClientOrNull(out);\n}\n\nclass IDGen {\n i = 0;\n free = [];\n next() {\n return this.free.pop() ?? this.i++;\n }\n remove(i) {\n this.free.push(i);\n }\n}\n\nclass Ref {\n constructor(rc, finalize) {\n this.rc = rc;\n const closeState = { closed: false };\n this.closeState = closeState;\n finalize(this, () => {\n if (!closeState.closed) {\n closeState.closed = true;\n rc.decref();\n }\n });\n }\n closeState;\n call(cl) {\n return this.rc.call(cl);\n }\n client() {\n return this.rc._client;\n }\n close() {\n if (!this.closeState.closed) {\n this.closeState.closed = true;\n this.rc.decref();\n }\n }\n}\n\nclass RefCount {\n refs;\n finalize;\n _client;\n constructor(c, _finalize) {\n this._client = c;\n this.finalize = _finalize;\n this.refs = 1;\n }\n // New creates a reference counter and the first client reference.\n static new(c, finalize) {\n const rc = new RefCount(c, finalize);\n const ref = rc.newRef();\n return [rc, ref];\n }\n call(cl) {\n return this._client.call(cl);\n }\n client() {\n return this._client;\n }\n close() {\n this._client.close();\n }\n ref() {\n if (this.refs <= 0) {\n return new ErrorClient(new Error(RPC_ZERO_REF));\n }\n this.refs++;\n return this.newRef();\n }\n newRef() {\n return new Ref(this, this.finalize);\n }\n decref() {\n this.refs--;\n if (this.refs === 0) {\n this._client.close();\n }\n }\n}\n\nclass RPCError extends Error {\n constructor(exception) {\n super(format(RPC_ERROR, exception.reason));\n this.exception = exception;\n }\n}\nfunction toException(exc, err) {\n if (err instanceof RPCError) {\n exc.reason = err.exception.reason;\n exc.type = err.exception.type;\n return;\n }\n exc.reason = err.message;\n exc.type = Exception.Type.FAILED;\n}\n\nfunction newMessage() {\n return new Message().initRoot(Message$1);\n}\nfunction newFinishMessage(questionID, release) {\n const m = newMessage();\n const f = m._initFinish();\n f.questionId = questionID;\n f.releaseResultCaps = release;\n return m;\n}\nfunction newUnimplementedMessage(m) {\n const n = newMessage();\n n.unimplemented = m;\n return n;\n}\nfunction newReturnMessage(id) {\n const m = newMessage();\n const ret = m._initReturn();\n ret.answerId = id;\n return m;\n}\nfunction setReturnException(ret, err) {\n const exc = ret._initException();\n toException(exc, err);\n return exc;\n}\nfunction newDisembargoMessage(which, id) {\n const m = newMessage();\n const dis = m._initDisembargo();\n const ctx = dis._initContext();\n switch (which) {\n case Disembargo_Context_Which.SENDER_LOOPBACK: {\n ctx.senderLoopback = id;\n break;\n }\n case Disembargo_Context_Which.RECEIVER_LOOPBACK: {\n ctx.receiverLoopback = id;\n break;\n }\n default: {\n throw new Error(INVARIANT_UNREACHABLE_CODE);\n }\n }\n return m;\n}\n\nfunction transformToPromisedAnswer(answer, transform) {\n const opList = answer._initTransform(transform.length);\n for (const [i, op] of transform.entries()) {\n opList.get(i).getPointerField = op.field;\n }\n}\nfunction promisedAnswerOpsToTransform(list) {\n const transform = [];\n for (const op of list) {\n switch (op.which()) {\n case PromisedAnswer_Op.GET_POINTER_FIELD: {\n transform.push({\n field: op.getPointerField\n });\n break;\n }\n case PromisedAnswer_Op.NOOP: {\n break;\n }\n }\n }\n return transform;\n}\n\nvar QuestionState = /* @__PURE__ */ ((QuestionState2) => {\n QuestionState2[QuestionState2[\"IN_PROGRESS\"] = 0] = \"IN_PROGRESS\";\n QuestionState2[QuestionState2[\"RESOLVED\"] = 1] = \"RESOLVED\";\n QuestionState2[QuestionState2[\"CANCELED\"] = 2] = \"CANCELED\";\n return QuestionState2;\n})(QuestionState || {});\nclass Question {\n constructor(conn, id, method) {\n this.conn = conn;\n this.id = id;\n this.method = method;\n }\n paramCaps = [];\n state = 0 /* IN_PROGRESS */;\n obj;\n err;\n derived = [];\n deferred = new Deferred();\n async struct() {\n return await this.deferred.promise;\n }\n // start signals the question has been sent\n start() {\n }\n // fulfill is called to resolve a question successfully.\n // The caller must be holding onto q.conn.mu.\n fulfill(obj) {\n if (this.state !== 0 /* IN_PROGRESS */) {\n throw new Error(RPC_FULFILL_ALREADY_CALLED);\n }\n if (this.method) {\n this.obj = getAs(this.method.ResultsClass, obj);\n } else {\n this.obj = obj;\n }\n this.state = 1 /* RESOLVED */;\n this.deferred.resolve(this.obj);\n }\n // reject is called to resolve a question with failure\n reject(err) {\n if (!err) {\n throw new Error(`Question.reject called with null`);\n }\n if (this.state !== 0 /* IN_PROGRESS */) {\n throw new Error(`Question.reject called more than once`);\n }\n this.err = err;\n this.state = 1 /* RESOLVED */;\n this.deferred.reject(err);\n }\n // cancel is called to resolve a question with cancellation.\n cancel(err) {\n if (this.state === 0 /* IN_PROGRESS */) {\n this.err = err;\n this.state = 2 /* CANCELED */;\n this.deferred.reject(err);\n return true;\n }\n return false;\n }\n pipelineCall(transform, call) {\n if (this.conn.findQuestion(this.id) !== this) {\n if (this.state === 0 /* IN_PROGRESS */) {\n throw new Error(`question popped but not done`);\n }\n const client = clientFromResolution(transform, this.obj, this.err);\n return client.call(call);\n }\n const pipeq = this.conn.newQuestion(call.method);\n const msg = newMessage();\n const msgCall = msg._initCall();\n msgCall.questionId = pipeq.id;\n msgCall.interfaceId = call.method.interfaceId;\n msgCall.methodId = call.method.methodId;\n const target = msgCall._initTarget();\n const a = target._initPromisedAnswer();\n a.questionId = this.id;\n transformToPromisedAnswer(a, transform);\n const payload = msgCall._initParams();\n this.conn.fillParams(payload, call);\n this.conn.sendMessage(msg);\n this.addPromise(transform);\n return pipeq;\n }\n addPromise(transform) {\n for (const d of this.derived) {\n if (transformsEqual(transform, d)) {\n return;\n }\n }\n this.derived.push(transform);\n }\n pipelineClose() {\n throw new Error(NOT_IMPLEMENTED);\n }\n}\nfunction transformsEqual(t, u) {\n if (t.length !== u.length) {\n return false;\n }\n for (const [i, element_] of t.entries()) {\n if (element_.field !== u[i].field) {\n return false;\n }\n }\n return true;\n}\n\nclass Qcalls {\n constructor(data) {\n this.data = data;\n }\n static copyOf(data) {\n return new Qcalls([...data]);\n }\n len() {\n return this.data.length;\n }\n clear(i) {\n this.data[i] = null;\n }\n copy() {\n return Qcalls.copyOf(this.data);\n }\n}\n\nfunction joinAnswer(fl, answer) {\n answer.struct().then((obj) => {\n fl.fulfill(obj);\n }).catch((error_) => {\n fl.reject(error_);\n });\n}\n\nconst callQueueSize = 64;\nclass QueueClient {\n constructor(conn, client, calls) {\n this.conn = conn;\n this._client = client;\n this.calls = Qcalls.copyOf(calls);\n this.q = new Queue(this.calls, callQueueSize);\n }\n _client;\n calls;\n q;\n pushCall(call) {\n const f = new Fulfiller();\n try {\n call = copyCall(call);\n } catch (error_) {\n return new ErrorAnswer(error_);\n }\n const i = this.q.push();\n if (i === -1) {\n return new ErrorAnswer(new Error(RPC_CALL_QUEUE_FULL));\n }\n this.calls.data[i] = {\n call,\n f\n };\n return f;\n }\n pushEmbargo(id, tgt) {\n const i = this.q.push();\n if (i === -1) {\n throw new Error(RPC_CALL_QUEUE_FULL);\n }\n this.calls.data[i] = {\n embargoID: id,\n embargoTarget: tgt\n };\n }\n flushQueue() {\n let c = null;\n {\n const i = this.q.front();\n if (i !== -1) {\n c = this.calls.data[i];\n }\n }\n while (c) {\n this.handle(c);\n this.q.pop();\n {\n const i = this.q.front();\n c = i === -1 ? null : this.calls.data[i];\n }\n }\n }\n handle(c) {\n if (!c) {\n return;\n }\n if (isRemoteCall(c)) {\n const answer = this._client.call(c.call);\n joinAnswer(c.a, answer);\n } else if (isLocalCall(c)) {\n const answer = this._client.call(c.call);\n joinAnswer(c.f, answer);\n } else if (isDisembargo(c)) {\n const msg = newDisembargoMessage(\n Disembargo_Context_Which.RECEIVER_LOOPBACK,\n c.embargoID\n );\n msg.disembargo.target = c.embargoTarget;\n this.conn.sendMessage(msg);\n }\n }\n isPassthrough() {\n return this.q.len() === 0;\n }\n call(call) {\n if (this.isPassthrough()) {\n return this._client.call(call);\n }\n return this.pushCall(call);\n }\n // close releases any resources associated with this client.\n // No further calls to the client should be made after calling Close.\n close() {\n }\n}\n\nclass AnswerEntry {\n id;\n conn;\n resultCaps = [];\n done = false;\n obj;\n err;\n deferred = new Deferred();\n queue = [];\n constructor(conn, id) {\n this.conn = conn;\n this.id = id;\n }\n // fulfill is called to resolve an answer successfully.\n fulfill(obj) {\n if (this.done) {\n throw new Error(`answer.fulfill called more than once`);\n }\n this.done = true;\n this.obj = obj;\n const retmsg = newReturnMessage(this.id);\n const ret = retmsg.return;\n const payload = ret._initResults();\n payload.content = obj;\n let firstErr;\n try {\n this.conn.makeCapTable(ret.segment, (len) => payload._initCapTable(len));\n this.deferred.resolve(obj);\n this.conn.sendMessage(retmsg);\n } catch (error_) {\n if (!firstErr) {\n firstErr = error_;\n }\n }\n const [queues, queuesErr] = this.emptyQueue(obj);\n if (queuesErr && !firstErr) {\n firstErr = queuesErr;\n }\n const objcap = obj.segment.message._capnp;\n if (!objcap.capTable) {\n objcap.capTable = [];\n }\n for (const capIdxStr of Object.keys(queues)) {\n const capIdx = Number(capIdxStr);\n const q = queues[capIdx];\n if (objcap.capTable === null) throw new Error(INVARIANT_UNREACHABLE_CODE);\n objcap.capTable[capIdx] = new QueueClient(\n this.conn,\n objcap.capTable[capIdx],\n q\n );\n }\n if (firstErr) {\n throw firstErr;\n }\n }\n // reject is called to resolve an answer with failure.\n reject(err) {\n if (!err) {\n throw new Error(`answer.reject called with nil`);\n }\n if (this.done) {\n throw new Error(`answer.reject claled more than once`);\n }\n const m = newReturnMessage(this.id);\n const mret = m.return;\n setReturnException(mret, err);\n this.err = err;\n this.done = true;\n this.deferred.reject(err);\n let firstErr;\n try {\n this.conn.sendMessage(m);\n } catch (error_) {\n firstErr = error_;\n }\n for (let i = 0; i < this.queue.length; i++) {\n const qa = this.queue[i];\n try {\n if (qa.qcall && isRemoteCall(qa.qcall)) {\n qa.qcall.a.reject(err);\n }\n } catch (error_) {\n if (!firstErr) {\n firstErr = error_;\n }\n }\n }\n this.queue = [];\n if (firstErr) {\n throw firstErr;\n }\n }\n // emptyQueue splits the queue by which capability it targets\n // and drops any invalid calls. Once this function returns,\n // this.queue will be empty.\n emptyQueue(obj) {\n let firstErr;\n const qs = {};\n for (let i = 0; i < this.queue.length; i++) {\n const pc = this.queue[i];\n if (!isRemoteCall(pc.qcall)) {\n continue;\n }\n if (!pc.qcall.a) {\n continue;\n }\n let c;\n try {\n c = transformPtr(obj, pc.transform);\n } catch (error_) {\n try {\n pc.qcall.a.reject(error_);\n } catch (error_2) {\n if (!firstErr) {\n firstErr = error_2;\n }\n }\n continue;\n }\n const ci = Interface.fromPointer(c);\n if (!ci) {\n try {\n pc.qcall.a.reject(new Error(RPC_NULL_CLIENT));\n } catch (error_) {\n if (!firstErr) {\n firstErr = error_;\n }\n }\n continue;\n }\n const cn = ci.getCapId();\n if (!qs[cn]) {\n qs[cn] = [];\n }\n qs[cn].push(pc.qcall);\n }\n this.queue = [];\n return [qs, firstErr];\n }\n queueCall(call, transform, a) {\n if (this.queue.length >= callQueueSize) {\n throw new Error(RPC_CALL_QUEUE_FULL);\n }\n const qcall = {\n a,\n call: copyCall(call)\n };\n const pcall = {\n qcall,\n transform\n };\n this.queue.push(pcall);\n }\n}\nfunction isRemoteCall(a) {\n return !!a.a;\n}\nfunction isLocalCall(a) {\n return !!a.f;\n}\nfunction isDisembargo(a) {\n return !!a.embargoTarget;\n}\n\nclass ImportClient {\n constructor(conn, id) {\n this.conn = conn;\n this.id = id;\n }\n closed = false;\n call(cl) {\n if (this.closed) {\n return new ErrorAnswer(new Error(RPC_IMPORT_CLOSED));\n }\n const q = this.conn.newQuestion(cl.method);\n const msg = newMessage();\n const msgCall = msg._initCall();\n msgCall.questionId = q.id;\n msgCall.interfaceId = cl.method.interfaceId;\n msgCall.methodId = cl.method.methodId;\n const target = msgCall._initTarget();\n target.importedCap = this.id;\n const payload = msgCall._initParams();\n this.conn.fillParams(payload, cl);\n this.conn.sendMessage(msg);\n return q;\n }\n close() {\n }\n}\n\nclass LocalAnswerClient {\n constructor(a, transform) {\n this.a = a;\n this.transform = transform;\n }\n call(call) {\n if (this.a.done) {\n return clientFromResolution(this.transform, this.a.obj, this.a.err).call(\n call\n );\n }\n return new Fulfiller();\n }\n close() {\n throw new Error(NOT_IMPLEMENTED);\n }\n}\n\nconst ConnWeakRefRegistry = globalThis.FinalizationRegistry ? new FinalizationRegistry((cb) => cb()) : undefined;\nconst ConDefaultFinalize = (obj, finalizer) => {\n ConnWeakRefRegistry?.register(obj, finalizer);\n};\nclass Conn {\n /**\n * Create a new connection\n * @param transport The transport used to receive/send messages.\n * @param finalize Weak reference implementation. Compatible with\n * the 'weak' module on node.js (just add weak as a dependency and pass\n * require(\"weak\")), but alternative implementations can be provided for\n * other platforms like Electron. Defaults to using FinalizationRegistry if\n * available.\n * @returns A new connection.\n */\n constructor(transport, finalize = ConDefaultFinalize) {\n this.transport = transport;\n this.finalize = finalize;\n this.startWork();\n }\n questionID = new IDGen();\n questions = [];\n answers = {};\n exportID = new IDGen();\n exports = [];\n imports = {};\n onError;\n main;\n working = false;\n bootstrap(InterfaceClass) {\n const q = this.newQuestion();\n const msg = newMessage();\n const boot = msg._initBootstrap();\n boot.questionId = q.id;\n this.sendMessage(msg);\n return new InterfaceClass.Client(new Pipeline(AnyStruct, q).client());\n }\n initMain(InterfaceClass, target) {\n this.main = new InterfaceClass.Server(target);\n this.addExport(this.main);\n }\n startWork() {\n this.work().catch((error_) => {\n if (this.onError) {\n this.onError(error_);\n } else if (error_ !== undefined) {\n throw error_;\n }\n });\n }\n sendReturnException(id, err) {\n const m = newReturnMessage(id);\n setReturnException(m.return, err);\n this.sendMessage(m);\n }\n handleBootstrapMessage(m) {\n const boot = m.bootstrap;\n const id = boot.questionId;\n const ret = newReturnMessage(id);\n ret.return.releaseParamCaps = false;\n const a = this.insertAnswer(id);\n if (a === null) {\n return this.sendReturnException(id, new Error(RPC_QUESTION_ID_REUSED));\n }\n if (this.main === undefined) {\n return a.reject(new Error(RPC_NO_MAIN_INTERFACE));\n }\n const msg = new Message();\n msg.addCap(this.main);\n a.fulfill(new Interface(msg.getSegment(0), 0));\n }\n handleFinishMessage(m) {\n const { finish } = m;\n const id = finish.questionId;\n const a = this.popAnswer(id);\n if (a === null) {\n throw new Error(format(RPC_FINISH_UNKNOWN_ANSWER, id));\n }\n if (finish.releaseResultCaps) {\n const caps = a.resultCaps;\n let i = caps.length;\n while (--i >= 0) {\n this.releaseExport(i, 1);\n }\n }\n }\n handleMessage(m) {\n switch (m.which()) {\n case Message$1.UNIMPLEMENTED: {\n break;\n }\n case Message$1.BOOTSTRAP: {\n this.handleBootstrapMessage(m);\n break;\n }\n case Message$1.ABORT: {\n this.shutdown(new RPCError(m.abort));\n break;\n }\n case Message$1.FINISH: {\n this.handleFinishMessage(m);\n break;\n }\n case Message$1.RETURN: {\n this.handleReturnMessage(m);\n break;\n }\n case Message$1.CALL: {\n this.handleCallMessage(m);\n break;\n }\n }\n }\n handleReturnMessage(m) {\n const ret = m.return;\n const id = ret.answerId;\n const q = this.popQuestion(id);\n if (!q) {\n throw new Error(format(RPC_RETURN_FOR_UNKNOWN_QUESTION, id));\n }\n if (ret.releaseParamCaps) {\n for (let i = 0; i < q.paramCaps.length; i++) {\n this.releaseExport(id, 1);\n }\n }\n let releaseResultCaps = true;\n switch (ret.which()) {\n case Return.RESULTS: {\n releaseResultCaps = false;\n const { results } = ret;\n this.populateMessageCapTable(results);\n const { content } = results;\n q.fulfill(content);\n break;\n }\n case Return.EXCEPTION: {\n const exc = ret.exception;\n const err = q.method ? new MethodError(q.method, exc.reason) : new RPCError(exc);\n q.reject(err);\n break;\n }\n }\n const fin = newFinishMessage(id, releaseResultCaps);\n this.sendMessage(fin);\n }\n handleCallMessage(m) {\n const mcall = m.call;\n const mt = mcall.target;\n if (mt.which() !== MessageTarget.IMPORTED_CAP && mt.which() !== MessageTarget.PROMISED_ANSWER) {\n const um = newUnimplementedMessage(m);\n this.sendMessage(um);\n return;\n }\n const mparams = mcall.params;\n try {\n this.populateMessageCapTable(mparams);\n } catch {\n const um = newUnimplementedMessage(m);\n this.sendMessage(um);\n return;\n }\n const id = mcall.questionId;\n const a = this.insertAnswer(id);\n if (!a) {\n throw new Error(format(RPC_QUESTION_ID_REUSED, id));\n }\n const interfaceDef = Registry.lookup(mcall.interfaceId);\n if (!interfaceDef) {\n const um = newUnimplementedMessage(m);\n this.sendMessage(um);\n return;\n }\n const method = interfaceDef.methods[mcall.methodId];\n if (!method) {\n const um = newUnimplementedMessage(m);\n this.sendMessage(um);\n return;\n }\n const paramContent = mparams.content;\n const call = {\n method,\n params: getAs(method.ParamsClass, paramContent)\n };\n try {\n this.routeCallMessage(a, mt, call);\n } catch (error_) {\n a.reject(error_);\n }\n }\n routeCallMessage(result, mt, cl) {\n switch (mt.which()) {\n case MessageTarget.IMPORTED_CAP: {\n const id = mt.importedCap;\n const e = this.findExport(id);\n if (!e) {\n throw new Error(RPC_BAD_TARGET);\n }\n const answer = this.call(e.client, cl);\n joinAnswer(result, answer);\n break;\n }\n case MessageTarget.PROMISED_ANSWER: {\n const mpromise = mt.promisedAnswer;\n const id = mpromise.questionId;\n if (id === result.id) {\n throw new Error(RPC_BAD_TARGET);\n }\n const pa = this.answers[id];\n if (!pa) {\n throw new Error(RPC_BAD_TARGET);\n }\n const mtrans = mpromise.transform;\n const transform = promisedAnswerOpsToTransform(mtrans);\n if (pa.done) {\n const { obj, err } = pa;\n const client = clientFromResolution(transform, obj, err);\n const answer = this.call(client, cl);\n joinAnswer(result, answer);\n } else {\n pa.queueCall(cl, transform, result);\n }\n break;\n }\n default: {\n throw new Error(INVARIANT_UNREACHABLE_CODE);\n }\n }\n }\n populateMessageCapTable(payload) {\n const msg = payload.segment.message;\n const ctab = payload.capTable;\n for (const desc of ctab) {\n switch (desc.which()) {\n case CapDescriptor.NONE: {\n msg.addCap(null);\n break;\n }\n case CapDescriptor.SENDER_HOSTED: {\n const id = desc.senderHosted;\n const client = this.addImport(id);\n msg.addCap(client);\n break;\n }\n case CapDescriptor.SENDER_PROMISE: {\n const id = desc.senderPromise;\n const client = this.addImport(id);\n msg.addCap(client);\n break;\n }\n case CapDescriptor.RECEIVER_HOSTED: {\n const id = desc.receiverHosted;\n const e = this.findExport(id);\n if (!e) {\n throw new Error(format(RPC_UNKNOWN_EXPORT_ID, id));\n }\n msg.addCap(e.rc.ref());\n break;\n }\n case CapDescriptor.RECEIVER_ANSWER: {\n const recvAns = desc.receiverAnswer;\n const id = recvAns.questionId;\n const a = this.answers[id];\n if (!a) {\n throw new Error(format(RPC_UNKNOWN_ANSWER_ID, id));\n }\n const recvTransform = recvAns.transform;\n const transform = promisedAnswerOpsToTransform(recvTransform);\n msg.addCap(answerPipelineClient(a, transform));\n break;\n }\n default: {\n throw new Error(format(RPC_UNKNOWN_CAP_DESCRIPTOR, desc.which()));\n }\n }\n }\n }\n addImport(id) {\n const importEntry = this.imports[id];\n if (importEntry) {\n importEntry.refs++;\n return importEntry.rc.ref();\n }\n const client = new ImportClient(this, id);\n const [rc, ref] = RefCount.new(client, this.finalize);\n this.imports[id] = {\n rc,\n refs: 1\n };\n return ref;\n }\n findExport(id) {\n if (id > this.exports.length) {\n return null;\n }\n return this.exports[id];\n }\n addExport(client) {\n for (let i = 0; i < this.exports.length; i++) {\n const e = this.exports[i];\n if (e && isSameClient(e.rc._client, client)) {\n e.wireRefs++;\n return i;\n }\n }\n const id = this.exportID.next();\n const [rc, ref] = RefCount.new(client, this.finalize);\n const _export = {\n client: ref,\n id,\n rc,\n wireRefs: 1\n };\n if (id === this.exports.length) {\n this.exports.push(_export);\n } else {\n this.exports[id] = _export;\n }\n return id;\n }\n releaseExport(id, refs) {\n const e = this.findExport(id);\n if (!e) {\n return;\n }\n e.wireRefs -= refs;\n if (e.wireRefs > 0) {\n return;\n }\n if (e.wireRefs < 0) {\n this.error(`warning: export ${id} has negative refcount (${e.wireRefs})`);\n }\n e.client.close();\n this.exports[id] = null;\n this.exportID.remove(id);\n }\n error(s) {\n console.error(s);\n }\n newQuestion(method) {\n const id = this.questionID.next();\n const q = new Question(this, id, method);\n if (id === this.questions.length) {\n this.questions.push(q);\n } else {\n this.questions[id] = q;\n }\n return q;\n }\n findQuestion(id) {\n if (id > this.questions.length) {\n return null;\n }\n return this.questions[id];\n }\n popQuestion(id) {\n const q = this.findQuestion(id);\n if (!q) {\n return q;\n }\n this.questions[id] = null;\n this.questionID.remove(id);\n return q;\n }\n // TODO: cancel context?\n insertAnswer(id) {\n if (this.answers[id]) {\n return null;\n }\n const a = new AnswerEntry(this, id);\n this.answers[id] = a;\n return a;\n }\n popAnswer(id) {\n const a = this.answers[id];\n delete this.answers[id];\n return a;\n }\n shutdown(_err) {\n this.transport.close();\n }\n call(client, call) {\n return client.call(call);\n }\n fillParams(payload, cl) {\n const params = placeParams(cl, payload.content);\n payload.content = params;\n this.makeCapTable(\n payload.segment,\n (length) => payload._initCapTable(length)\n );\n }\n makeCapTable(s, init) {\n const msgtab = s.message._capnp.capTable;\n if (!msgtab) {\n return;\n }\n const t = init(msgtab.length);\n for (const [i, client] of msgtab.entries()) {\n const desc = t.get(i);\n if (!client) {\n desc.none = true;\n continue;\n }\n this.descriptorForClient(desc, client);\n }\n }\n // descriptorForClient fills desc for client, adding it to the export\n // table if necessary. The caller must be holding onto c.mu.\n descriptorForClient(desc, _client) {\n {\n dig: for (let client = _client; ; ) {\n if (client instanceof ImportClient) {\n if (client.conn !== this) {\n break dig;\n }\n desc.receiverHosted = client.id;\n return;\n } else if (client instanceof Ref) {\n client = client.client();\n } else if (client instanceof PipelineClient) {\n const p = client.pipeline;\n const ans = p.answer;\n const transform = p.transform();\n if (ans instanceof FixedAnswer) {\n let s;\n let err;\n try {\n s = ans.structSync();\n } catch (error_) {\n err = error_;\n }\n client = clientFromResolution(transform, s, err);\n } else if (ans instanceof Question) {\n if (ans.state !== QuestionState.IN_PROGRESS) {\n client = clientFromResolution(transform, ans.obj, ans.err);\n continue;\n }\n if (ans.conn !== this) {\n break dig;\n }\n const a = desc._initReceiverAnswer();\n a.questionId = ans.id;\n transformToPromisedAnswer(a, p.transform());\n return;\n } else {\n break dig;\n }\n } else {\n break dig;\n }\n }\n }\n const id = this.addExport(_client);\n desc.senderHosted = id;\n }\n sendMessage(msg) {\n this.transport.sendMessage(msg);\n }\n async work() {\n this.working = true;\n while (this.working) {\n try {\n const m = await this.transport.recvMessage();\n this.handleMessage(m);\n } catch (error_) {\n if (error_ !== undefined) {\n throw error_;\n }\n this.working = false;\n }\n }\n }\n}\nfunction answerPipelineClient(a, transform) {\n return new LocalAnswerClient(a, transform);\n}\n\nclass DeferredTransport {\n d;\n closed = false;\n close() {\n this.closed = true;\n this.d?.reject();\n }\n recvMessage() {\n if (this.closed) {\n return Promise.reject();\n }\n if (this.d) {\n this.d.reject();\n }\n this.d = new Deferred();\n return this.d.promise;\n }\n reject = (err) => {\n this.d?.reject(err);\n };\n resolve = (buf) => {\n try {\n this.d?.resolve(new Message(buf, false).getRoot(Message$1));\n } catch (error_) {\n this.d?.reject(error_);\n }\n };\n}\n\nexport { AnyPointerList, BoolList, Conn, Data, DataList, Deferred, DeferredTransport, ErrorClient, Float32List, Float64List, Int16List, Int32List, Int64List, Int8List, Interface, InterfaceList, List, ListElementSize, Message, ObjectSize, Pipeline, Pointer, PointerList, Registry, Struct, Text, TextList, Uint16List, Uint32List, Uint64List, Uint8List, Void, VoidList, answerPipelineClient, clientFromResolution, copyCall, isSameClient, placeParams, utils };\n"],"x_google_ignoreList":[0,1,2,3,4],"mappings":"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"}
1
+ {"version":3,"file":"src-B-8ZXmr4.mjs","names":["#proxyHandler","padToWord","dump"],"sources":["../../../../node_modules/.pnpm/capnp-es@0.0.11_patch_hash=503a440bd2bef41c0cb22819bc4ced5a7f04993fb999f0d944e284220f14916b_typescript@5.9.3/node_modules/capnp-es/dist/shared/capnp-es.0-_cOx6D.mjs","../../../../node_modules/.pnpm/capnp-es@0.0.11_patch_hash=503a440bd2bef41c0cb22819bc4ced5a7f04993fb999f0d944e284220f14916b_typescript@5.9.3/node_modules/capnp-es/dist/shared/capnp-es.BvfUH5E6.mjs","../../../../node_modules/.pnpm/capnp-es@0.0.11_patch_hash=503a440bd2bef41c0cb22819bc4ced5a7f04993fb999f0d944e284220f14916b_typescript@5.9.3/node_modules/capnp-es/dist/shared/capnp-es.GpvEvMIK.mjs","../../../../node_modules/.pnpm/capnp-es@0.0.11_patch_hash=503a440bd2bef41c0cb22819bc4ced5a7f04993fb999f0d944e284220f14916b_typescript@5.9.3/node_modules/capnp-es/dist/shared/capnp-es.UAt3nLGq.mjs","../../../../node_modules/.pnpm/capnp-es@0.0.11_patch_hash=503a440bd2bef41c0cb22819bc4ced5a7f04993fb999f0d944e284220f14916b_typescript@5.9.3/node_modules/capnp-es/dist/index.mjs"],"sourcesContent":["var ListElementSize = /* @__PURE__ */ ((ListElementSize2) => {\n ListElementSize2[ListElementSize2[\"VOID\"] = 0] = \"VOID\";\n ListElementSize2[ListElementSize2[\"BIT\"] = 1] = \"BIT\";\n ListElementSize2[ListElementSize2[\"BYTE\"] = 2] = \"BYTE\";\n ListElementSize2[ListElementSize2[\"BYTE_2\"] = 3] = \"BYTE_2\";\n ListElementSize2[ListElementSize2[\"BYTE_4\"] = 4] = \"BYTE_4\";\n ListElementSize2[ListElementSize2[\"BYTE_8\"] = 5] = \"BYTE_8\";\n ListElementSize2[ListElementSize2[\"POINTER\"] = 6] = \"POINTER\";\n ListElementSize2[ListElementSize2[\"COMPOSITE\"] = 7] = \"COMPOSITE\";\n return ListElementSize2;\n})(ListElementSize || {});\n\nconst tmpWord = new DataView(new ArrayBuffer(8));\nnew Uint16Array(tmpWord.buffer)[0] = 258;\nconst DEFAULT_BUFFER_SIZE = 4096;\nconst DEFAULT_TRAVERSE_LIMIT = 64 << 20;\nconst LIST_SIZE_MASK = 7;\nconst MAX_BUFFER_DUMP_BYTES = 8192;\nconst MAX_INT32 = 2147483647;\nconst MAX_UINT32 = 4294967295;\nconst MIN_SINGLE_SEGMENT_GROWTH = 4096;\nconst NATIVE_LITTLE_ENDIAN = tmpWord.getUint8(0) === 2;\nconst PACK_SPAN_THRESHOLD = 2;\nconst POINTER_DOUBLE_FAR_MASK = 4;\nconst POINTER_TYPE_MASK = 3;\nconst MAX_DEPTH = MAX_INT32;\nconst MAX_SEGMENT_LENGTH = MAX_UINT32;\n\nconst INVARIANT_UNREACHABLE_CODE = \"CAPNP-TS000 Unreachable code detected.\";\nfunction assertNever(n) {\n throw new Error(INVARIANT_UNREACHABLE_CODE + ` (never block hit with: ${n})`);\n}\nconst MSG_INVALID_FRAME_HEADER = \"CAPNP-TS001 Attempted to parse an invalid message frame header; are you sure this is a Cap'n Proto message?\";\nconst MSG_PACK_NOT_WORD_ALIGNED = \"CAPNP-TS003 Attempted to pack a message that was not word-aligned.\";\nconst MSG_SEGMENT_OUT_OF_BOUNDS = \"CAPNP-TS004 Segment ID %X is out of bounds for message %s.\";\nconst MSG_SEGMENT_TOO_SMALL = \"CAPNP-TS005 First segment must have at least enough room to hold the root pointer (8 bytes).\";\nconst NOT_IMPLEMENTED = \"CAPNP-TS006 %s is not implemented.\";\nconst PTR_ADOPT_WRONG_MESSAGE = \"CAPNP-TS008 Attempted to adopt %s into a pointer in a different message %s.\";\nconst PTR_ALREADY_ADOPTED = \"CAPNP-TS009 Attempted to adopt %s more than once.\";\nconst PTR_COMPOSITE_SIZE_UNDEFINED = \"CAPNP-TS010 Attempted to set a composite list without providing a composite element size.\";\nconst PTR_DEPTH_LIMIT_EXCEEDED = \"CAPNP-TS011 Nesting depth limit exceeded for %s.\";\nconst PTR_INIT_COMPOSITE_STRUCT = \"CAPNP-TS013 Attempted to initialize a struct member from a composite list (%s).\";\nconst PTR_INVALID_FAR_TARGET = \"CAPNP-TS015 Target of a far pointer (%s) is another far pointer.\";\nconst PTR_INVALID_LIST_SIZE = \"CAPNP-TS016 Invalid list element size: %x.\";\nconst PTR_INVALID_POINTER_TYPE = \"CAPNP-TS017 Invalid pointer type: %x.\";\nconst PTR_INVALID_UNION_ACCESS = \"CAPNP-TS018 Attempted to access getter on %s for union field %s that is not currently set (wanted: %d, found: %d).\";\nconst PTR_OFFSET_OUT_OF_BOUNDS = \"CAPNP-TS019 Pointer offset %a is out of bounds for underlying buffer.\";\nconst PTR_STRUCT_DATA_OUT_OF_BOUNDS = \"CAPNP-TS020 Attempted to access out-of-bounds struct data (struct: %s, %d bytes at %a, data words: %d).\";\nconst PTR_STRUCT_POINTER_OUT_OF_BOUNDS = \"CAPNP-TS021 Attempted to access out-of-bounds struct pointer (%s, index: %d, length: %d).\";\nconst PTR_TRAVERSAL_LIMIT_EXCEEDED = \"CAPNP-TS022 Traversal limit exceeded! Slow down! %s\";\nconst PTR_WRONG_LIST_TYPE = \"CAPNP-TS023 Cannot convert %s to a %s list.\";\nconst PTR_WRONG_POINTER_TYPE = \"CAPNP-TS024 Attempted to convert pointer %s to a %s type.\";\nconst SEG_GET_NON_ZERO_SINGLE = \"CAPNP-TS035 Attempted to get a segment other than 0 (%d) from a single segment arena.\";\nconst SEG_ID_OUT_OF_BOUNDS = \"CAPNP-TS036 Attempted to get an out-of-bounds segment (%d).\";\nconst SEG_NOT_WORD_ALIGNED = \"CAPNP-TS037 Segment buffer length %d is not a multiple of 8.\";\nconst SEG_REPLACEMENT_BUFFER_TOO_SMALL = \"CAPNP-TS038 Attempted to replace a segment buffer with one that is smaller than the allocated space.\";\nconst SEG_SIZE_OVERFLOW = `CAPNP-TS039 Requested size %x exceeds maximum value (${MAX_SEGMENT_LENGTH}).`;\nconst TYPE_COMPOSITE_SIZE_UNDEFINED = \"CAPNP-TS040 Must provide a composite element size for composite list pointers.\";\nconst LIST_NO_MUTABLE = \"CAPNP-TS045: Cannot call mutative methods on an immutable list.\";\nconst LIST_NO_SEARCH = \"CAPNP-TS046: Search is not supported for list.\";\nconst RPC_NULL_CLIENT = \"CAPNP-TS100 Call on null client.\";\nconst RPC_CALL_QUEUE_FULL = \"CAPNP-TS101 Promised answer call queue full.\";\nconst RPC_QUEUE_CALL_CANCEL = \"CAPNP-TS102 Queue call canceled.\";\nconst RPC_ZERO_REF = \"CAPNP-TS105 Ref() called on zeroed refcount.\";\nconst RPC_IMPORT_CLOSED = \"CAPNP-TS106 Call on closed import.\";\nconst RPC_METHOD_NOT_IMPLEMENTED = \"CAPNP-TS107 Method not implemented.\";\nconst RPC_BAD_TARGET = \"CAPNP-TS109 Target not found.\";\nconst RPC_RETURN_FOR_UNKNOWN_QUESTION = \"CAPNP-TS111 Received return for unknown question (id=%s).\";\nconst RPC_QUESTION_ID_REUSED = \"CAPNP-TS112 Attempted to re-use question id (%s).\";\nconst RPC_UNKNOWN_EXPORT_ID = \"CAPNP-TS113 Capability table references unknown export ID (%s).\";\nconst RPC_UNKNOWN_ANSWER_ID = \"CAPNP-TS114 Capability table references unknown answer ID (%s).\";\nconst RPC_UNKNOWN_CAP_DESCRIPTOR = \"CAPNP-TS115 Unknown cap descriptor type (which: %s).\";\nconst RPC_METHOD_ERROR = \"CAPNP-TS116 RPC method failed at %s.%s(): %s\";\nconst RPC_ERROR = \"CAPNP-TS117 RPC call failed, reason: %s\";\nconst RPC_NO_MAIN_INTERFACE = \"CAPNP-TS118 Received bootstrap message without main interface set.\";\nconst RPC_FINISH_UNKNOWN_ANSWER = \"CAPNP-TS119 Received finish message for unknown answer ID (%s).\";\nconst RPC_FULFILL_ALREADY_CALLED = \"CAPNP-TS120 Fulfill called more than once for question (%s).\";\n\nfunction bufferToHex(buffer) {\n const a = new Uint8Array(buffer);\n const h = [];\n for (let i = 0; i < a.byteLength; i++) {\n h.push(pad(a[i].toString(16), 2));\n }\n return `[${h.join(\" \")}]`;\n}\nfunction dumpBuffer(buffer) {\n const b = buffer instanceof ArrayBuffer ? new Uint8Array(buffer) : new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n const byteLength = Math.min(b.byteLength, MAX_BUFFER_DUMP_BYTES);\n let r = format(\"\\n=== buffer[%d] ===\", byteLength);\n for (let j = 0; j < byteLength; j += 16) {\n r += `\n${pad(j.toString(16), 8)}: `;\n let s = \"\";\n let k;\n for (k = 0; k < 16 && j + k < b.byteLength; k++) {\n const v = b[j + k];\n r += `${pad(v.toString(16), 2)} `;\n s += v > 31 && v < 255 ? String.fromCharCode(v) : \"\\xB7\";\n if (k === 7) {\n r += \" \";\n }\n }\n r += `${\" \".repeat((17 - k) * 3)}${s}`;\n }\n r += \"\\n\";\n if (byteLength !== b.byteLength) {\n r += format(\"=== (truncated %d bytes) ===\\n\", b.byteLength - byteLength);\n }\n return r;\n}\nfunction format(s, ...args) {\n const n = s.length;\n let arg;\n let argIndex = 0;\n let c;\n let escaped = false;\n let i = 0;\n let leadingZero = false;\n let precision;\n let result = \"\";\n function nextArg() {\n return args[argIndex++];\n }\n function slurpNumber() {\n let digits = \"\";\n while (/\\d/.test(s[i])) {\n digits += s[i++];\n c = s[i];\n }\n return digits.length > 0 ? Number.parseInt(digits, 10) : null;\n }\n for (; i < n; ++i) {\n c = s[i];\n if (escaped) {\n escaped = false;\n if (c === \".\") {\n leadingZero = false;\n c = s[++i];\n } else if (c === \"0\" && s[i + 1] === \".\") {\n leadingZero = true;\n i += 2;\n c = s[i];\n } else {\n leadingZero = true;\n }\n precision = slurpNumber();\n switch (c) {\n case \"a\": {\n result += \"0x\" + pad(Number.parseInt(String(nextArg()), 10).toString(16), 8);\n break;\n }\n case \"b\": {\n result += Number.parseInt(String(nextArg()), 10).toString(2);\n break;\n }\n case \"c\": {\n arg = nextArg();\n result += typeof arg === \"string\" || arg instanceof String ? arg : String.fromCharCode(Number.parseInt(String(arg), 10));\n break;\n }\n case \"d\": {\n result += Number.parseInt(String(nextArg()), 10);\n break;\n }\n case \"f\": {\n const tmp = Number.parseFloat(String(nextArg())).toFixed(\n precision || 6\n );\n result += leadingZero ? tmp : tmp.replace(/^0/, \"\");\n break;\n }\n case \"j\": {\n result += JSON.stringify(nextArg());\n break;\n }\n case \"o\": {\n result += \"0\" + Number.parseInt(String(nextArg()), 10).toString(8);\n break;\n }\n case \"s\": {\n result += nextArg();\n break;\n }\n case \"x\": {\n result += \"0x\" + Number.parseInt(String(nextArg()), 10).toString(16);\n break;\n }\n case \"X\": {\n result += \"0x\" + Number.parseInt(String(nextArg()), 10).toString(16).toUpperCase();\n break;\n }\n default: {\n result += c;\n break;\n }\n }\n } else if (c === \"%\") {\n escaped = true;\n } else {\n result += c;\n }\n }\n return result;\n}\nfunction pad(v, width, pad2 = \"0\") {\n return v.length >= width ? v : Array.from({ length: width - v.length + 1 }).join(pad2) + v;\n}\nfunction padToWord$1(size) {\n return size + 7 & -8;\n}\n\nclass ObjectSize {\n /**\n * Creates a new ObjectSize instance.\n *\n * @param dataByteLength - The number of bytes in the data section of the struct\n * @param pointerLength - The number of pointers in the pointer section of the struct\n */\n constructor(dataByteLength, pointerLength) {\n this.dataByteLength = dataByteLength;\n this.pointerLength = pointerLength;\n }\n toString() {\n return format(\n \"ObjectSize_dw:%d,pc:%d\",\n getDataWordLength(this),\n this.pointerLength\n );\n }\n}\nfunction getByteLength(o) {\n return o.dataByteLength + o.pointerLength * 8;\n}\nfunction getDataWordLength(o) {\n return o.dataByteLength / 8;\n}\nfunction getWordLength(o) {\n return o.dataByteLength / 8 + o.pointerLength;\n}\nfunction padToWord(o) {\n return new ObjectSize(padToWord$1(o.dataByteLength), o.pointerLength);\n}\n\nclass Orphan {\n /** If this member is not present then the orphan has already been adopted, or something went very wrong. */\n _capnp;\n byteOffset;\n segment;\n constructor(src) {\n const c = getContent(src);\n this.segment = c.segment;\n this.byteOffset = c.byteOffset;\n this._capnp = {};\n this._capnp.type = getTargetPointerType(src);\n switch (this._capnp.type) {\n case PointerType.STRUCT: {\n this._capnp.size = getTargetStructSize(src);\n break;\n }\n case PointerType.LIST: {\n this._capnp.length = getTargetListLength(src);\n this._capnp.elementSize = getTargetListElementSize(src);\n if (this._capnp.elementSize === ListElementSize.COMPOSITE) {\n this._capnp.size = getTargetCompositeListSize(src);\n }\n break;\n }\n case PointerType.OTHER: {\n this._capnp.capId = getCapabilityId(src);\n break;\n }\n default: {\n throw new Error(PTR_INVALID_POINTER_TYPE);\n }\n }\n erasePointer(src);\n }\n /**\n * Adopt (move) this orphan into the target pointer location. This will allocate far pointers in `dst` as needed.\n *\n * @param dst The destination pointer.\n */\n _moveTo(dst) {\n if (this._capnp === undefined) {\n throw new Error(format(PTR_ALREADY_ADOPTED, this));\n }\n if (this.segment.message !== dst.segment.message) {\n throw new Error(format(PTR_ADOPT_WRONG_MESSAGE, this, dst));\n }\n erase(dst);\n const res = initPointer(this.segment, this.byteOffset, dst);\n switch (this._capnp.type) {\n case PointerType.STRUCT: {\n setStructPointer(res.offsetWords, this._capnp.size, res.pointer);\n break;\n }\n case PointerType.LIST: {\n let { offsetWords } = res;\n if (this._capnp.elementSize === ListElementSize.COMPOSITE) {\n offsetWords--;\n }\n setListPointer(\n offsetWords,\n this._capnp.elementSize,\n this._capnp.length,\n res.pointer,\n this._capnp.size\n );\n break;\n }\n case PointerType.OTHER: {\n setInterfacePointer(this._capnp.capId, res.pointer);\n break;\n }\n /* istanbul ignore next */\n default: {\n throw new Error(PTR_INVALID_POINTER_TYPE);\n }\n }\n this._capnp = undefined;\n }\n dispose() {\n if (this._capnp === undefined) {\n return;\n }\n switch (this._capnp.type) {\n case PointerType.STRUCT: {\n this.segment.fillZeroWords(\n this.byteOffset,\n getWordLength(this._capnp.size)\n );\n break;\n }\n case PointerType.LIST: {\n const byteLength = getListByteLength(\n this._capnp.elementSize,\n this._capnp.length,\n this._capnp.size\n );\n this.segment.fillZeroWords(this.byteOffset, byteLength);\n break;\n }\n }\n this._capnp = undefined;\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return format(\n \"Orphan_%d@%a,type:%s\",\n this.segment.id,\n this.byteOffset,\n this._capnp && this._capnp.type\n );\n }\n}\n\nfunction adopt(src, p) {\n src._moveTo(p);\n}\nfunction disown(p) {\n return new Orphan(p);\n}\nfunction dump(p) {\n return bufferToHex(p.segment.buffer.slice(p.byteOffset, p.byteOffset + 8));\n}\nfunction getListByteLength(elementSize, length, compositeSize) {\n switch (elementSize) {\n case ListElementSize.BIT: {\n return padToWord$1(length + 7 >>> 3);\n }\n case ListElementSize.BYTE:\n case ListElementSize.BYTE_2:\n case ListElementSize.BYTE_4:\n case ListElementSize.BYTE_8:\n case ListElementSize.POINTER:\n case ListElementSize.VOID: {\n return padToWord$1(getListElementByteLength(elementSize) * length);\n }\n /* istanbul ignore next */\n case ListElementSize.COMPOSITE: {\n if (compositeSize === undefined) {\n throw new Error(format(PTR_INVALID_LIST_SIZE, Number.NaN));\n }\n return length * padToWord$1(getByteLength(compositeSize));\n }\n /* istanbul ignore next */\n default: {\n throw new Error(PTR_INVALID_LIST_SIZE);\n }\n }\n}\nfunction getListElementByteLength(elementSize) {\n switch (elementSize) {\n /* istanbul ignore next */\n case ListElementSize.BIT: {\n return Number.NaN;\n }\n case ListElementSize.BYTE: {\n return 1;\n }\n case ListElementSize.BYTE_2: {\n return 2;\n }\n case ListElementSize.BYTE_4: {\n return 4;\n }\n case ListElementSize.BYTE_8:\n case ListElementSize.POINTER: {\n return 8;\n }\n /* istanbul ignore next */\n case ListElementSize.COMPOSITE: {\n return Number.NaN;\n }\n /* istanbul ignore next */\n case ListElementSize.VOID: {\n return 0;\n }\n /* istanbul ignore next */\n default: {\n throw new Error(format(PTR_INVALID_LIST_SIZE, elementSize));\n }\n }\n}\nfunction add(offset, p) {\n return new Pointer(p.segment, p.byteOffset + offset, p._capnp.depthLimit);\n}\nfunction copyFrom(src, p) {\n if (p.segment === src.segment && p.byteOffset === src.byteOffset) {\n return;\n }\n erase(p);\n if (isNull(src)) return;\n switch (getTargetPointerType(src)) {\n case PointerType.STRUCT: {\n copyFromStruct(src, p);\n break;\n }\n case PointerType.LIST: {\n copyFromList(src, p);\n break;\n }\n case PointerType.OTHER: {\n copyFromInterface(src, p);\n break;\n }\n /* istanbul ignore next */\n default: {\n throw new Error(\n format(PTR_INVALID_POINTER_TYPE, getTargetPointerType(p))\n );\n }\n }\n}\nfunction erase(p) {\n if (isNull(p)) return;\n let c;\n switch (getTargetPointerType(p)) {\n case PointerType.STRUCT: {\n const size = getTargetStructSize(p);\n c = getContent(p);\n c.segment.fillZeroWords(c.byteOffset, size.dataByteLength / 8);\n for (let i = 0; i < size.pointerLength; i++) {\n erase(add(i * 8, c));\n }\n break;\n }\n case PointerType.LIST: {\n const elementSize = getTargetListElementSize(p);\n const length = getTargetListLength(p);\n let contentWords = padToWord$1(\n length * getListElementByteLength(elementSize)\n );\n c = getContent(p);\n if (elementSize === ListElementSize.POINTER) {\n for (let i = 0; i < length; i++) {\n erase(\n new Pointer(\n c.segment,\n c.byteOffset + i * 8,\n p._capnp.depthLimit - 1\n )\n );\n }\n break;\n } else if (elementSize === ListElementSize.COMPOSITE) {\n const tag = add(-8, c);\n const compositeSize = getStructSize(tag);\n const compositeByteLength = getByteLength(compositeSize);\n contentWords = getOffsetWords(tag);\n c.segment.setWordZero(c.byteOffset - 8);\n for (let i = 0; i < length; i++) {\n for (let j = 0; j < compositeSize.pointerLength; j++) {\n erase(\n new Pointer(\n c.segment,\n c.byteOffset + i * compositeByteLength + j * 8,\n p._capnp.depthLimit - 1\n )\n );\n }\n }\n }\n c.segment.fillZeroWords(c.byteOffset, contentWords);\n break;\n }\n case PointerType.OTHER: {\n break;\n }\n default: {\n throw new Error(\n format(PTR_INVALID_POINTER_TYPE, getTargetPointerType(p))\n );\n }\n }\n erasePointer(p);\n}\nfunction erasePointer(p) {\n if (getPointerType(p) === PointerType.FAR) {\n const landingPad = followFar(p);\n if (isDoubleFar(p)) {\n landingPad.segment.setWordZero(landingPad.byteOffset + 8);\n }\n landingPad.segment.setWordZero(landingPad.byteOffset);\n }\n p.segment.setWordZero(p.byteOffset);\n}\nfunction followFar(p) {\n const targetSegment = p.segment.message.getSegment(\n p.segment.getUint32(p.byteOffset + 4)\n );\n const targetWordOffset = p.segment.getUint32(p.byteOffset) >>> 3;\n return new Pointer(\n targetSegment,\n targetWordOffset * 8,\n p._capnp.depthLimit - 1\n );\n}\nfunction followFars(p) {\n if (getPointerType(p) === PointerType.FAR) {\n const landingPad = followFar(p);\n if (isDoubleFar(p)) {\n landingPad.byteOffset += 8;\n }\n return landingPad;\n }\n return p;\n}\nfunction getCapabilityId(p) {\n return p.segment.getUint32(p.byteOffset + 4);\n}\nfunction isCompositeList(p) {\n return getTargetPointerType(p) === PointerType.LIST && getTargetListElementSize(p) === ListElementSize.COMPOSITE;\n}\nfunction getContent(p, ignoreCompositeIndex) {\n let c;\n if (isDoubleFar(p)) {\n const landingPad = followFar(p);\n c = new Pointer(\n p.segment.message.getSegment(getFarSegmentId(landingPad)),\n getOffsetWords(landingPad) * 8\n );\n } else {\n const target = followFars(p);\n c = new Pointer(\n target.segment,\n target.byteOffset + 8 + getOffsetWords(target) * 8\n );\n }\n if (isCompositeList(p)) {\n c.byteOffset += 8;\n }\n if (!ignoreCompositeIndex && p._capnp.compositeIndex !== undefined) {\n c.byteOffset -= 8;\n c.byteOffset += 8 + p._capnp.compositeIndex * getByteLength(padToWord(getStructSize(c)));\n }\n return c;\n}\nfunction getFarSegmentId(p) {\n return p.segment.getUint32(p.byteOffset + 4);\n}\nfunction getListElementSize(p) {\n return p.segment.getUint32(p.byteOffset + 4) & LIST_SIZE_MASK;\n}\nfunction getListLength(p) {\n return p.segment.getUint32(p.byteOffset + 4) >>> 3;\n}\nfunction getOffsetWords(p) {\n const o = p.segment.getInt32(p.byteOffset);\n return o & 2 ? o >> 3 : o >> 2;\n}\nfunction getPointerType(p) {\n return p.segment.getUint32(p.byteOffset) & POINTER_TYPE_MASK;\n}\nfunction getStructDataWords(p) {\n return p.segment.getUint16(p.byteOffset + 4);\n}\nfunction getStructPointerLength(p) {\n return p.segment.getUint16(p.byteOffset + 6);\n}\nfunction getStructSize(p) {\n return new ObjectSize(getStructDataWords(p) * 8, getStructPointerLength(p));\n}\nfunction getTargetCompositeListTag(p) {\n const c = getContent(p);\n c.byteOffset -= 8;\n return c;\n}\nfunction getTargetCompositeListSize(p) {\n return getStructSize(getTargetCompositeListTag(p));\n}\nfunction getTargetListElementSize(p) {\n return getListElementSize(followFars(p));\n}\nfunction getTargetListLength(p) {\n const t = followFars(p);\n if (getListElementSize(t) === ListElementSize.COMPOSITE) {\n return getOffsetWords(getTargetCompositeListTag(p));\n }\n return getListLength(t);\n}\nfunction getTargetPointerType(p) {\n const t = getPointerType(followFars(p));\n if (t === PointerType.FAR) {\n throw new Error(format(PTR_INVALID_FAR_TARGET, p));\n }\n return t;\n}\nfunction getTargetStructSize(p) {\n return getStructSize(followFars(p));\n}\nfunction initPointer(contentSegment, contentOffset, p) {\n if (p.segment !== contentSegment) {\n if (!contentSegment.hasCapacity(8)) {\n const landingPad2 = p.segment.allocate(16);\n setFarPointer(true, landingPad2.byteOffset / 8, landingPad2.segment.id, p);\n setFarPointer(false, contentOffset / 8, contentSegment.id, landingPad2);\n landingPad2.byteOffset += 8;\n return new PointerAllocationResult(landingPad2, 0);\n }\n const landingPad = contentSegment.allocate(8);\n if (landingPad.segment.id !== contentSegment.id) {\n throw new Error(INVARIANT_UNREACHABLE_CODE);\n }\n setFarPointer(false, landingPad.byteOffset / 8, landingPad.segment.id, p);\n return new PointerAllocationResult(\n landingPad,\n (contentOffset - landingPad.byteOffset - 8) / 8\n );\n }\n return new PointerAllocationResult(p, (contentOffset - p.byteOffset - 8) / 8);\n}\nfunction isDoubleFar(p) {\n return getPointerType(p) === PointerType.FAR && (p.segment.getUint32(p.byteOffset) & POINTER_DOUBLE_FAR_MASK) !== 0;\n}\nfunction isNull(p) {\n return p.segment.isWordZero(p.byteOffset);\n}\nfunction relocateTo(dst, src) {\n const t = followFars(src);\n const lo = t.segment.getUint8(t.byteOffset) & 3;\n const hi = t.segment.getUint32(t.byteOffset + 4);\n erase(dst);\n const res = initPointer(\n t.segment,\n t.byteOffset + 8 + getOffsetWords(t) * 8,\n dst\n );\n res.pointer.segment.setUint32(\n res.pointer.byteOffset,\n lo | res.offsetWords << 2\n );\n res.pointer.segment.setUint32(res.pointer.byteOffset + 4, hi);\n erasePointer(src);\n}\nfunction setFarPointer(doubleFar, offsetWords, segmentId, p) {\n const A = PointerType.FAR;\n const B = doubleFar ? 1 : 0;\n const C = offsetWords;\n const D = segmentId;\n p.segment.setUint32(p.byteOffset, A | B << 2 | C << 3);\n p.segment.setUint32(p.byteOffset + 4, D);\n}\nfunction setInterfacePointer(capId, p) {\n p.segment.setUint32(p.byteOffset, PointerType.OTHER);\n p.segment.setUint32(p.byteOffset + 4, capId);\n}\nfunction getInterfacePointer(p) {\n return p.segment.getUint32(p.byteOffset + 4);\n}\nfunction setListPointer(offsetWords, size, length, p, compositeSize) {\n const A = PointerType.LIST;\n const B = offsetWords;\n const C = size;\n let D = length;\n if (size === ListElementSize.COMPOSITE) {\n if (compositeSize === undefined) {\n throw new TypeError(TYPE_COMPOSITE_SIZE_UNDEFINED);\n }\n D *= getWordLength(compositeSize);\n }\n p.segment.setUint32(p.byteOffset, A | B << 2);\n p.segment.setUint32(p.byteOffset + 4, C | D << 3);\n}\nfunction setStructPointer(offsetWords, size, p) {\n const A = PointerType.STRUCT;\n const B = offsetWords;\n const C = getDataWordLength(size);\n const D = size.pointerLength;\n p.segment.setUint32(p.byteOffset, A | B << 2);\n p.segment.setUint16(p.byteOffset + 4, C);\n p.segment.setUint16(p.byteOffset + 6, D);\n}\nfunction validate(pointerType, p, elementSize) {\n if (isNull(p)) {\n return;\n }\n const t = followFars(p);\n const A = t.segment.getUint32(t.byteOffset) & POINTER_TYPE_MASK;\n if (A !== pointerType) {\n throw new Error(format(PTR_WRONG_POINTER_TYPE, p, pointerType));\n }\n if (elementSize !== undefined) {\n const C = t.segment.getUint32(t.byteOffset + 4) & LIST_SIZE_MASK;\n if (C !== elementSize) {\n throw new Error(\n format(PTR_WRONG_LIST_TYPE, p, ListElementSize[elementSize])\n );\n }\n }\n}\nfunction copyFromInterface(src, dst) {\n const srcCapId = getInterfacePointer(src);\n if (srcCapId < 0) {\n return;\n }\n const srcCapTable = src.segment.message._capnp.capTable;\n if (!srcCapTable) {\n return;\n }\n const client = srcCapTable[srcCapId];\n if (!client) {\n return;\n }\n const dstCapId = dst.segment.message.addCap(client);\n setInterfacePointer(dstCapId, dst);\n}\nfunction copyFromList(src, dst) {\n if (dst._capnp.depthLimit <= 0) {\n throw new Error(PTR_DEPTH_LIMIT_EXCEEDED);\n }\n const srcContent = getContent(src);\n const srcElementSize = getTargetListElementSize(src);\n const srcLength = getTargetListLength(src);\n let srcCompositeSize;\n let srcStructByteLength;\n let dstContent;\n if (srcElementSize === ListElementSize.POINTER) {\n dstContent = dst.segment.allocate(srcLength << 3);\n for (let i = 0; i < srcLength; i++) {\n const srcPtr = new Pointer(\n srcContent.segment,\n srcContent.byteOffset + (i << 3),\n src._capnp.depthLimit - 1\n );\n const dstPtr = new Pointer(\n dstContent.segment,\n dstContent.byteOffset + (i << 3),\n dst._capnp.depthLimit - 1\n );\n copyFrom(srcPtr, dstPtr);\n }\n } else if (srcElementSize === ListElementSize.COMPOSITE) {\n srcCompositeSize = padToWord(getTargetCompositeListSize(src));\n srcStructByteLength = getByteLength(srcCompositeSize);\n dstContent = dst.segment.allocate(\n getByteLength(srcCompositeSize) * srcLength + 8\n );\n dstContent.segment.copyWord(\n dstContent.byteOffset,\n srcContent.segment,\n srcContent.byteOffset - 8\n );\n if (srcCompositeSize.dataByteLength > 0) {\n const wordLength = getWordLength(srcCompositeSize) * srcLength;\n dstContent.segment.copyWords(\n dstContent.byteOffset + 8,\n srcContent.segment,\n srcContent.byteOffset,\n wordLength\n );\n }\n for (let i = 0; i < srcLength; i++) {\n for (let j = 0; j < srcCompositeSize.pointerLength; j++) {\n const offset = i * srcStructByteLength + srcCompositeSize.dataByteLength + (j << 3);\n const srcPtr = new Pointer(\n srcContent.segment,\n srcContent.byteOffset + offset,\n src._capnp.depthLimit - 1\n );\n const dstPtr = new Pointer(\n dstContent.segment,\n dstContent.byteOffset + offset + 8,\n dst._capnp.depthLimit - 1\n );\n copyFrom(srcPtr, dstPtr);\n }\n }\n } else {\n const byteLength = padToWord$1(\n srcElementSize === ListElementSize.BIT ? srcLength + 7 >>> 3 : getListElementByteLength(srcElementSize) * srcLength\n );\n const wordLength = byteLength >>> 3;\n dstContent = dst.segment.allocate(byteLength);\n dstContent.segment.copyWords(\n dstContent.byteOffset,\n srcContent.segment,\n srcContent.byteOffset,\n wordLength\n );\n }\n const res = initPointer(dstContent.segment, dstContent.byteOffset, dst);\n setListPointer(\n res.offsetWords,\n srcElementSize,\n srcLength,\n res.pointer,\n srcCompositeSize\n );\n}\nfunction copyFromStruct(src, dst) {\n if (dst._capnp.depthLimit <= 0) {\n throw new Error(PTR_DEPTH_LIMIT_EXCEEDED);\n }\n const srcContent = getContent(src);\n const srcSize = getTargetStructSize(src);\n const srcDataWordLength = getDataWordLength(srcSize);\n const dstContent = dst.segment.allocate(getByteLength(srcSize));\n dstContent.segment.copyWords(\n dstContent.byteOffset,\n srcContent.segment,\n srcContent.byteOffset,\n srcDataWordLength\n );\n for (let i = 0; i < srcSize.pointerLength; i++) {\n const offset = srcSize.dataByteLength + i * 8;\n const srcPtr = new Pointer(\n srcContent.segment,\n srcContent.byteOffset + offset,\n src._capnp.depthLimit - 1\n );\n const dstPtr = new Pointer(\n dstContent.segment,\n dstContent.byteOffset + offset,\n dst._capnp.depthLimit - 1\n );\n copyFrom(srcPtr, dstPtr);\n }\n if (dst._capnp.compositeList) {\n return;\n }\n const res = initPointer(dstContent.segment, dstContent.byteOffset, dst);\n setStructPointer(res.offsetWords, srcSize, res.pointer);\n}\nfunction trackPointerAllocation(message, p) {\n message._capnp.traversalLimit -= 8;\n if (message._capnp.traversalLimit <= 0) {\n throw new Error(format(PTR_TRAVERSAL_LIMIT_EXCEEDED, p));\n }\n}\nclass PointerAllocationResult {\n constructor(pointer, offsetWords) {\n this.pointer = pointer;\n this.offsetWords = offsetWords;\n }\n}\n\nvar PointerType = /* @__PURE__ */ ((PointerType2) => {\n PointerType2[PointerType2[\"STRUCT\"] = 0] = \"STRUCT\";\n PointerType2[PointerType2[\"LIST\"] = 1] = \"LIST\";\n PointerType2[PointerType2[\"FAR\"] = 2] = \"FAR\";\n PointerType2[PointerType2[\"OTHER\"] = 3] = \"OTHER\";\n return PointerType2;\n})(PointerType || {});\nclass Pointer {\n static _capnp = {\n displayName: \"Pointer\"\n };\n _capnp;\n /** Offset, in bytes, from the start of the segment to the beginning of this pointer. */\n byteOffset;\n /**\n * The starting segment for this pointer's data. In the case of a far pointer, the actual content this pointer is\n * referencing will be in another segment within the same message.\n */\n segment;\n constructor(segment, byteOffset, depthLimit = MAX_DEPTH) {\n this._capnp = { compositeList: false, depthLimit };\n this.segment = segment;\n this.byteOffset = byteOffset;\n if (depthLimit < 1) {\n throw new Error(format(PTR_DEPTH_LIMIT_EXCEEDED, this));\n }\n trackPointerAllocation(segment.message, this);\n if (byteOffset < 0 || byteOffset > segment.byteLength) {\n throw new Error(format(PTR_OFFSET_OUT_OF_BOUNDS, byteOffset));\n }\n }\n [Symbol.toStringTag]() {\n return format(\"Pointer_%d\", this.segment.id);\n }\n toString() {\n return format(\"->%d@%a%s\", this.segment.id, this.byteOffset, dump(this));\n }\n}\n\nclass List extends Pointer {\n static _capnp = {\n displayName: \"List<Generic>\",\n size: ListElementSize.VOID\n };\n constructor(segment, byteOffset, depthLimit) {\n super(segment, byteOffset, depthLimit);\n return new Proxy(this, List.#proxyHandler);\n }\n static #proxyHandler = {\n get(target, prop, receiver) {\n const val = Reflect.get(target, prop, receiver);\n if (val !== undefined) {\n return val;\n }\n if (typeof prop === \"string\") {\n return target.get(+prop);\n }\n }\n };\n get length() {\n return getTargetListLength(this);\n }\n toArray() {\n const { length } = this;\n const res = Array.from({ length });\n for (let i = 0; i < length; i++) {\n res[i] = this.at(i);\n }\n return res;\n }\n get(_index) {\n throw new TypeError(\"Cannot get from a generic list.\");\n }\n set(_index, _value) {\n throw new TypeError(\"Cannot set on a generic list.\");\n }\n at(index) {\n return this.get(index < 0 ? this.length + index : index);\n }\n concat(other) {\n const { length } = this;\n const otherLength = other.length;\n const res = Array.from({ length: length + otherLength });\n for (let i = 0; i < length; i++) res[i] = this.at(i);\n for (let i = 0; i < otherLength; i++) res[i + length] = other.at(i);\n return res;\n }\n some(cb, _this) {\n for (let i = 0; i < this.length; i++) {\n if (cb.call(_this, this.at(i), i, this)) {\n return true;\n }\n }\n return false;\n }\n filter(cb, _this) {\n const res = [];\n for (let i = 0; i < this.length; i++) {\n const value = this.at(i);\n if (cb.call(_this, value, i, this)) {\n res.push(value);\n }\n }\n return res;\n }\n find(cb, _this) {\n for (let i = 0; i < this.length; i++) {\n const value = this.at(i);\n if (cb.call(_this, value, i, this)) {\n return value;\n }\n }\n return undefined;\n }\n findIndex(cb, _this) {\n for (let i = 0; i < this.length; i++) {\n const value = this.at(i);\n if (cb.call(_this, value, i, this)) {\n return i;\n }\n }\n return -1;\n }\n forEach(cb, _this) {\n for (let i = 0; i < this.length; i++) {\n cb.call(_this, this.at(i), i, this);\n }\n }\n map(cb, _this) {\n const { length } = this;\n const res = Array.from({ length });\n for (let i = 0; i < length; i++) {\n res[i] = cb.call(_this, this.at(i), i, this);\n }\n return res;\n }\n flatMap(cb, _this) {\n const res = [];\n for (let i = 0; i < this.length; i++) {\n const r = cb.call(_this, this.at(i), i, this);\n res.push(...Array.isArray(r) ? r : [r]);\n }\n return res;\n }\n every(cb, _this) {\n for (let i = 0; i < this.length; i++) {\n if (!cb.call(_this, this.at(i), i, this)) {\n return false;\n }\n }\n return true;\n }\n reduce(cb, initialValue) {\n let i = 0;\n let res;\n if (initialValue === undefined) {\n res = this.at(0);\n i++;\n } else {\n res = initialValue;\n }\n for (; i < this.length; i++) {\n res = cb(res, this.at(i), i, this);\n }\n return res;\n }\n reduceRight(cb, initialValue) {\n let i = this.length - 1;\n let res;\n if (initialValue === undefined) {\n res = this.at(i);\n i--;\n } else {\n res = initialValue;\n }\n for (; i >= 0; i--) {\n res = cb(res, this.at(i), i, this);\n }\n return res;\n }\n slice(start = 0, end) {\n const length = end ? Math.min(this.length, end) : this.length;\n const res = Array.from({ length: length - start });\n for (let i = start; i < length; i++) {\n res[i] = this.at(i);\n }\n return res;\n }\n join(separator) {\n return this.toArray().join(separator);\n }\n toReversed() {\n return this.toArray().reverse();\n }\n toSorted(compareFn) {\n return this.toArray().sort(compareFn);\n }\n toSpliced(start, deleteCount, ...items) {\n return this.toArray().splice(start, deleteCount, ...items);\n }\n fill(value, start, end) {\n const { length } = this;\n const s = Math.max(start ?? 0, 0);\n const e = Math.min(end ?? length, length);\n for (let i = s; i < e; i++) {\n this.set(i, value);\n }\n return this;\n }\n copyWithin(target, start, end) {\n const { length } = this;\n const e = end ?? length;\n const s = start < 0 ? Math.max(length + start, 0) : start;\n const t = target < 0 ? Math.max(length + target, 0) : target;\n const len = Math.min(e - s, length - t);\n for (let i = 0; i < len; i++) {\n this.set(t + i, this.at(s + i));\n }\n return this;\n }\n keys() {\n return Array.from({ length: this.length }, (_, i) => i)[Symbol.iterator]();\n }\n values() {\n return this.toArray().values();\n }\n entries() {\n return this.toArray().entries();\n }\n flat(depth) {\n return this.toArray().flat(depth);\n }\n with(index, value) {\n return this.toArray().with(index, value);\n }\n includes(_searchElement, _fromIndex) {\n throw new Error(LIST_NO_SEARCH);\n }\n findLast(_cb, _thisArg) {\n throw new Error(LIST_NO_SEARCH);\n }\n findLastIndex(_cb, _t) {\n throw new Error(LIST_NO_SEARCH);\n }\n indexOf(_searchElement, _fromIndex) {\n throw new Error(LIST_NO_SEARCH);\n }\n lastIndexOf(_searchElement, _fromIndex) {\n throw new Error(LIST_NO_SEARCH);\n }\n pop() {\n throw new Error(LIST_NO_MUTABLE);\n }\n push(..._items) {\n throw new Error(LIST_NO_MUTABLE);\n }\n reverse() {\n throw new Error(LIST_NO_MUTABLE);\n }\n shift() {\n throw new Error(LIST_NO_MUTABLE);\n }\n unshift(..._items) {\n throw new Error(LIST_NO_MUTABLE);\n }\n splice(_start, _deleteCount, ..._rest) {\n throw new Error(LIST_NO_MUTABLE);\n }\n sort(_fn) {\n throw new Error(LIST_NO_MUTABLE);\n }\n get [Symbol.unscopables]() {\n return Array.prototype[Symbol.unscopables];\n }\n [Symbol.iterator]() {\n return this.values();\n }\n toJSON() {\n return this.toArray();\n }\n toString() {\n return this.join(\",\");\n }\n toLocaleString(_locales, _options) {\n return this.toString();\n }\n [Symbol.toStringTag]() {\n return \"[object Array]\";\n }\n static [Symbol.toStringTag]() {\n return this._capnp.displayName;\n }\n}\nfunction initList$1(elementSize, length, list, compositeSize) {\n let c;\n switch (elementSize) {\n case ListElementSize.BIT: {\n c = list.segment.allocate(Math.ceil(length / 8));\n break;\n }\n case ListElementSize.BYTE:\n case ListElementSize.BYTE_2:\n case ListElementSize.BYTE_4:\n case ListElementSize.BYTE_8:\n case ListElementSize.POINTER: {\n c = list.segment.allocate(length * getListElementByteLength(elementSize));\n break;\n }\n case ListElementSize.COMPOSITE: {\n if (compositeSize === undefined) {\n throw new Error(format(PTR_COMPOSITE_SIZE_UNDEFINED));\n }\n compositeSize = padToWord(compositeSize);\n const byteLength = getByteLength(compositeSize) * length;\n c = list.segment.allocate(byteLength + 8);\n setStructPointer(length, compositeSize, c);\n break;\n }\n case ListElementSize.VOID: {\n setListPointer(0, elementSize, length, list);\n return;\n }\n default: {\n throw new Error(format(PTR_INVALID_LIST_SIZE, elementSize));\n }\n }\n const res = initPointer(c.segment, c.byteOffset, list);\n setListPointer(\n res.offsetWords,\n elementSize,\n length,\n res.pointer,\n compositeSize\n );\n}\n\nclass Data extends List {\n static fromPointer(pointer) {\n validate(PointerType.LIST, pointer, ListElementSize.BYTE);\n return this._fromPointerUnchecked(pointer);\n }\n static _fromPointerUnchecked(pointer) {\n return new this(\n pointer.segment,\n pointer.byteOffset,\n pointer._capnp.depthLimit\n );\n }\n /**\n * Copy the contents of `src` into this Data pointer. If `src` is smaller than the length of this pointer then the\n * remaining bytes will be zeroed out. Extra bytes in `src` are ignored.\n *\n * @param src The source buffer.\n */\n // TODO: Would be nice to have a way to zero-copy a buffer by allocating a new segment into the message with that\n // buffer data.\n copyBuffer(src) {\n const c = getContent(this);\n const dstLength = this.length;\n const srcLength = src.byteLength;\n const i = src instanceof ArrayBuffer ? new Uint8Array(src) : new Uint8Array(\n src.buffer,\n src.byteOffset,\n Math.min(dstLength, srcLength)\n );\n const o = new Uint8Array(c.segment.buffer, c.byteOffset, this.length);\n o.set(i);\n if (dstLength > srcLength) {\n o.fill(0, srcLength, dstLength);\n }\n }\n /**\n * Read a byte from the specified offset.\n *\n * @param byteOffset The byte offset to read.\n * @returns The byte value.\n */\n get(byteOffset) {\n const c = getContent(this);\n return c.segment.getUint8(c.byteOffset + byteOffset);\n }\n /**\n * Write a byte at the specified offset.\n *\n * @param byteOffset The byte offset to set.\n * @param value The byte value to set.\n */\n set(byteOffset, value) {\n const c = getContent(this);\n c.segment.setUint8(c.byteOffset + byteOffset, value);\n }\n /**\n * Creates a **copy** of the underlying buffer data and returns it as an ArrayBuffer.\n *\n * To obtain a reference to the underlying buffer instead, use `toUint8Array()` or `toDataView()`.\n *\n * @returns A copy of this data buffer.\n */\n toArrayBuffer() {\n const c = getContent(this);\n return c.segment.buffer.slice(c.byteOffset, c.byteOffset + this.length);\n }\n /**\n * Convert this Data pointer to a DataView representing the pointer's contents.\n *\n * WARNING: The DataView references memory from a message segment, so do not venture outside the bounds of the\n * DataView or else BAD THINGS.\n *\n * @returns A live reference to the underlying buffer.\n */\n toDataView() {\n const c = getContent(this);\n return new DataView(c.segment.buffer, c.byteOffset, this.length);\n }\n [Symbol.toStringTag]() {\n return `Data_${super.toString()}`;\n }\n /**\n * Convert this Data pointer to a Uint8Array representing the pointer's contents.\n *\n * WARNING: The Uint8Array references memory from a message segment, so do not venture outside the bounds of the\n * Uint8Array or else BAD THINGS.\n *\n * @returns A live reference to the underlying buffer.\n */\n toUint8Array() {\n const c = getContent(this);\n return new Uint8Array(c.segment.buffer, c.byteOffset, this.length);\n }\n}\n\nconst textEncoder = new TextEncoder();\nconst textDecoder = new TextDecoder();\nclass Text extends List {\n static fromPointer(pointer) {\n validate(PointerType.LIST, pointer, ListElementSize.BYTE);\n return textFromPointerUnchecked(pointer);\n }\n /**\n * Read a utf-8 encoded string value from this pointer.\n *\n * @param index The index at which to start reading; defaults to zero.\n * @returns The string value.\n */\n get(index = 0) {\n if (isNull(this)) {\n return \"\";\n }\n const c = getContent(this);\n return textDecoder.decode(\n new Uint8Array(\n c.segment.buffer,\n c.byteOffset + index,\n this.length - index\n )\n );\n }\n /**\n * Get the number of utf-8 encoded bytes in this text. This does **not** include the NUL byte.\n *\n * @returns The number of bytes allocated for the text.\n */\n get length() {\n return super.length - 1;\n }\n /**\n * Write a utf-8 encoded string value starting at the specified index.\n *\n * @param index The index at which to start copying the string. Note that if this is not zero the bytes\n * before `index` will be left as-is. All bytes after `index` will be overwritten.\n * @param value The string value to set.\n */\n set(index, value) {\n const src = textEncoder.encode(value);\n const dstLength = src.byteLength + index;\n let c;\n let original;\n if (!isNull(this)) {\n c = getContent(this);\n const originalLength = Math.min(this.length, index);\n original = new Uint8Array(\n c.segment.buffer.slice(c.byteOffset, c.byteOffset + originalLength)\n );\n erase(this);\n }\n initList$1(ListElementSize.BYTE, dstLength + 1, this);\n c = getContent(this);\n const dst = new Uint8Array(c.segment.buffer, c.byteOffset, dstLength);\n if (original) {\n dst.set(original);\n }\n dst.set(src, index);\n }\n toString() {\n return this.get();\n }\n toJSON() {\n return this.get();\n }\n [Symbol.toPrimitive]() {\n return this.get();\n }\n [Symbol.toStringTag]() {\n return `Text_${super.toString()}`;\n }\n}\nfunction textFromPointerUnchecked(pointer) {\n return new Text(\n pointer.segment,\n pointer.byteOffset,\n pointer._capnp.depthLimit\n );\n}\n\nclass Struct extends Pointer {\n static _capnp = {\n displayName: \"Struct\"\n };\n /**\n * Create a new pointer to a struct.\n *\n * @param segment The segment the pointer resides in.\n * @param byteOffset The offset from the beginning of the segment to the beginning of the pointer data.\n * @param depthLimit The nesting depth limit for this object.\n * @param compositeIndex If set, then this pointer is actually a reference to a composite list\n * (`this._getPointerTargetType() === PointerType.LIST`), and this number is used as the index of the struct within\n * the list. It is not valid to call `initStruct()` on a composite struct – the struct contents are initialized when\n * the list pointer is initialized.\n */\n constructor(segment, byteOffset, depthLimit = MAX_DEPTH, compositeIndex) {\n super(segment, byteOffset, depthLimit);\n this._capnp.compositeIndex = compositeIndex;\n this._capnp.compositeList = compositeIndex !== undefined;\n }\n static [Symbol.toStringTag]() {\n return this._capnp.displayName;\n }\n [Symbol.toStringTag]() {\n return `Struct_${super.toString()}${this._capnp.compositeIndex === undefined ? \"\" : `,ci:${this._capnp.compositeIndex}`} > ${getContent(this).toString()}`;\n }\n}\nclass AnyStruct extends Struct {\n static _capnp = {\n displayName: \"AnyStruct\",\n id: \"0\",\n size: new ObjectSize(0, 0)\n };\n}\n\nclass FixedAnswer {\n struct() {\n return Promise.resolve(this.structSync());\n }\n}\n\nclass ErrorAnswer extends FixedAnswer {\n constructor(err) {\n super();\n this.err = err;\n }\n structSync() {\n throw this.err;\n }\n pipelineCall(_transform, _call) {\n return this;\n }\n pipelineClose(_transform) {\n throw this.err;\n }\n}\n\nclass ErrorClient {\n constructor(err) {\n this.err = err;\n }\n call(_call) {\n return new ErrorAnswer(this.err);\n }\n close() {\n throw this.err;\n }\n}\nfunction clientOrNull(client) {\n return client ?? new ErrorClient(new Error(RPC_NULL_CLIENT));\n}\n\nconst TMP_WORD = new DataView(new ArrayBuffer(8));\nfunction initStruct(size, s) {\n if (s._capnp.compositeIndex !== undefined) {\n throw new Error(format(PTR_INIT_COMPOSITE_STRUCT, s));\n }\n erase(s);\n const c = s.segment.allocate(getByteLength(size));\n const res = initPointer(c.segment, c.byteOffset, s);\n setStructPointer(res.offsetWords, size, res.pointer);\n}\nfunction initStructAt(index, StructClass, p) {\n const s = getPointerAs(index, StructClass, p);\n initStruct(StructClass._capnp.size, s);\n return s;\n}\nfunction checkPointerBounds(index, s) {\n const { pointerLength } = getSize(s);\n if (index < 0 || index >= pointerLength) {\n throw new Error(\n format(PTR_STRUCT_POINTER_OUT_OF_BOUNDS, s, index, pointerLength)\n );\n }\n}\nfunction getInterfaceClientOrNullAt(index, s) {\n return getInterfaceClientOrNull(getPointer(index, s));\n}\nfunction getInterfaceClientOrNull(p) {\n let client = null;\n const capId = getInterfacePointer(p);\n const { capTable } = p.segment.message._capnp;\n if (capTable && capId >= 0 && capId < capTable.length) {\n client = capTable[capId];\n }\n return clientOrNull(client);\n}\nfunction resize(dstSize, s) {\n const srcSize = getSize(s);\n const srcContent = getContent(s);\n const dstContent = s.segment.allocate(getByteLength(dstSize));\n dstContent.segment.copyWords(\n dstContent.byteOffset,\n srcContent.segment,\n srcContent.byteOffset,\n Math.min(getDataWordLength(srcSize), getDataWordLength(dstSize))\n );\n const res = initPointer(dstContent.segment, dstContent.byteOffset, s);\n setStructPointer(res.offsetWords, dstSize, res.pointer);\n for (let i = 0; i < Math.min(srcSize.pointerLength, dstSize.pointerLength); i++) {\n const srcPtr = new Pointer(\n srcContent.segment,\n srcContent.byteOffset + srcSize.dataByteLength + i * 8\n );\n if (isNull(srcPtr)) {\n continue;\n }\n const srcPtrTarget = followFars(srcPtr);\n const srcPtrContent = getContent(srcPtr);\n const dstPtr = new Pointer(\n dstContent.segment,\n dstContent.byteOffset + dstSize.dataByteLength + i * 8\n );\n if (getTargetPointerType(srcPtr) === PointerType.LIST && getTargetListElementSize(srcPtr) === ListElementSize.COMPOSITE) {\n srcPtrContent.byteOffset -= 8;\n }\n const r = initPointer(\n srcPtrContent.segment,\n srcPtrContent.byteOffset,\n dstPtr\n );\n const a = srcPtrTarget.segment.getUint8(srcPtrTarget.byteOffset) & 3;\n const b = srcPtrTarget.segment.getUint32(srcPtrTarget.byteOffset + 4);\n r.pointer.segment.setUint32(r.pointer.byteOffset, a | r.offsetWords << 2);\n r.pointer.segment.setUint32(r.pointer.byteOffset + 4, b);\n }\n srcContent.segment.fillZeroWords(\n srcContent.byteOffset,\n getWordLength(srcSize)\n );\n}\nfunction getAs(StructClass, s) {\n return new StructClass(\n s.segment,\n s.byteOffset,\n s._capnp.depthLimit,\n s._capnp.compositeIndex\n );\n}\nfunction getBit(bitOffset, s, defaultMask) {\n const byteOffset = Math.floor(bitOffset / 8);\n const bitMask = 1 << bitOffset % 8;\n checkDataBounds(byteOffset, 1, s);\n const ds = getDataSection(s);\n const v = ds.segment.getUint8(ds.byteOffset + byteOffset);\n if (defaultMask === undefined) {\n return (v & bitMask) !== 0;\n }\n const defaultValue = defaultMask.getUint8(0);\n return ((v ^ defaultValue) & bitMask) !== 0;\n}\nfunction getData(index, s, defaultValue) {\n checkPointerBounds(index, s);\n const ps = getPointerSection(s);\n ps.byteOffset += index * 8;\n const l = new Data(ps.segment, ps.byteOffset, s._capnp.depthLimit - 1);\n if (isNull(l)) {\n if (defaultValue) {\n copyFrom(defaultValue, l);\n } else {\n initList$1(ListElementSize.BYTE, 0, l);\n }\n }\n return l;\n}\nfunction getDataSection(s) {\n return getContent(s);\n}\nfunction getFloat32(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 4, s);\n const ds = getDataSection(s);\n if (defaultMask === undefined) {\n return ds.segment.getFloat32(ds.byteOffset + byteOffset);\n }\n const v = ds.segment.getUint32(ds.byteOffset + byteOffset) ^ defaultMask.getUint32(0, true);\n TMP_WORD.setUint32(0, v, NATIVE_LITTLE_ENDIAN);\n return TMP_WORD.getFloat32(0, NATIVE_LITTLE_ENDIAN);\n}\nfunction getFloat64(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 8, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n const lo = ds.segment.getUint32(ds.byteOffset + byteOffset) ^ defaultMask.getUint32(0, true);\n const hi = ds.segment.getUint32(ds.byteOffset + byteOffset + 4) ^ defaultMask.getUint32(4, true);\n TMP_WORD.setUint32(0, lo, NATIVE_LITTLE_ENDIAN);\n TMP_WORD.setUint32(4, hi, NATIVE_LITTLE_ENDIAN);\n return TMP_WORD.getFloat64(0, NATIVE_LITTLE_ENDIAN);\n }\n return ds.segment.getFloat64(ds.byteOffset + byteOffset);\n}\nfunction getInt16(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 2, s);\n const ds = getDataSection(s);\n if (defaultMask === undefined) {\n return ds.segment.getInt16(ds.byteOffset + byteOffset);\n }\n const v = ds.segment.getUint16(ds.byteOffset + byteOffset) ^ defaultMask.getUint16(0, true);\n TMP_WORD.setUint16(0, v, NATIVE_LITTLE_ENDIAN);\n return TMP_WORD.getInt16(0, NATIVE_LITTLE_ENDIAN);\n}\nfunction getInt32(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 4, s);\n const ds = getDataSection(s);\n if (defaultMask === undefined) {\n return ds.segment.getInt32(ds.byteOffset + byteOffset);\n }\n const v = ds.segment.getUint32(ds.byteOffset + byteOffset) ^ defaultMask.getUint16(0, true);\n TMP_WORD.setUint32(0, v, NATIVE_LITTLE_ENDIAN);\n return TMP_WORD.getInt32(0, NATIVE_LITTLE_ENDIAN);\n}\nfunction getInt64(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 8, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n const lo = ds.segment.getUint32(ds.byteOffset + byteOffset) ^ defaultMask.getUint32(0, true);\n const hi = ds.segment.getUint32(ds.byteOffset + byteOffset + 4) ^ defaultMask.getUint32(4, true);\n TMP_WORD.setUint32(NATIVE_LITTLE_ENDIAN ? 0 : 4, lo, NATIVE_LITTLE_ENDIAN);\n TMP_WORD.setUint32(NATIVE_LITTLE_ENDIAN ? 4 : 0, hi, NATIVE_LITTLE_ENDIAN);\n return TMP_WORD.getBigInt64(0, NATIVE_LITTLE_ENDIAN);\n }\n return ds.segment.getInt64(ds.byteOffset + byteOffset);\n}\nfunction getInt8(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 1, s);\n const ds = getDataSection(s);\n if (defaultMask === undefined) {\n return ds.segment.getInt8(ds.byteOffset + byteOffset);\n }\n const v = ds.segment.getUint8(ds.byteOffset + byteOffset) ^ defaultMask.getUint8(0);\n TMP_WORD.setUint8(0, v);\n return TMP_WORD.getInt8(0);\n}\nfunction getList(index, ListClass, s, defaultValue) {\n checkPointerBounds(index, s);\n const ps = getPointerSection(s);\n ps.byteOffset += index * 8;\n const l = new ListClass(ps.segment, ps.byteOffset, s._capnp.depthLimit - 1);\n if (isNull(l)) {\n if (defaultValue) {\n copyFrom(defaultValue, l);\n } else {\n initList$1(ListClass._capnp.size, 0, l, ListClass._capnp.compositeSize);\n }\n } else if (ListClass._capnp.compositeSize !== undefined) {\n const srcSize = getTargetCompositeListSize(l);\n const dstSize = ListClass._capnp.compositeSize;\n if (dstSize.dataByteLength > srcSize.dataByteLength || dstSize.pointerLength > srcSize.pointerLength) {\n const srcContent = getContent(l);\n const srcLength = getTargetListLength(l);\n const dstContent = l.segment.allocate(\n getByteLength(dstSize) * srcLength + 8\n );\n const res = initPointer(dstContent.segment, dstContent.byteOffset, l);\n setListPointer(\n res.offsetWords,\n ListClass._capnp.size,\n srcLength,\n res.pointer,\n dstSize\n );\n setStructPointer(srcLength, dstSize, dstContent);\n dstContent.byteOffset += 8;\n for (let i = 0; i < srcLength; i++) {\n const srcElementOffset = srcContent.byteOffset + i * getByteLength(srcSize);\n const dstElementOffset = dstContent.byteOffset + i * getByteLength(dstSize);\n dstContent.segment.copyWords(\n dstElementOffset,\n srcContent.segment,\n srcElementOffset,\n getWordLength(srcSize)\n );\n for (let j = 0; j < srcSize.pointerLength; j++) {\n const srcPtr = new Pointer(\n srcContent.segment,\n srcElementOffset + srcSize.dataByteLength + j * 8\n );\n const dstPtr = new Pointer(\n dstContent.segment,\n dstElementOffset + dstSize.dataByteLength + j * 8\n );\n const srcPtrTarget = followFars(srcPtr);\n const srcPtrContent = getContent(srcPtr);\n if (getTargetPointerType(srcPtr) === PointerType.LIST && getTargetListElementSize(srcPtr) === ListElementSize.COMPOSITE) {\n srcPtrContent.byteOffset -= 8;\n }\n const r = initPointer(\n srcPtrContent.segment,\n srcPtrContent.byteOffset,\n dstPtr\n );\n const a = srcPtrTarget.segment.getUint8(srcPtrTarget.byteOffset) & 3;\n const b = srcPtrTarget.segment.getUint32(srcPtrTarget.byteOffset + 4);\n r.pointer.segment.setUint32(\n r.pointer.byteOffset,\n a | r.offsetWords << 2\n );\n r.pointer.segment.setUint32(r.pointer.byteOffset + 4, b);\n }\n }\n srcContent.segment.fillZeroWords(\n srcContent.byteOffset,\n getWordLength(srcSize) * srcLength\n );\n }\n }\n return l;\n}\nfunction getPointer(index, s) {\n checkPointerBounds(index, s);\n const ps = getPointerSection(s);\n ps.byteOffset += index * 8;\n return new Pointer(ps.segment, ps.byteOffset, s._capnp.depthLimit - 1);\n}\nfunction getPointerAs(index, PointerClass, s) {\n checkPointerBounds(index, s);\n const ps = getPointerSection(s);\n ps.byteOffset += index * 8;\n return new PointerClass(ps.segment, ps.byteOffset, s._capnp.depthLimit - 1);\n}\nfunction getPointerSection(s) {\n const ps = getContent(s);\n ps.byteOffset += padToWord$1(getSize(s).dataByteLength);\n return ps;\n}\nfunction getSize(s) {\n if (s._capnp.compositeIndex !== undefined) {\n const c = getContent(s, true);\n c.byteOffset -= 8;\n return getStructSize(c);\n }\n return getTargetStructSize(s);\n}\nfunction getStruct(index, StructClass, s, defaultValue) {\n const t = getPointerAs(index, StructClass, s);\n if (isNull(t)) {\n if (defaultValue) {\n copyFrom(defaultValue, t);\n } else {\n initStruct(StructClass._capnp.size, t);\n }\n } else {\n validate(PointerType.STRUCT, t);\n const ts = getTargetStructSize(t);\n if (ts.dataByteLength < StructClass._capnp.size.dataByteLength || ts.pointerLength < StructClass._capnp.size.pointerLength) {\n resize(StructClass._capnp.size, t);\n }\n }\n return t;\n}\nfunction getText(index, s, defaultValue) {\n const t = Text.fromPointer(getPointer(index, s));\n if (isNull(t) && defaultValue) {\n t.set(0, defaultValue);\n }\n return t.get(0);\n}\nfunction getUint16(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 2, s);\n const ds = getDataSection(s);\n if (defaultMask === undefined) {\n return ds.segment.getUint16(ds.byteOffset + byteOffset);\n }\n return ds.segment.getUint16(ds.byteOffset + byteOffset) ^ defaultMask.getUint16(0, true);\n}\nfunction getUint32(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 4, s);\n const ds = getDataSection(s);\n if (defaultMask === undefined) {\n return ds.segment.getUint32(ds.byteOffset + byteOffset);\n }\n return ds.segment.getUint32(ds.byteOffset + byteOffset) ^ defaultMask.getUint32(0, true);\n}\nfunction getUint64(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 8, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n const lo = ds.segment.getUint32(ds.byteOffset + byteOffset) ^ defaultMask.getUint32(0, true);\n const hi = ds.segment.getUint32(ds.byteOffset + byteOffset + 4) ^ defaultMask.getUint32(4, true);\n TMP_WORD.setUint32(NATIVE_LITTLE_ENDIAN ? 0 : 4, lo, NATIVE_LITTLE_ENDIAN);\n TMP_WORD.setUint32(NATIVE_LITTLE_ENDIAN ? 4 : 0, hi, NATIVE_LITTLE_ENDIAN);\n return TMP_WORD.getBigUint64(0, NATIVE_LITTLE_ENDIAN);\n }\n return ds.segment.getUint64(ds.byteOffset + byteOffset);\n}\nfunction getUint8(byteOffset, s, defaultMask) {\n checkDataBounds(byteOffset, 1, s);\n const ds = getDataSection(s);\n if (defaultMask === undefined) {\n return ds.segment.getUint8(ds.byteOffset + byteOffset);\n }\n return ds.segment.getUint8(ds.byteOffset + byteOffset) ^ defaultMask.getUint8(0);\n}\nfunction initData(index, length, s) {\n checkPointerBounds(index, s);\n const ps = getPointerSection(s);\n ps.byteOffset += index * 8;\n const l = new Data(ps.segment, ps.byteOffset, s._capnp.depthLimit - 1);\n erase(l);\n initList$1(ListElementSize.BYTE, length, l);\n return l;\n}\nfunction initList(index, ListClass, length, s) {\n checkPointerBounds(index, s);\n const ps = getPointerSection(s);\n ps.byteOffset += index * 8;\n const l = new ListClass(ps.segment, ps.byteOffset, s._capnp.depthLimit - 1);\n erase(l);\n initList$1(ListClass._capnp.size, length, l, ListClass._capnp.compositeSize);\n return l;\n}\nfunction setBit(bitOffset, value, s, defaultMask) {\n const byteOffset = Math.floor(bitOffset / 8);\n const bitMask = 1 << bitOffset % 8;\n checkDataBounds(byteOffset, 1, s);\n const ds = getDataSection(s);\n const b = ds.segment.getUint8(ds.byteOffset + byteOffset);\n if (defaultMask !== undefined) {\n value = (defaultMask.getUint8(0) & bitMask) === 0 ? value : !value;\n }\n ds.segment.setUint8(\n ds.byteOffset + byteOffset,\n value ? b | bitMask : b & ~bitMask\n );\n}\nfunction setFloat32(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 4, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n TMP_WORD.setFloat32(0, value, NATIVE_LITTLE_ENDIAN);\n const v = TMP_WORD.getUint32(0, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint32(0, true);\n ds.segment.setUint32(ds.byteOffset + byteOffset, v);\n return;\n }\n ds.segment.setFloat32(ds.byteOffset + byteOffset, value);\n}\nfunction setFloat64(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 8, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n TMP_WORD.setFloat64(0, value, NATIVE_LITTLE_ENDIAN);\n const lo = TMP_WORD.getUint32(0, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint32(0, true);\n const hi = TMP_WORD.getUint32(4, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint32(4, true);\n ds.segment.setUint32(ds.byteOffset + byteOffset, lo);\n ds.segment.setUint32(ds.byteOffset + byteOffset + 4, hi);\n return;\n }\n ds.segment.setFloat64(ds.byteOffset + byteOffset, value);\n}\nfunction setInt16(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 2, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n TMP_WORD.setInt16(0, value, NATIVE_LITTLE_ENDIAN);\n const v = TMP_WORD.getUint16(0, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint16(0, true);\n ds.segment.setUint16(ds.byteOffset + byteOffset, v);\n return;\n }\n ds.segment.setInt16(ds.byteOffset + byteOffset, value);\n}\nfunction setInt32(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 4, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n TMP_WORD.setInt32(0, value, NATIVE_LITTLE_ENDIAN);\n const v = TMP_WORD.getUint32(0, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint32(0, true);\n ds.segment.setUint32(ds.byteOffset + byteOffset, v);\n return;\n }\n ds.segment.setInt32(ds.byteOffset + byteOffset, value);\n}\nfunction setInt64(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 8, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n TMP_WORD.setBigInt64(0, value, NATIVE_LITTLE_ENDIAN);\n const lo = TMP_WORD.getUint32(NATIVE_LITTLE_ENDIAN ? 0 : 4, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint32(0, true);\n const hi = TMP_WORD.getUint32(NATIVE_LITTLE_ENDIAN ? 4 : 0, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint32(4, true);\n ds.segment.setUint32(ds.byteOffset + byteOffset, lo);\n ds.segment.setUint32(ds.byteOffset + byteOffset + 4, hi);\n return;\n }\n ds.segment.setInt64(ds.byteOffset + byteOffset, value);\n}\nfunction setInt8(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 1, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n TMP_WORD.setInt8(0, value);\n const v = TMP_WORD.getUint8(0) ^ defaultMask.getUint8(0);\n ds.segment.setUint8(ds.byteOffset + byteOffset, v);\n return;\n }\n ds.segment.setInt8(ds.byteOffset + byteOffset, value);\n}\nfunction setText(index, value, s) {\n Text.fromPointer(getPointer(index, s)).set(0, value);\n}\nfunction setUint16(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 2, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n value ^= defaultMask.getUint16(0, true);\n }\n ds.segment.setUint16(ds.byteOffset + byteOffset, value);\n}\nfunction setUint32(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 4, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n value ^= defaultMask.getUint32(0, true);\n }\n ds.segment.setUint32(ds.byteOffset + byteOffset, value);\n}\nfunction setUint64(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 8, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n TMP_WORD.setBigUint64(0, value, NATIVE_LITTLE_ENDIAN);\n const lo = TMP_WORD.getUint32(NATIVE_LITTLE_ENDIAN ? 0 : 4, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint32(0, true);\n const hi = TMP_WORD.getUint32(NATIVE_LITTLE_ENDIAN ? 4 : 0, NATIVE_LITTLE_ENDIAN) ^ defaultMask.getUint32(4, true);\n ds.segment.setUint32(ds.byteOffset + byteOffset, lo);\n ds.segment.setUint32(ds.byteOffset + byteOffset + 4, hi);\n return;\n }\n ds.segment.setUint64(ds.byteOffset + byteOffset, value);\n}\nfunction setUint8(byteOffset, value, s, defaultMask) {\n checkDataBounds(byteOffset, 1, s);\n const ds = getDataSection(s);\n if (defaultMask !== undefined) {\n value ^= defaultMask.getUint8(0);\n }\n ds.segment.setUint8(ds.byteOffset + byteOffset, value);\n}\nfunction testWhich(name, found, wanted, s) {\n if (found !== wanted) {\n throw new Error(format(PTR_INVALID_UNION_ACCESS, s, name, found, wanted));\n }\n}\nfunction checkDataBounds(byteOffset, byteLength, s) {\n const { dataByteLength } = getSize(s);\n if (byteOffset < 0 || byteLength < 0 || byteOffset + byteLength > dataByteLength) {\n throw new Error(\n format(\n PTR_STRUCT_DATA_OUT_OF_BOUNDS,\n s,\n byteLength,\n byteOffset,\n dataByteLength\n )\n );\n }\n}\n\nexport { Pointer as $, setInt16 as A, getInt32 as B, setInt32 as C, getInt64 as D, setInt64 as E, getFloat32 as F, setFloat32 as G, getFloat64 as H, setFloat64 as I, getData as J, initData as K, List as L, ListElementSize as M, format as N, ObjectSize as O, SEG_NOT_WORD_ALIGNED as P, DEFAULT_BUFFER_SIZE as Q, SEG_ID_OUT_OF_BOUNDS as R, Struct as S, padToWord$1 as T, SEG_GET_NON_ZERO_SINGLE as U, MIN_SINGLE_SEGMENT_GROWTH as V, assertNever as W, MSG_PACK_NOT_WORD_ALIGNED as X, PACK_SPAN_THRESHOLD as Y, MAX_SEGMENT_LENGTH as Z, SEG_SIZE_OVERFLOW as _, adopt as a, setListPointer as a$, NATIVE_LITTLE_ENDIAN as a0, SEG_REPLACEMENT_BUFFER_TOO_SMALL as a1, DEFAULT_TRAVERSE_LIMIT as a2, MSG_INVALID_FRAME_HEADER as a3, MSG_SEGMENT_TOO_SMALL as a4, MSG_SEGMENT_OUT_OF_BOUNDS as a5, dumpBuffer as a6, validate as a7, PointerType as a8, getTargetStructSize as a9, getCapabilityId as aA, getContent as aB, getDataSection as aC, getFarSegmentId as aD, getInterfaceClientOrNullAt as aE, getInterfacePointer as aF, getListByteLength as aG, getListElementByteLength as aH, getListElementSize as aI, getListLength as aJ, getOffsetWords as aK, getPointerAs as aL, getPointerSection as aM, getPointerType as aN, getSize as aO, getStructDataWords as aP, getStructPointerLength as aQ, getStructSize as aR, getTargetCompositeListSize as aS, getTargetCompositeListTag as aT, getTargetListElementSize as aU, getTargetListLength as aV, initPointer as aW, isDoubleFar as aX, relocateTo as aY, setFarPointer as aZ, setInterfacePointer as a_, resize as aa, initStruct as ab, MAX_DEPTH as ac, getTargetPointerType as ad, FixedAnswer as ae, getInterfaceClientOrNull as af, ErrorAnswer as ag, RPC_CALL_QUEUE_FULL as ah, INVARIANT_UNREACHABLE_CODE as ai, RPC_QUEUE_CALL_CANCEL as aj, RPC_NULL_CLIENT as ak, RPC_METHOD_ERROR as al, RPC_METHOD_NOT_IMPLEMENTED as am, pad as an, PointerAllocationResult as ao, add as ap, checkDataBounds as aq, checkPointerBounds as ar, copyFromInterface as as, copyFromList as at, copyFromStruct as au, dump as av, erase as aw, erasePointer as ax, followFar as ay, followFars as az, getUint16 as b, setStructPointer as b0, trackPointerAllocation as b1, Data as b2, Text as b3, ErrorClient as b4, RPC_ZERO_REF as b5, RPC_ERROR as b6, RPC_FULFILL_ALREADY_CALLED as b7, NOT_IMPLEMENTED as b8, RPC_IMPORT_CLOSED as b9, AnyStruct as ba, RPC_QUESTION_ID_REUSED as bb, RPC_NO_MAIN_INTERFACE as bc, RPC_BAD_TARGET as bd, RPC_UNKNOWN_CAP_DESCRIPTOR as be, RPC_FINISH_UNKNOWN_ANSWER as bf, RPC_RETURN_FOR_UNKNOWN_QUESTION as bg, RPC_UNKNOWN_ANSWER_ID as bh, RPC_UNKNOWN_EXPORT_ID as bi, Orphan as bj, clientOrNull as bk, copyFrom as c, disown as d, getUint32 as e, setUint32 as f, getPointer as g, getBit as h, isNull as i, setBit as j, getStruct as k, initStructAt as l, getList as m, initList as n, getUint8 as o, setUint8 as p, getText as q, setText as r, setUint16 as s, testWhich as t, getUint64 as u, setUint64 as v, getAs as w, getInt8 as x, setInt8 as y, getInt16 as z };\n","import { L as List, M as ListElementSize, c as copyFrom } from './capnp-es.0-_cOx6D.mjs';\n\nfunction CompositeList(CompositeClass) {\n return class extends List {\n static _capnp = {\n compositeSize: CompositeClass._capnp.size,\n displayName: `List<${CompositeClass._capnp.displayName}>`,\n size: ListElementSize.COMPOSITE\n };\n get(index) {\n return new CompositeClass(\n this.segment,\n this.byteOffset,\n this._capnp.depthLimit - 1,\n index\n );\n }\n set(index, value) {\n copyFrom(value, this.get(index));\n }\n [Symbol.toStringTag]() {\n return `Composite_${super.toString()},cls:${CompositeClass.toString()}`;\n }\n };\n}\n\nfunction _makePrimitiveMaskFn(byteLength, setter) {\n return (x) => {\n const dv = new DataView(new ArrayBuffer(byteLength));\n setter.call(dv, 0, x, true);\n return dv;\n };\n}\nconst getFloat32Mask = _makePrimitiveMaskFn(\n 4,\n DataView.prototype.setFloat32\n);\nconst getFloat64Mask = _makePrimitiveMaskFn(\n 8,\n DataView.prototype.setFloat64\n);\nconst getInt16Mask = _makePrimitiveMaskFn(\n 2,\n DataView.prototype.setInt16\n);\nconst getInt32Mask = _makePrimitiveMaskFn(\n 4,\n DataView.prototype.setInt32\n);\nconst getInt64Mask = _makePrimitiveMaskFn(\n 8,\n DataView.prototype.setBigInt64\n);\nconst getInt8Mask = _makePrimitiveMaskFn(1, DataView.prototype.setInt8);\nconst getUint16Mask = _makePrimitiveMaskFn(\n 2,\n DataView.prototype.setUint16\n);\nconst getUint32Mask = _makePrimitiveMaskFn(\n 4,\n DataView.prototype.setUint32\n);\nconst getUint64Mask = _makePrimitiveMaskFn(\n 8,\n DataView.prototype.setBigUint64\n);\nconst getUint8Mask = _makePrimitiveMaskFn(\n 1,\n DataView.prototype.setUint8\n);\nfunction getBitMask(value, bitOffset) {\n const dv = new DataView(new ArrayBuffer(1));\n if (!value) {\n return dv;\n }\n dv.setUint8(0, 1 << bitOffset % 8);\n return dv;\n}\n\nexport { CompositeList as C, getUint8Mask as a, getUint16Mask as b, getFloat32Mask as c, getFloat64Mask as d, getInt16Mask as e, getInt32Mask as f, getBitMask as g, getInt64Mask as h, getInt8Mask as i, getUint32Mask as j, getUint64Mask as k };\n","import { N as format, P as SEG_NOT_WORD_ALIGNED, Q as DEFAULT_BUFFER_SIZE, R as SEG_ID_OUT_OF_BOUNDS, T as padToWord, U as SEG_GET_NON_ZERO_SINGLE, V as MIN_SINGLE_SEGMENT_GROWTH, W as assertNever, X as MSG_PACK_NOT_WORD_ALIGNED, Y as PACK_SPAN_THRESHOLD, Z as MAX_SEGMENT_LENGTH, _ as SEG_SIZE_OVERFLOW, $ as Pointer, a0 as NATIVE_LITTLE_ENDIAN, a1 as SEG_REPLACEMENT_BUFFER_TOO_SMALL, a2 as DEFAULT_TRAVERSE_LIMIT, a3 as MSG_INVALID_FRAME_HEADER, a4 as MSG_SEGMENT_TOO_SMALL, a5 as MSG_SEGMENT_OUT_OF_BOUNDS, a6 as dumpBuffer, a7 as validate, a8 as PointerType, a9 as getTargetStructSize, aa as resize, ab as initStruct, c as copyFrom } from './capnp-es.0-_cOx6D.mjs';\n\nvar ArenaKind = /* @__PURE__ */ ((ArenaKind2) => {\n ArenaKind2[ArenaKind2[\"SINGLE_SEGMENT\"] = 0] = \"SINGLE_SEGMENT\";\n ArenaKind2[ArenaKind2[\"MULTI_SEGMENT\"] = 1] = \"MULTI_SEGMENT\";\n return ArenaKind2;\n})(ArenaKind || {});\n\nclass ArenaAllocationResult {\n /**\n * The newly allocated buffer. This buffer might be a copy of an existing segment's buffer with free space appended.\n */\n buffer;\n /**\n * The id of the newly-allocated segment.\n */\n id;\n constructor(id, buffer) {\n this.id = id;\n this.buffer = buffer;\n }\n}\n\nclass MultiSegmentArena {\n constructor(buffers = [new ArrayBuffer(DEFAULT_BUFFER_SIZE)]) {\n this.buffers = buffers;\n let i = buffers.length;\n while (--i >= 0) {\n if ((buffers[i].byteLength & 7) !== 0) {\n throw new Error(format(SEG_NOT_WORD_ALIGNED, buffers[i].byteLength));\n }\n }\n }\n static allocate = allocate$2;\n static getBuffer = getBuffer$2;\n static getNumSegments = getNumSegments$2;\n kind = ArenaKind.MULTI_SEGMENT;\n toString() {\n return format(\"MultiSegmentArena_segments:%d\", getNumSegments$2(this));\n }\n}\nfunction allocate$2(minSize, m) {\n const b = new ArrayBuffer(padToWord(Math.max(minSize, DEFAULT_BUFFER_SIZE)));\n m.buffers.push(b);\n return new ArenaAllocationResult(m.buffers.length - 1, b);\n}\nfunction getBuffer$2(id, m) {\n if (id < 0 || id >= m.buffers.length) {\n throw new Error(format(SEG_ID_OUT_OF_BOUNDS, id));\n }\n return m.buffers[id];\n}\nfunction getNumSegments$2(m) {\n return m.buffers.length;\n}\n\nclass SingleSegmentArena {\n static allocate = allocate$1;\n static getBuffer = getBuffer$1;\n static getNumSegments = getNumSegments$1;\n buffer;\n kind = ArenaKind.SINGLE_SEGMENT;\n constructor(buffer = new ArrayBuffer(DEFAULT_BUFFER_SIZE)) {\n if ((buffer.byteLength & 7) !== 0) {\n throw new Error(format(SEG_NOT_WORD_ALIGNED, buffer.byteLength));\n }\n this.buffer = buffer;\n }\n toString() {\n return format(\"SingleSegmentArena_len:%x\", this.buffer.byteLength);\n }\n}\nfunction allocate$1(minSize, segments, s) {\n const srcBuffer = segments.length > 0 ? segments[0].buffer : s.buffer;\n minSize = minSize < MIN_SINGLE_SEGMENT_GROWTH ? MIN_SINGLE_SEGMENT_GROWTH : padToWord(minSize);\n s.buffer = new ArrayBuffer(srcBuffer.byteLength + minSize);\n new Float64Array(s.buffer).set(new Float64Array(srcBuffer));\n return new ArenaAllocationResult(0, s.buffer);\n}\nfunction getBuffer$1(id, s) {\n if (id !== 0) throw new Error(format(SEG_GET_NON_ZERO_SINGLE, id));\n return s.buffer;\n}\nfunction getNumSegments$1() {\n return 1;\n}\n\nclass Arena {\n static allocate = allocate;\n static copy = copy$1;\n static getBuffer = getBuffer;\n static getNumSegments = getNumSegments;\n}\nfunction allocate(minSize, segments, a) {\n switch (a.kind) {\n case ArenaKind.MULTI_SEGMENT: {\n return MultiSegmentArena.allocate(minSize, a);\n }\n case ArenaKind.SINGLE_SEGMENT: {\n return SingleSegmentArena.allocate(minSize, segments, a);\n }\n default: {\n return assertNever(a);\n }\n }\n}\nfunction copy$1(a) {\n switch (a.kind) {\n case ArenaKind.MULTI_SEGMENT: {\n let i = a.buffers.length;\n const buffers = Array.from({ length: i });\n while (--i >= 0) {\n buffers[i] = a.buffers[i].slice(0);\n }\n return new MultiSegmentArena(buffers);\n }\n case ArenaKind.SINGLE_SEGMENT: {\n return new SingleSegmentArena(a.buffer.slice(0));\n }\n default: {\n return assertNever(a);\n }\n }\n}\nfunction getBuffer(id, a) {\n switch (a.kind) {\n case ArenaKind.MULTI_SEGMENT: {\n return MultiSegmentArena.getBuffer(id, a);\n }\n case ArenaKind.SINGLE_SEGMENT: {\n return SingleSegmentArena.getBuffer(id, a);\n }\n default: {\n return assertNever(a);\n }\n }\n}\nfunction getNumSegments(a) {\n switch (a.kind) {\n case ArenaKind.MULTI_SEGMENT: {\n return MultiSegmentArena.getNumSegments(a);\n }\n case ArenaKind.SINGLE_SEGMENT: {\n return SingleSegmentArena.getNumSegments();\n }\n default: {\n return assertNever(a);\n }\n }\n}\n\nfunction getHammingWeight(x) {\n let w = x - (x >> 1 & 1431655765);\n w = (w & 858993459) + (w >> 2 & 858993459);\n return (w + (w >> 4) & 252645135) * 16843009 >> 24;\n}\nfunction getTagByte(a, b, c, d, e, f, g, h) {\n return (a === 0 ? 0 : 1) | (b === 0 ? 0 : 2) | (c === 0 ? 0 : 4) | (d === 0 ? 0 : 8) | (e === 0 ? 0 : 16) | (f === 0 ? 0 : 32) | (g === 0 ? 0 : 64) | (h === 0 ? 0 : 128);\n}\nfunction getUnpackedByteLength(packed) {\n const p = new Uint8Array(packed);\n let wordCount = 0;\n let lastTag = 119 /* NONZERO_NONSPAN */;\n for (let i = 0; i < p.byteLength; ) {\n const tag = p[i];\n if (lastTag === 0 /* ZERO */) {\n wordCount += tag;\n i++;\n lastTag = 119 /* NONZERO_NONSPAN */;\n } else if (lastTag === 255 /* SPAN */) {\n wordCount += tag;\n i += tag * 8 + 1;\n lastTag = 119 /* NONZERO_NONSPAN */;\n } else {\n wordCount++;\n i += getHammingWeight(tag) + 1;\n lastTag = tag;\n }\n }\n return wordCount * 8;\n}\nfunction getZeroByteCount(a, b, c, d, e, f, g, h) {\n return (a === 0 ? 1 : 0) + (b === 0 ? 1 : 0) + (c === 0 ? 1 : 0) + (d === 0 ? 1 : 0) + (e === 0 ? 1 : 0) + (f === 0 ? 1 : 0) + (g === 0 ? 1 : 0) + (h === 0 ? 1 : 0);\n}\nfunction pack(unpacked, byteOffset = 0, byteLength) {\n if (unpacked.byteLength % 8 !== 0) {\n throw new Error(MSG_PACK_NOT_WORD_ALIGNED);\n }\n const src = new Uint8Array(unpacked, byteOffset, byteLength);\n const dst = [];\n let lastTag = 119 /* NONZERO_NONSPAN */;\n let spanWordCountOffset = 0;\n let rangeWordCount = 0;\n for (let srcByteOffset = 0; srcByteOffset < src.byteLength; srcByteOffset += 8) {\n const a = src[srcByteOffset];\n const b = src[srcByteOffset + 1];\n const c = src[srcByteOffset + 2];\n const d = src[srcByteOffset + 3];\n const e = src[srcByteOffset + 4];\n const f = src[srcByteOffset + 5];\n const g = src[srcByteOffset + 6];\n const h = src[srcByteOffset + 7];\n const tag = getTagByte(a, b, c, d, e, f, g, h);\n let skipWriteWord = true;\n switch (lastTag) {\n case 0 /* ZERO */: {\n if (tag !== 0 /* ZERO */ || rangeWordCount >= 255) {\n dst.push(rangeWordCount);\n rangeWordCount = 0;\n skipWriteWord = false;\n } else {\n rangeWordCount++;\n }\n break;\n }\n case 255 /* SPAN */: {\n const zeroCount = getZeroByteCount(a, b, c, d, e, f, g, h);\n if (zeroCount >= PACK_SPAN_THRESHOLD || rangeWordCount >= 255) {\n dst[spanWordCountOffset] = rangeWordCount;\n rangeWordCount = 0;\n skipWriteWord = false;\n } else {\n dst.push(a, b, c, d, e, f, g, h);\n rangeWordCount++;\n }\n break;\n }\n default: {\n skipWriteWord = false;\n break;\n }\n }\n if (skipWriteWord) {\n continue;\n }\n dst.push(tag);\n lastTag = tag;\n if (a !== 0) dst.push(a);\n if (b !== 0) dst.push(b);\n if (c !== 0) dst.push(c);\n if (d !== 0) dst.push(d);\n if (e !== 0) dst.push(e);\n if (f !== 0) dst.push(f);\n if (g !== 0) dst.push(g);\n if (h !== 0) dst.push(h);\n if (tag === 255 /* SPAN */) {\n spanWordCountOffset = dst.length;\n dst.push(0);\n }\n }\n if (lastTag === 0 /* ZERO */) {\n dst.push(rangeWordCount);\n } else if (lastTag === 255 /* SPAN */) {\n dst[spanWordCountOffset] = rangeWordCount;\n }\n return new Uint8Array(dst).buffer;\n}\nfunction unpack(packed) {\n const src = new Uint8Array(packed);\n const dst = new Uint8Array(new ArrayBuffer(getUnpackedByteLength(packed)));\n let lastTag = 119 /* NONZERO_NONSPAN */;\n for (let srcByteOffset = 0, dstByteOffset = 0; srcByteOffset < src.byteLength; ) {\n const tag = src[srcByteOffset];\n if (lastTag === 0 /* ZERO */) {\n dstByteOffset += tag * 8;\n srcByteOffset++;\n lastTag = 119 /* NONZERO_NONSPAN */;\n } else if (lastTag === 255 /* SPAN */) {\n const spanByteLength = tag * 8;\n dst.set(\n src.subarray(srcByteOffset + 1, srcByteOffset + 1 + spanByteLength),\n dstByteOffset\n );\n dstByteOffset += spanByteLength;\n srcByteOffset += 1 + spanByteLength;\n lastTag = 119 /* NONZERO_NONSPAN */;\n } else {\n srcByteOffset++;\n for (let i = 1; i <= 128; i <<= 1) {\n if ((tag & i) !== 0) {\n dst[dstByteOffset] = src[srcByteOffset++];\n }\n dstByteOffset++;\n }\n lastTag = tag;\n }\n }\n return dst.buffer;\n}\n\nclass Segment {\n constructor(id, message, buffer, byteLength = 0) {\n this.id = id;\n this.message = message;\n this.message = message;\n this.buffer = buffer;\n this._dv = new DataView(buffer);\n this.byteOffset = 0;\n this.byteLength = byteLength;\n }\n buffer;\n /** The number of bytes currently allocated in the segment. */\n byteLength;\n /**\n * This value should always be zero. It's only here to satisfy the DataView interface.\n *\n * In the future the Segment implementation (or a child class) may allow accessing the buffer from a nonzero offset,\n * but that adds a lot of extra arithmetic.\n */\n byteOffset;\n [Symbol.toStringTag] = \"Segment\";\n _dv;\n /**\n * Attempt to allocate the requested number of bytes in this segment. If this segment is full this method will return\n * a pointer to freshly allocated space in another segment from the same message.\n *\n * @param byteLength The number of bytes to allocate, will be rounded up to the nearest word.\n * @returns A pointer to the newly allocated space.\n */\n allocate(byteLength) {\n let segment = this;\n byteLength = padToWord(byteLength);\n if (byteLength > MAX_SEGMENT_LENGTH - 8) {\n throw new Error(format(SEG_SIZE_OVERFLOW, byteLength));\n }\n if (!segment.hasCapacity(byteLength)) {\n segment = segment.message.allocateSegment(byteLength);\n }\n const byteOffset = segment.byteLength;\n segment.byteLength += byteLength;\n return new Pointer(segment, byteOffset);\n }\n /**\n * Quickly copy a word (8 bytes) from `srcSegment` into this one at the given offset.\n *\n * @param byteOffset The offset to write the word to.\n * @param srcSegment The segment to copy the word from.\n * @param srcByteOffset The offset from the start of `srcSegment` to copy from.\n */\n copyWord(byteOffset, srcSegment, srcByteOffset) {\n const value = srcSegment._dv.getFloat64(\n srcByteOffset,\n NATIVE_LITTLE_ENDIAN\n );\n this._dv.setFloat64(byteOffset, value, NATIVE_LITTLE_ENDIAN);\n }\n /**\n * Quickly copy words from `srcSegment` into this one.\n *\n * @param byteOffset The offset to start copying into.\n * @param srcSegment The segment to copy from.\n * @param srcByteOffset The start offset to copy from.\n * @param wordLength The number of words to copy.\n */\n copyWords(byteOffset, srcSegment, srcByteOffset, wordLength) {\n const dst = new Float64Array(this.buffer, byteOffset, wordLength);\n const src = new Float64Array(srcSegment.buffer, srcByteOffset, wordLength);\n dst.set(src);\n }\n /**\n * Quickly fill a number of words in the buffer with zeroes.\n *\n * @param byteOffset The first byte to set to zero.\n * @param wordLength The number of words (not bytes!) to zero out.\n */\n fillZeroWords(byteOffset, wordLength) {\n new Float64Array(this.buffer, byteOffset, wordLength).fill(0);\n }\n getBigInt64(byteOffset, littleEndian) {\n return this._dv.getBigInt64(byteOffset, littleEndian);\n }\n getBigUint64(byteOffset, littleEndian) {\n return this._dv.getBigUint64(byteOffset, littleEndian);\n }\n /**\n * Get the total number of bytes available in this segment (the size of its underlying buffer).\n *\n * @returns The total number of bytes this segment can hold.\n */\n getCapacity() {\n return this.buffer.byteLength;\n }\n /**\n * Read a float32 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getFloat32(byteOffset) {\n return this._dv.getFloat32(byteOffset, true);\n }\n /**\n * Read a float64 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getFloat64(byteOffset) {\n return this._dv.getFloat64(byteOffset, true);\n }\n /**\n * Read an int16 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getInt16(byteOffset) {\n return this._dv.getInt16(byteOffset, true);\n }\n /**\n * Read an int32 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getInt32(byteOffset) {\n return this._dv.getInt32(byteOffset, true);\n }\n /**\n * Read an int64 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getInt64(byteOffset) {\n return this._dv.getBigInt64(byteOffset, true);\n }\n /**\n * Read an int8 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getInt8(byteOffset) {\n return this._dv.getInt8(byteOffset);\n }\n /**\n * Read a uint16 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getUint16(byteOffset) {\n return this._dv.getUint16(byteOffset, true);\n }\n /**\n * Read a uint32 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getUint32(byteOffset) {\n return this._dv.getUint32(byteOffset, true);\n }\n /**\n * Read a uint64 value (as a bigint) out of this segment.\n * NOTE: this does not copy the memory region, so updates to the underlying buffer will affect the returned value!\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getUint64(byteOffset) {\n return this._dv.getBigUint64(byteOffset, true);\n }\n /**\n * Read a uint8 value out of this segment.\n *\n * @param byteOffset The offset in bytes to the value.\n * @returns The value.\n */\n getUint8(byteOffset) {\n return this._dv.getUint8(byteOffset);\n }\n hasCapacity(byteLength) {\n return this.buffer.byteLength - this.byteLength >= byteLength;\n }\n /**\n * Quickly check the word at the given offset to see if it is equal to zero.\n *\n * PERF_V8: Fastest way to do this is by reading the whole word as a `number` (float64) in the _native_ endian format\n * and see if it's zero.\n *\n * Benchmark: http://jsben.ch/#/Pjooc\n *\n * @param byteOffset The offset to the word.\n * @returns `true` if the word is zero.\n */\n isWordZero(byteOffset) {\n return this._dv.getFloat64(byteOffset, NATIVE_LITTLE_ENDIAN) === 0;\n }\n /**\n * Swap out this segment's underlying buffer with a new one. It's assumed that the new buffer has the same content but\n * more free space, otherwise all existing pointers to this segment will be hilariously broken.\n *\n * @param buffer The new buffer to use.\n */\n replaceBuffer(buffer) {\n if (this.buffer === buffer) {\n return;\n }\n if (buffer.byteLength < this.byteLength) {\n throw new Error(SEG_REPLACEMENT_BUFFER_TOO_SMALL);\n }\n this._dv = new DataView(buffer);\n this.buffer = buffer;\n }\n setBigInt64(byteOffset, value, littleEndian) {\n this._dv.setBigInt64(byteOffset, value, littleEndian);\n }\n /** WARNING: This function is not yet implemented. */\n setBigUint64(byteOffset, value, littleEndian) {\n this._dv.setBigUint64(byteOffset, value, littleEndian);\n }\n /**\n * Write a float32 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setFloat32(byteOffset, val) {\n this._dv.setFloat32(byteOffset, val, true);\n }\n /**\n * Write an float64 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setFloat64(byteOffset, val) {\n this._dv.setFloat64(byteOffset, val, true);\n }\n /**\n * Write an int16 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setInt16(byteOffset, val) {\n this._dv.setInt16(byteOffset, val, true);\n }\n /**\n * Write an int32 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setInt32(byteOffset, val) {\n this._dv.setInt32(byteOffset, val, true);\n }\n /**\n * Write an int8 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setInt8(byteOffset, val) {\n this._dv.setInt8(byteOffset, val);\n }\n /**\n * Write an int64 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setInt64(byteOffset, val) {\n this._dv.setBigInt64(byteOffset, val, true);\n }\n /**\n * Write a uint16 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setUint16(byteOffset, val) {\n this._dv.setUint16(byteOffset, val, true);\n }\n /**\n * Write a uint32 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setUint32(byteOffset, val) {\n this._dv.setUint32(byteOffset, val, true);\n }\n /**\n * Write a uint64 value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setUint64(byteOffset, val) {\n this._dv.setBigUint64(byteOffset, val, true);\n }\n /**\n * Write a uint8 (byte) value to the specified offset.\n *\n * @param byteOffset The offset from the beginning of the buffer.\n * @param val The value to store.\n */\n setUint8(byteOffset, val) {\n this._dv.setUint8(byteOffset, val);\n }\n /**\n * Write a zero word (8 bytes) to the specified offset. This is slightly faster than calling `setUint64` or\n * `setFloat64` with a zero value.\n *\n * Benchmark: http://jsben.ch/#/dUdPI\n *\n * @param byteOffset The offset of the word to set to zero.\n */\n setWordZero(byteOffset) {\n this._dv.setFloat64(byteOffset, 0, NATIVE_LITTLE_ENDIAN);\n }\n toString() {\n return format(\n \"Segment_id:%d,off:%a,len:%a,cap:%a\",\n this.id,\n this.byteLength,\n this.byteOffset,\n this.buffer.byteLength\n );\n }\n}\n\nclass Message {\n static allocateSegment = allocateSegment;\n static dump = dump;\n static getRoot = getRoot;\n static getSegment = getSegment;\n static initRoot = initRoot;\n static readRawPointer = readRawPointer;\n static toArrayBuffer = toArrayBuffer;\n static toPackedArrayBuffer = toPackedArrayBuffer;\n _capnp;\n /**\n * A Cap'n Proto message.\n *\n * SECURITY WARNING: In Node.js do not pass a Buffer's internal array buffer into this constructor. Pass the buffer\n * directly and everything will be fine. If not, your message will potentially be initialized with random memory\n * contents!\n *\n * The constructor method creates a new Message, optionally using a provided arena for segment allocation, or a buffer\n * to read from.\n *\n * @param src The source for the message.\n * A value of `undefined` will cause the message to initialize with a single segment arena only big enough for the\n * root pointer; it will expand as you go. This is a reasonable choice for most messages.\n *\n * Passing an arena will cause the message to use that arena for its segment allocation. Contents will be accepted\n * as-is.\n *\n * Passing an array buffer view (like `DataView`, `Uint8Array` or `Buffer`) will create a **copy** of the source\n * buffer; beware of the potential performance cost!\n *\n * @param packed Whether or not the message is packed. If `true` (the default), the message will be\n * unpacked.\n *\n * @param singleSegment If true, `src` will be treated as a message consisting of a single segment without\n * a framing header.\n *\n */\n constructor(src, packed = true, singleSegment = false) {\n this._capnp = initMessage(src, packed, singleSegment);\n if (src) {\n preallocateSegments(this);\n }\n }\n allocateSegment(byteLength) {\n return allocateSegment(byteLength, this);\n }\n /**\n * Copies the contents of this message into an identical message with its own ArrayBuffers.\n *\n * @returns A copy of this message.\n */\n copy() {\n return copy(this);\n }\n /**\n * Create a pretty-printed string dump of this message; incredibly useful for debugging.\n *\n * WARNING: Do not call this method on large messages!\n *\n * @returns A big steaming pile of pretty hex digits.\n */\n dump() {\n return dump(this);\n }\n /**\n * Get a struct pointer for the root of this message. This is primarily used when reading a message; it will not\n * overwrite existing data.\n *\n * @param RootStruct The struct type to use as the root.\n * @returns A struct representing the root of the message.\n */\n getRoot(RootStruct) {\n return getRoot(RootStruct, this);\n }\n /**\n * Get a segment by its id.\n *\n * This will lazily allocate the first segment if it doesn't already exist.\n *\n * @param id The segment id.\n * @returns The requested segment.\n */\n getSegment(id) {\n return getSegment(id, this);\n }\n /**\n * Initialize a new message using the provided struct type as the root.\n *\n * @param RootStruct The struct type to use as the root.\n * @returns An initialized struct pointing to the root of the message.\n */\n initRoot(RootStruct) {\n return initRoot(RootStruct, this);\n }\n /**\n * Set the root of the message to a copy of the given pointer. Used internally\n * to make copies of pointers for default values.\n *\n * @param src The source pointer to copy.\n */\n setRoot(src) {\n setRoot(src, this);\n }\n /**\n * Combine the contents of this message's segments into a single array buffer and prepend a stream framing header\n * containing information about the following segment data.\n *\n * @returns An ArrayBuffer with the contents of this message.\n */\n toArrayBuffer() {\n return toArrayBuffer(this);\n }\n /**\n * Like `toArrayBuffer()`, but also applies the packing algorithm to the output. This is typically what you want to\n * use if you're sending the message over a network link or other slow I/O interface where size matters.\n *\n * @returns A packed message.\n */\n toPackedArrayBuffer() {\n return toPackedArrayBuffer(this);\n }\n addCap(client) {\n if (!this._capnp.capTable) {\n this._capnp.capTable = [];\n }\n const id = this._capnp.capTable.length;\n this._capnp.capTable.push(client);\n return id;\n }\n toString() {\n return `Message_arena:${this._capnp.arena}`;\n }\n}\nfunction initMessage(src, packed = true, singleSegment = false) {\n if (src === undefined) {\n return {\n arena: new SingleSegmentArena(),\n segments: [],\n traversalLimit: DEFAULT_TRAVERSE_LIMIT\n };\n }\n if (isAnyArena(src)) {\n return { arena: src, segments: [], traversalLimit: DEFAULT_TRAVERSE_LIMIT };\n }\n let buf = src;\n if (isArrayBufferView(buf)) {\n buf = buf.buffer.slice(\n buf.byteOffset,\n buf.byteOffset + buf.byteLength\n );\n }\n if (packed) {\n buf = unpack(buf);\n }\n if (singleSegment) {\n return {\n arena: new SingleSegmentArena(buf),\n segments: [],\n traversalLimit: DEFAULT_TRAVERSE_LIMIT\n };\n }\n return {\n arena: new MultiSegmentArena(getFramedSegments(buf)),\n segments: [],\n traversalLimit: DEFAULT_TRAVERSE_LIMIT\n };\n}\nfunction getFramedSegments(message) {\n const dv = new DataView(message);\n const segmentCount = dv.getUint32(0, true) + 1;\n const segments = Array.from({ length: segmentCount });\n let byteOffset = 4 + segmentCount * 4;\n byteOffset += byteOffset % 8;\n if (byteOffset + segmentCount * 4 > message.byteLength) {\n throw new Error(MSG_INVALID_FRAME_HEADER);\n }\n for (let i = 0; i < segmentCount; i++) {\n const byteLength = dv.getUint32(4 + i * 4, true) * 8;\n if (byteOffset + byteLength > message.byteLength) {\n throw new Error(MSG_INVALID_FRAME_HEADER);\n }\n segments[i] = message.slice(byteOffset, byteOffset + byteLength);\n byteOffset += byteLength;\n }\n return segments;\n}\nfunction preallocateSegments(m) {\n const numSegments = Arena.getNumSegments(m._capnp.arena);\n m._capnp.segments = Array.from({ length: numSegments });\n for (let i = 0; i < numSegments; i++) {\n if (i === 0 && Arena.getBuffer(i, m._capnp.arena).byteLength < 8) {\n throw new Error(MSG_SEGMENT_TOO_SMALL);\n }\n const buffer = Arena.getBuffer(i, m._capnp.arena);\n const segment = new Segment(i, m, buffer, buffer.byteLength);\n m._capnp.segments[i] = segment;\n }\n}\nfunction isArrayBufferView(src) {\n return src.byteOffset !== undefined;\n}\nfunction isAnyArena(o) {\n return o.kind !== undefined;\n}\nfunction allocateSegment(byteLength, m) {\n const res = Arena.allocate(byteLength, m._capnp.segments, m._capnp.arena);\n let s;\n if (res.id === m._capnp.segments.length) {\n s = new Segment(res.id, m, res.buffer);\n m._capnp.segments.push(s);\n } else if (res.id < 0 || res.id > m._capnp.segments.length) {\n throw new Error(format(MSG_SEGMENT_OUT_OF_BOUNDS, res.id, m));\n } else {\n s = m._capnp.segments[res.id];\n s.replaceBuffer(res.buffer);\n }\n return s;\n}\nfunction dump(m) {\n let r = \"\";\n if (m._capnp.segments.length === 0) {\n return \"================\\nNo Segments\\n================\\n\";\n }\n for (let i = 0; i < m._capnp.segments.length; i++) {\n r += `================\nSegment #${i}\n================\n`;\n const { buffer, byteLength } = m._capnp.segments[i];\n const b = new Uint8Array(buffer, 0, byteLength);\n r += dumpBuffer(b);\n }\n return r;\n}\nfunction getRoot(RootStruct, m) {\n const root = new RootStruct(m.getSegment(0), 0);\n validate(PointerType.STRUCT, root);\n const ts = getTargetStructSize(root);\n if (ts.dataByteLength < RootStruct._capnp.size.dataByteLength || ts.pointerLength < RootStruct._capnp.size.pointerLength) {\n resize(RootStruct._capnp.size, root);\n }\n return root;\n}\nfunction getSegment(id, m) {\n const segmentLength = m._capnp.segments.length;\n if (id === 0 && segmentLength === 0) {\n const arenaSegments = Arena.getNumSegments(m._capnp.arena);\n if (arenaSegments === 0) {\n allocateSegment(DEFAULT_BUFFER_SIZE, m);\n } else {\n m._capnp.segments[0] = new Segment(\n 0,\n m,\n Arena.getBuffer(0, m._capnp.arena)\n );\n }\n if (!m._capnp.segments[0].hasCapacity(8)) {\n throw new Error(MSG_SEGMENT_TOO_SMALL);\n }\n m._capnp.segments[0].allocate(8);\n return m._capnp.segments[0];\n }\n if (id < 0 || id >= segmentLength) {\n throw new Error(format(MSG_SEGMENT_OUT_OF_BOUNDS, id, m));\n }\n return m._capnp.segments[id];\n}\nfunction initRoot(RootStruct, m) {\n const root = new RootStruct(m.getSegment(0), 0);\n initStruct(RootStruct._capnp.size, root);\n return root;\n}\nfunction readRawPointer(data) {\n return new Pointer(new Message(data).getSegment(0), 0);\n}\nfunction setRoot(src, m) {\n copyFrom(src, new Pointer(m.getSegment(0), 0));\n}\nfunction toArrayBuffer(m) {\n const streamFrame = getStreamFrame(m);\n if (m._capnp.segments.length === 0) {\n getSegment(0, m);\n }\n const { segments } = m._capnp;\n const totalLength = streamFrame.byteLength + segments.reduce((l, s) => l + padToWord(s.byteLength), 0);\n const out = new Uint8Array(new ArrayBuffer(totalLength));\n let o = streamFrame.byteLength;\n out.set(new Uint8Array(streamFrame));\n for (const s of segments) {\n const segmentLength = padToWord(s.byteLength);\n out.set(new Uint8Array(s.buffer, 0, segmentLength), o);\n o += segmentLength;\n }\n return out.buffer;\n}\nfunction toPackedArrayBuffer(m) {\n const streamFrame = pack(getStreamFrame(m));\n if (m._capnp.segments.length === 0) {\n m.getSegment(0);\n }\n const segments = m._capnp.segments.map(\n (s) => pack(s.buffer, 0, padToWord(s.byteLength))\n );\n const totalLength = streamFrame.byteLength + segments.reduce((l, s) => l + s.byteLength, 0);\n const out = new Uint8Array(new ArrayBuffer(totalLength));\n let o = streamFrame.byteLength;\n out.set(new Uint8Array(streamFrame));\n for (const s of segments) {\n out.set(new Uint8Array(s), o);\n o += s.byteLength;\n }\n return out.buffer;\n}\nfunction getStreamFrame(m) {\n const { length } = m._capnp.segments;\n if (length === 0) {\n return new Float64Array(1).buffer;\n }\n const frameLength = 4 + length * 4 + (1 - length % 2) * 4;\n const out = new DataView(new ArrayBuffer(frameLength));\n out.setUint32(0, length - 1, true);\n for (const [i, s] of m._capnp.segments.entries()) {\n out.setUint32(i * 4 + 4, s.byteLength / 8, true);\n }\n return out.buffer;\n}\nfunction copy(m) {\n return new Message(Arena.copy(m._capnp.arena));\n}\n\nexport { Message as M, readRawPointer as r };\n","import { $ as Pointer, ac as MAX_DEPTH, N as format, ad as getTargetPointerType, a8 as PointerType, ab as initStruct, S as Struct, g as getPointer, ae as FixedAnswer, af as getInterfaceClientOrNull, ag as ErrorAnswer, ah as RPC_CALL_QUEUE_FULL, ai as INVARIANT_UNREACHABLE_CODE, aj as RPC_QUEUE_CALL_CANCEL, ak as RPC_NULL_CLIENT, c as copyFrom, w as getAs, al as RPC_METHOD_ERROR, am as RPC_METHOD_NOT_IMPLEMENTED } from './capnp-es.0-_cOx6D.mjs';\nimport { M as Message } from './capnp-es.GpvEvMIK.mjs';\n\nclass Interface extends Pointer {\n static _capnp = {\n displayName: \"Interface\"\n };\n static getCapID = getCapID;\n static getAsInterface = getAsInterface;\n static isInterface = isInterface;\n static getClient = getClient;\n constructor(segment, byteOffset, depthLimit = MAX_DEPTH) {\n super(segment, byteOffset, depthLimit);\n }\n static fromPointer(p) {\n return getAsInterface(p);\n }\n getCapId() {\n return getCapID(this);\n }\n getClient() {\n return getClient(this);\n }\n [Symbol.for(\"nodejs.util.inspect.custom\")]() {\n return format(\n \"Interface_%d@%a,%d,limit:%x\",\n this.segment.id,\n this.byteOffset,\n this.getCapId(),\n this._capnp.depthLimit\n );\n }\n}\nfunction getAsInterface(p) {\n if (getTargetPointerType(p) === PointerType.OTHER) {\n return new Interface(p.segment, p.byteOffset, p._capnp.depthLimit);\n }\n return null;\n}\nfunction isInterface(p) {\n return getTargetPointerType(p) === PointerType.OTHER;\n}\nfunction getCapID(i) {\n if (i.segment.getUint32(i.byteOffset) !== PointerType.OTHER) {\n return -1;\n }\n return i.segment.getUint32(i.byteOffset + 4);\n}\nfunction getClient(i) {\n const capID = getCapID(i);\n const { capTable } = i.segment.message._capnp;\n if (!capTable) {\n return null;\n }\n return capTable[capID];\n}\n\nfunction isFuncCall(call) {\n return !isDataCall(call);\n}\nfunction isDataCall(call) {\n return !!call.params;\n}\nfunction copyCall(call) {\n if (isDataCall(call)) {\n return call;\n }\n return {\n method: call.method,\n params: placeParams(call, undefined)\n };\n}\nfunction placeParams(call, contentPtr) {\n if (isDataCall(call)) {\n return call.params;\n }\n let p;\n if (contentPtr) {\n p = new call.method.ParamsClass(\n contentPtr.segment,\n contentPtr.byteOffset,\n contentPtr._capnp.depthLimit\n );\n } else {\n const msg = new Message();\n p = new call.method.ParamsClass(msg.getSegment(0), 0);\n }\n initStruct(call.method.ParamsClass._capnp.size, p);\n if (call.paramsFunc) {\n call.paramsFunc(p);\n }\n return p;\n}\n\nfunction pointerToStruct(p) {\n if (getTargetPointerType(p) === PointerType.STRUCT) {\n return new Struct(\n p.segment,\n p.byteOffset,\n p._capnp.depthLimit,\n p._capnp.compositeIndex\n );\n }\n return null;\n}\n\nfunction transformPtr(p, transform) {\n if (transform.length === 0) {\n return p;\n }\n let s = pointerToStruct(p);\n if (!s) {\n return p;\n }\n for (const op of transform) {\n s = getPointer(op.field, s);\n }\n return s;\n}\n\nclass Deferred {\n static fromPromise(p) {\n const d = new Deferred();\n p.then(d.resolve, d.reject);\n return d;\n }\n promise;\n reject;\n resolve;\n constructor() {\n this.promise = new Promise((a, b) => {\n this.resolve = a;\n this.reject = b;\n });\n }\n}\n\nclass ImmediateAnswer extends FixedAnswer {\n constructor(s) {\n super();\n this.s = s;\n }\n structSync() {\n return this.s;\n }\n findClient(transform) {\n const p = transformPtr(this.s, transform);\n return getInterfaceClientOrNull(p);\n }\n pipelineCall(transform, call) {\n return this.findClient(transform).call(call);\n }\n pipelineClose(transform) {\n this.findClient(transform).close();\n }\n}\n\nclass Queue {\n // creates a new queue that starts with n elements.\n // The interface's length must not change over the course of\n // the queue's usage.\n constructor(q, n) {\n this.q = q;\n this.n = n;\n this.cap = q.len();\n }\n start = 0;\n cap;\n // len returns the length of the queue. This is different from the underlying\n // interface's length, which is the queue's capacity.\n len() {\n return this.n;\n }\n // push reserves space for an element on the queue, returning its index.\n // if the queue is full, push returns -1.\n push() {\n if (this.n >= this.cap) {\n return -1;\n }\n const i = (this.start + this.n) % this.cap;\n this.n++;\n return i;\n }\n // front returns the index of the front of the queue, or -1 if the queue is empty.\n front() {\n if (this.n === 0) {\n return -1;\n }\n return this.start;\n }\n // pop pops an element from the queue, returning whether it succeeded.\n pop() {\n if (this.n === 0) {\n return false;\n }\n this.q.clear(this.start);\n this.start = (this.start + 1) % this.cap;\n this.n--;\n return true;\n }\n}\n\nclass EmbargoClient {\n _client;\n q;\n calls;\n constructor(client, queue) {\n this._client = client;\n this.calls = queue.copy();\n this.q = new Queue(this.calls, this.calls.len());\n this.flushQueue();\n }\n flushQueue() {\n let c = null;\n {\n const i = this.q.front();\n if (i !== -1) {\n c = this.calls.data[i];\n }\n }\n while (c && c.call) {\n const ans = this._client.call(c.call);\n void (async (f, ans2) => {\n try {\n f.fulfill(await ans2.struct());\n } catch (error_) {\n f.reject(error_);\n }\n })(c.f, ans);\n this.q.pop();\n {\n const i = this.q.front();\n c = i === -1 ? null : this.calls.data[i];\n }\n }\n }\n // client returns the underlying client if the embargo has\n // been lifted and null otherwise\n client() {\n return this.isPassthrough() ? this._client : null;\n }\n isPassthrough() {\n return this.q.len() === 0;\n }\n // call either queues a call to the underlying client or starts a\n // call if the embargo has been lifted\n call(call) {\n if (this.isPassthrough()) {\n return this._client.call(call);\n }\n return this.push(call);\n }\n push(_call) {\n const f = new Fulfiller();\n const call = copyCall(_call);\n const i = this.q.push();\n if (i === -1) {\n return new ErrorAnswer(new Error(RPC_CALL_QUEUE_FULL));\n }\n this.calls.data[i] = {\n call,\n f\n };\n return f;\n }\n close() {\n while (this.q.len() > 0) {\n const first = this.calls.data[this.q.front()];\n if (!first) {\n throw new Error(INVARIANT_UNREACHABLE_CODE);\n }\n first.f.reject(new Error(RPC_QUEUE_CALL_CANCEL));\n this.q.pop();\n }\n this._client.close();\n }\n}\n\nclass Ecalls {\n data;\n constructor(data) {\n this.data = data;\n }\n static copyOf(data) {\n return new Ecalls([...data]);\n }\n len() {\n return this.data.length;\n }\n clear(i) {\n this.data[i] = null;\n }\n copy() {\n return Ecalls.copyOf(this.data);\n }\n}\n\nconst callQueueSize = 64;\nclass Fulfiller {\n resolved = false;\n answer;\n queue = [];\n queueCap = callQueueSize;\n deferred = new Deferred();\n fulfill(s) {\n this.answer = new ImmediateAnswer(s);\n const queues = this.emptyQueue(s);\n const msgcap = s.segment.message._capnp;\n if (!msgcap.capTable) {\n msgcap.capTable = [];\n }\n const ctab = msgcap.capTable;\n for (const _capIdx of Object.keys(queues)) {\n const capIdx = +_capIdx;\n const q = queues[capIdx];\n const client = ctab[capIdx];\n if (!client) {\n throw new Error(INVARIANT_UNREACHABLE_CODE);\n }\n ctab[capIdx] = new EmbargoClient(client, q);\n }\n this.deferred.resolve(s);\n }\n reject(err) {\n this.deferred.reject(err);\n }\n peek() {\n return this.answer;\n }\n async struct() {\n return await this.deferred.promise;\n }\n // pipelineCall calls pipelineCall on the fulfilled answer or\n // queues the call if f has not been fulfilled\n pipelineCall(transform, call) {\n {\n const a = this.peek();\n if (a) {\n return a.pipelineCall(transform, call);\n }\n }\n if (this.queue.length === this.queueCap) {\n return new ErrorAnswer(new Error(RPC_CALL_QUEUE_FULL));\n }\n const cc = copyCall(call);\n const g = new Fulfiller();\n this.queue.push({\n call: cc,\n f: g,\n transform\n });\n return g;\n }\n // pipelineClose waits until f is resolved and then calls\n // pipelineClose on the fulfilled answer\n // FIXME: should this be async?\n pipelineClose(transform) {\n const onFinally = () => {\n if (this.answer) {\n this.answer.pipelineClose(transform);\n }\n };\n this.deferred.promise.then(onFinally, onFinally);\n }\n // emptyQueue splits the queue by which capability it targets and\n // drops any invalid calls. Once this function returns, f.queue will\n // be nil.\n emptyQueue(s) {\n const qs = {};\n for (let i = 0; i < this.queue.length; i++) {\n const pc = this.queue[i];\n let c;\n try {\n c = transformPtr(s, pc.transform);\n } catch (error_) {\n pc.f.reject(error_);\n continue;\n }\n const iface = Interface.fromPointer(c);\n if (!iface) {\n pc.f.reject(new Error(RPC_NULL_CLIENT));\n continue;\n }\n const cn = iface.getCapId();\n if (!qs[cn]) {\n qs[cn] = new Ecalls([]);\n }\n qs[cn].data.push(pc);\n }\n this.queue = [];\n return qs;\n }\n}\n\nclass PipelineClient {\n constructor(pipeline) {\n this.pipeline = pipeline;\n }\n transform() {\n return this.pipeline.transform();\n }\n call(call) {\n return this.pipeline.answer.pipelineCall(this.transform(), call);\n }\n close() {\n this.pipeline.answer.pipelineClose(this.transform());\n }\n}\n\nclass Pipeline {\n // Returns a new Pipeline based on an answer\n constructor(ResultsClass, answer, op, parent) {\n this.ResultsClass = ResultsClass;\n this.answer = answer;\n this.parent = parent;\n this.op = op || { field: 0 };\n }\n op;\n pipelineClient;\n // transform returns the operations needed to transform the root answer\n // into the value p represents.\n transform() {\n const xform = [];\n for (let q = this; q.parent; q = q.parent) {\n xform.unshift(q.op);\n }\n return xform;\n }\n // Struct waits until the answer is resolved and returns the struct\n // this pipeline represents.\n async struct() {\n const s = await this.answer.struct();\n const t = transformPtr(s, this.transform());\n if (!t) {\n if (this.op.defaultValue) {\n copyFrom(this.op.defaultValue, t);\n } else {\n initStruct(this.ResultsClass._capnp.size, t);\n }\n }\n return getAs(this.ResultsClass, t);\n }\n // client returns the client version of this pipeline\n client() {\n if (!this.pipelineClient) {\n this.pipelineClient = new PipelineClient(this);\n }\n return this.pipelineClient;\n }\n // getPipeline returns a derived pipeline which yields the pointer field given\n getPipeline(ResultsClass, off, defaultValue) {\n return new Pipeline(\n ResultsClass,\n this.answer,\n { field: off, defaultValue },\n this\n );\n }\n}\n\nclass MethodError extends Error {\n constructor(method, message) {\n super(\n format(\n RPC_METHOD_ERROR,\n method.interfaceName,\n method.methodName,\n message\n )\n );\n this.method = method;\n }\n}\n\nclass Registry {\n static interfaces = /* @__PURE__ */ new Map();\n static register(id, def) {\n this.interfaces.set(id, def);\n }\n static lookup(id) {\n return this.interfaces.get(id);\n }\n}\n\nclass Server {\n constructor(target, methods) {\n this.target = target;\n this.methods = methods;\n }\n startCall(call) {\n const msg = new Message();\n const results = msg.initRoot(call.method.ResultsClass);\n call.serverMethod.impl.call(this.target, call.params, results).then(() => call.answer.fulfill(results)).catch((error_) => call.answer.reject(error_));\n }\n call(call) {\n const serverMethod = this.methods[call.method.methodId];\n if (!serverMethod) {\n return new ErrorAnswer(\n new MethodError(call.method, RPC_METHOD_NOT_IMPLEMENTED)\n );\n }\n const serverCall = {\n ...copyCall(call),\n answer: new Fulfiller(),\n serverMethod\n };\n this.startCall(serverCall);\n return serverCall.answer;\n }\n close() {\n }\n}\n\nexport { Deferred as D, Fulfiller as F, Interface as I, MethodError as M, Pipeline as P, Queue as Q, Registry as R, Server as S, PipelineClient as a, isDataCall as b, copyCall as c, isFuncCall as i, placeParams as p, transformPtr as t };\n","import { S as Struct, O as ObjectSize, ao as PointerAllocationResult, ap as add, a as adopt, aq as checkDataBounds, ar as checkPointerBounds, c as copyFrom, as as copyFromInterface, at as copyFromList, au as copyFromStruct, d as disown, av as dump, aw as erase, ax as erasePointer, ay as followFar, az as followFars, w as getAs, h as getBit, aA as getCapabilityId, aB as getContent, J as getData, aC as getDataSection, aD as getFarSegmentId, F as getFloat32, H as getFloat64, z as getInt16, B as getInt32, D as getInt64, x as getInt8, af as getInterfaceClientOrNull, aE as getInterfaceClientOrNullAt, aF as getInterfacePointer, m as getList, aG as getListByteLength, aH as getListElementByteLength, aI as getListElementSize, aJ as getListLength, aK as getOffsetWords, g as getPointer, aL as getPointerAs, aM as getPointerSection, aN as getPointerType, aO as getSize, k as getStruct, aP as getStructDataWords, aQ as getStructPointerLength, aR as getStructSize, aS as getTargetCompositeListSize, aT as getTargetCompositeListTag, aU as getTargetListElementSize, aV as getTargetListLength, ad as getTargetPointerType, a9 as getTargetStructSize, q as getText, b as getUint16, e as getUint32, u as getUint64, o as getUint8, K as initData, n as initList, aW as initPointer, ab as initStruct, l as initStructAt, aX as isDoubleFar, i as isNull, aY as relocateTo, aa as resize, j as setBit, aZ as setFarPointer, G as setFloat32, I as setFloat64, A as setInt16, C as setInt32, E as setInt64, y as setInt8, a_ as setInterfacePointer, a$ as setListPointer, b0 as setStructPointer, r as setText, s as setUint16, f as setUint32, v as setUint64, p as setUint8, t as testWhich, b1 as trackPointerAllocation, a7 as validate, L as List, M as ListElementSize, $ as Pointer, b2 as Data, b3 as Text, b4 as ErrorClient, b5 as RPC_ZERO_REF, N as format, b6 as RPC_ERROR, ai as INVARIANT_UNREACHABLE_CODE, b7 as RPC_FULFILL_ALREADY_CALLED, b8 as NOT_IMPLEMENTED, ag as ErrorAnswer, ah as RPC_CALL_QUEUE_FULL, ak as RPC_NULL_CLIENT, b9 as RPC_IMPORT_CLOSED, ba as AnyStruct, bb as RPC_QUESTION_ID_REUSED, bc as RPC_NO_MAIN_INTERFACE, bd as RPC_BAD_TARGET, be as RPC_UNKNOWN_CAP_DESCRIPTOR, ae as FixedAnswer, bf as RPC_FINISH_UNKNOWN_ANSWER, bg as RPC_RETURN_FOR_UNKNOWN_QUESTION, bh as RPC_UNKNOWN_ANSWER_ID, bi as RPC_UNKNOWN_EXPORT_ID } from './shared/capnp-es.0-_cOx6D.mjs';\nexport { bj as Orphan, a8 as PointerType, bk as clientOrNull } from './shared/capnp-es.0-_cOx6D.mjs';\nimport { M as Message } from './shared/capnp-es.GpvEvMIK.mjs';\nexport { r as readRawPointer } from './shared/capnp-es.GpvEvMIK.mjs';\nexport { C as CompositeList, g as getBitMask, c as getFloat32Mask, d as getFloat64Mask, e as getInt16Mask, f as getInt32Mask, h as getInt64Mask, i as getInt8Mask, b as getUint16Mask, j as getUint32Mask, k as getUint64Mask, a as getUint8Mask } from './shared/capnp-es.BvfUH5E6.mjs';\nimport { I as Interface, t as transformPtr, D as Deferred, Q as Queue, c as copyCall, F as Fulfiller, P as Pipeline, M as MethodError, R as Registry, p as placeParams, a as PipelineClient } from './shared/capnp-es.UAt3nLGq.mjs';\nexport { S as Server, b as isDataCall, i as isFuncCall } from './shared/capnp-es.UAt3nLGq.mjs';\nimport { Exception, Message as Message$1, Disembargo_Context_Which, PromisedAnswer_Op, Return, MessageTarget, CapDescriptor } from './capnp/rpc.mjs';\n\nclass Void extends Struct {\n static _capnp = {\n displayName: \"Void\",\n id: \"0\",\n size: new ObjectSize(0, 0)\n };\n}\n\nconst utils = {\n __proto__: null,\n PointerAllocationResult: PointerAllocationResult,\n add: add,\n adopt: adopt,\n checkDataBounds: checkDataBounds,\n checkPointerBounds: checkPointerBounds,\n copyFrom: copyFrom,\n copyFromInterface: copyFromInterface,\n copyFromList: copyFromList,\n copyFromStruct: copyFromStruct,\n disown: disown,\n dump: dump,\n erase: erase,\n erasePointer: erasePointer,\n followFar: followFar,\n followFars: followFars,\n getAs: getAs,\n getBit: getBit,\n getCapabilityId: getCapabilityId,\n getContent: getContent,\n getData: getData,\n getDataSection: getDataSection,\n getFarSegmentId: getFarSegmentId,\n getFloat32: getFloat32,\n getFloat64: getFloat64,\n getInt16: getInt16,\n getInt32: getInt32,\n getInt64: getInt64,\n getInt8: getInt8,\n getInterfaceClientOrNull: getInterfaceClientOrNull,\n getInterfaceClientOrNullAt: getInterfaceClientOrNullAt,\n getInterfacePointer: getInterfacePointer,\n getList: getList,\n getListByteLength: getListByteLength,\n getListElementByteLength: getListElementByteLength,\n getListElementSize: getListElementSize,\n getListLength: getListLength,\n getOffsetWords: getOffsetWords,\n getPointer: getPointer,\n getPointerAs: getPointerAs,\n getPointerSection: getPointerSection,\n getPointerType: getPointerType,\n getSize: getSize,\n getStruct: getStruct,\n getStructDataWords: getStructDataWords,\n getStructPointerLength: getStructPointerLength,\n getStructSize: getStructSize,\n getTargetCompositeListSize: getTargetCompositeListSize,\n getTargetCompositeListTag: getTargetCompositeListTag,\n getTargetListElementSize: getTargetListElementSize,\n getTargetListLength: getTargetListLength,\n getTargetPointerType: getTargetPointerType,\n getTargetStructSize: getTargetStructSize,\n getText: getText,\n getUint16: getUint16,\n getUint32: getUint32,\n getUint64: getUint64,\n getUint8: getUint8,\n initData: initData,\n initList: initList,\n initPointer: initPointer,\n initStruct: initStruct,\n initStructAt: initStructAt,\n isDoubleFar: isDoubleFar,\n isNull: isNull,\n relocateTo: relocateTo,\n resize: resize,\n setBit: setBit,\n setFarPointer: setFarPointer,\n setFloat32: setFloat32,\n setFloat64: setFloat64,\n setInt16: setInt16,\n setInt32: setInt32,\n setInt64: setInt64,\n setInt8: setInt8,\n setInterfacePointer: setInterfacePointer,\n setListPointer: setListPointer,\n setStructPointer: setStructPointer,\n setText: setText,\n setUint16: setUint16,\n setUint32: setUint32,\n setUint64: setUint64,\n setUint8: setUint8,\n testWhich: testWhich,\n trackPointerAllocation: trackPointerAllocation,\n validate: validate\n};\n\nfunction PointerList(PointerClass) {\n return class extends List {\n static _capnp = {\n displayName: `List<${PointerClass._capnp.displayName}>`,\n size: ListElementSize.POINTER\n };\n get(index) {\n const c = getContent(this);\n return new PointerClass(\n c.segment,\n c.byteOffset + index * 8,\n this._capnp.depthLimit - 1\n );\n }\n set(index, value) {\n copyFrom(value, this.get(index));\n }\n [Symbol.toStringTag]() {\n return `Pointer_${super.toString()},cls:${PointerClass.toString()}`;\n }\n };\n}\n\nconst AnyPointerList = PointerList(Pointer);\n\nclass BoolList extends List {\n static _capnp = {\n displayName: \"List<boolean>\",\n size: ListElementSize.BIT\n };\n get(index) {\n const bitMask = 1 << index % 8;\n const byteOffset = index >>> 3;\n const c = getContent(this);\n const v = c.segment.getUint8(c.byteOffset + byteOffset);\n return (v & bitMask) !== 0;\n }\n set(index, value) {\n const bitMask = 1 << index % 8;\n const c = getContent(this);\n const byteOffset = c.byteOffset + (index >>> 3);\n const v = c.segment.getUint8(byteOffset);\n c.segment.setUint8(byteOffset, value ? v | bitMask : v & ~bitMask);\n }\n [Symbol.toStringTag]() {\n return `Bool_${super.toString()}`;\n }\n}\n\nconst DataList = PointerList(Data);\n\nclass Float32List extends List {\n static _capnp = {\n displayName: \"List<Float32>\",\n size: ListElementSize.BYTE_4\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getFloat32(c.byteOffset + index * 4);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setFloat32(c.byteOffset + index * 4, value);\n }\n [Symbol.toStringTag]() {\n return `Float32_${super.toString()}`;\n }\n}\n\nclass Float64List extends List {\n static _capnp = {\n displayName: \"List<Float64>\",\n size: ListElementSize.BYTE_8\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getFloat64(c.byteOffset + index * 8);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setFloat64(c.byteOffset + index * 8, value);\n }\n [Symbol.toStringTag]() {\n return `Float64_${super.toString()}`;\n }\n}\n\nclass Int8List extends List {\n static _capnp = {\n displayName: \"List<Int8>\",\n size: ListElementSize.BYTE\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getInt8(c.byteOffset + index);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setInt8(c.byteOffset + index, value);\n }\n [Symbol.toStringTag]() {\n return `Int8_${super.toString()}`;\n }\n}\n\nclass Int16List extends List {\n static _capnp = {\n displayName: \"List<Int16>\",\n size: ListElementSize.BYTE_2\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getInt16(c.byteOffset + index * 2);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setInt16(c.byteOffset + index * 2, value);\n }\n [Symbol.toStringTag]() {\n return `Int16_${super.toString()}`;\n }\n}\n\nclass Int32List extends List {\n static _capnp = {\n displayName: \"List<Int32>\",\n size: ListElementSize.BYTE_4\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getInt32(c.byteOffset + index * 4);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setInt32(c.byteOffset + index * 4, value);\n }\n [Symbol.toStringTag]() {\n return `Int32_${super.toString()}`;\n }\n}\n\nclass Int64List extends List {\n static _capnp = {\n displayName: \"List<Int64>\",\n size: ListElementSize.BYTE_8\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getInt64(c.byteOffset + index * 8);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setInt64(c.byteOffset + index * 8, value);\n }\n [Symbol.toStringTag]() {\n return `Int64_${super.toString()}`;\n }\n}\n\nconst InterfaceList = PointerList(Interface);\n\nclass TextList extends List {\n static _capnp = {\n displayName: \"List<Text>\",\n size: ListElementSize.POINTER\n };\n get(index) {\n const c = getContent(this);\n c.byteOffset += index * 8;\n return Text.fromPointer(c).get(0);\n }\n set(index, value) {\n const c = getContent(this);\n c.byteOffset += index * 8;\n Text.fromPointer(c).set(0, value);\n }\n [Symbol.toStringTag]() {\n return `Text_${super.toString()}`;\n }\n}\n\nclass Uint8List extends List {\n static _capnp = {\n displayName: \"List<Uint8>\",\n size: ListElementSize.BYTE\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getUint8(c.byteOffset + index);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setUint8(c.byteOffset + index, value);\n }\n [Symbol.toStringTag]() {\n return `Uint8_${super.toString()}`;\n }\n}\n\nclass Uint16List extends List {\n static _capnp = {\n displayName: \"List<Uint16>\",\n size: ListElementSize.BYTE_2\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getUint16(c.byteOffset + index * 2);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setUint16(c.byteOffset + index * 2, value);\n }\n [Symbol.toStringTag]() {\n return `Uint16_${super.toString()}`;\n }\n}\n\nclass Uint32List extends List {\n static _capnp = {\n displayName: \"List<Uint32>\",\n size: ListElementSize.BYTE_4\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getUint32(c.byteOffset + index * 4);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setUint32(c.byteOffset + index * 4, value);\n }\n [Symbol.toStringTag]() {\n return `Uint32_${super.toString()}`;\n }\n}\n\nclass Uint64List extends List {\n static _capnp = {\n displayName: \"List<Uint64>\",\n size: ListElementSize.BYTE_8\n };\n get(index) {\n const c = getContent(this);\n return c.segment.getUint64(c.byteOffset + index * 8);\n }\n set(index, value) {\n const c = getContent(this);\n c.segment.setUint64(c.byteOffset + index * 8, value);\n }\n [Symbol.toStringTag]() {\n return `Uint64_${super.toString()}`;\n }\n}\n\nconst VoidList = PointerList(Void);\n\nfunction isSameClient(c, d) {\n const norm = (c2) => {\n return c2;\n };\n return norm(c) === norm(d);\n}\nfunction clientFromResolution(transform, obj, err) {\n if (err) {\n return new ErrorClient(err);\n }\n if (!obj) {\n return new ErrorClient(new Error(`null obj!`));\n }\n const out = transformPtr(obj, transform);\n return getInterfaceClientOrNull(out);\n}\n\nclass IDGen {\n i = 0;\n free = [];\n next() {\n return this.free.pop() ?? this.i++;\n }\n remove(i) {\n this.free.push(i);\n }\n}\n\nclass Ref {\n constructor(rc, finalize) {\n this.rc = rc;\n const closeState = { closed: false };\n this.closeState = closeState;\n finalize(this, () => {\n if (!closeState.closed) {\n closeState.closed = true;\n rc.decref();\n }\n });\n }\n closeState;\n call(cl) {\n return this.rc.call(cl);\n }\n client() {\n return this.rc._client;\n }\n close() {\n if (!this.closeState.closed) {\n this.closeState.closed = true;\n this.rc.decref();\n }\n }\n}\n\nclass RefCount {\n refs;\n finalize;\n _client;\n constructor(c, _finalize) {\n this._client = c;\n this.finalize = _finalize;\n this.refs = 1;\n }\n // New creates a reference counter and the first client reference.\n static new(c, finalize) {\n const rc = new RefCount(c, finalize);\n const ref = rc.newRef();\n return [rc, ref];\n }\n call(cl) {\n return this._client.call(cl);\n }\n client() {\n return this._client;\n }\n close() {\n this._client.close();\n }\n ref() {\n if (this.refs <= 0) {\n return new ErrorClient(new Error(RPC_ZERO_REF));\n }\n this.refs++;\n return this.newRef();\n }\n newRef() {\n return new Ref(this, this.finalize);\n }\n decref() {\n this.refs--;\n if (this.refs === 0) {\n this._client.close();\n }\n }\n}\n\nclass RPCError extends Error {\n constructor(exception) {\n super(format(RPC_ERROR, exception.reason));\n this.exception = exception;\n }\n}\nfunction toException(exc, err) {\n if (err instanceof RPCError) {\n exc.reason = err.exception.reason;\n exc.type = err.exception.type;\n return;\n }\n exc.reason = err.message;\n exc.type = Exception.Type.FAILED;\n}\n\nfunction newMessage() {\n return new Message().initRoot(Message$1);\n}\nfunction newFinishMessage(questionID, release) {\n const m = newMessage();\n const f = m._initFinish();\n f.questionId = questionID;\n f.releaseResultCaps = release;\n return m;\n}\nfunction newUnimplementedMessage(m) {\n const n = newMessage();\n n.unimplemented = m;\n return n;\n}\nfunction newReturnMessage(id) {\n const m = newMessage();\n const ret = m._initReturn();\n ret.answerId = id;\n return m;\n}\nfunction setReturnException(ret, err) {\n const exc = ret._initException();\n toException(exc, err);\n return exc;\n}\nfunction newDisembargoMessage(which, id) {\n const m = newMessage();\n const dis = m._initDisembargo();\n const ctx = dis._initContext();\n switch (which) {\n case Disembargo_Context_Which.SENDER_LOOPBACK: {\n ctx.senderLoopback = id;\n break;\n }\n case Disembargo_Context_Which.RECEIVER_LOOPBACK: {\n ctx.receiverLoopback = id;\n break;\n }\n default: {\n throw new Error(INVARIANT_UNREACHABLE_CODE);\n }\n }\n return m;\n}\n\nfunction transformToPromisedAnswer(answer, transform) {\n const opList = answer._initTransform(transform.length);\n for (const [i, op] of transform.entries()) {\n opList.get(i).getPointerField = op.field;\n }\n}\nfunction promisedAnswerOpsToTransform(list) {\n const transform = [];\n for (const op of list) {\n switch (op.which()) {\n case PromisedAnswer_Op.GET_POINTER_FIELD: {\n transform.push({\n field: op.getPointerField\n });\n break;\n }\n case PromisedAnswer_Op.NOOP: {\n break;\n }\n }\n }\n return transform;\n}\n\nvar QuestionState = /* @__PURE__ */ ((QuestionState2) => {\n QuestionState2[QuestionState2[\"IN_PROGRESS\"] = 0] = \"IN_PROGRESS\";\n QuestionState2[QuestionState2[\"RESOLVED\"] = 1] = \"RESOLVED\";\n QuestionState2[QuestionState2[\"CANCELED\"] = 2] = \"CANCELED\";\n return QuestionState2;\n})(QuestionState || {});\nclass Question {\n constructor(conn, id, method) {\n this.conn = conn;\n this.id = id;\n this.method = method;\n }\n paramCaps = [];\n state = 0 /* IN_PROGRESS */;\n obj;\n err;\n derived = [];\n deferred = new Deferred();\n async struct() {\n return await this.deferred.promise;\n }\n // start signals the question has been sent\n start() {\n }\n // fulfill is called to resolve a question successfully.\n // The caller must be holding onto q.conn.mu.\n fulfill(obj) {\n if (this.state !== 0 /* IN_PROGRESS */) {\n throw new Error(RPC_FULFILL_ALREADY_CALLED);\n }\n if (this.method) {\n this.obj = getAs(this.method.ResultsClass, obj);\n } else {\n this.obj = obj;\n }\n this.state = 1 /* RESOLVED */;\n this.deferred.resolve(this.obj);\n }\n // reject is called to resolve a question with failure\n reject(err) {\n if (!err) {\n throw new Error(`Question.reject called with null`);\n }\n if (this.state !== 0 /* IN_PROGRESS */) {\n throw new Error(`Question.reject called more than once`);\n }\n this.err = err;\n this.state = 1 /* RESOLVED */;\n this.deferred.reject(err);\n }\n // cancel is called to resolve a question with cancellation.\n cancel(err) {\n if (this.state === 0 /* IN_PROGRESS */) {\n this.err = err;\n this.state = 2 /* CANCELED */;\n this.deferred.reject(err);\n return true;\n }\n return false;\n }\n pipelineCall(transform, call) {\n if (this.conn.findQuestion(this.id) !== this) {\n if (this.state === 0 /* IN_PROGRESS */) {\n throw new Error(`question popped but not done`);\n }\n const client = clientFromResolution(transform, this.obj, this.err);\n return client.call(call);\n }\n const pipeq = this.conn.newQuestion(call.method);\n const msg = newMessage();\n const msgCall = msg._initCall();\n msgCall.questionId = pipeq.id;\n msgCall.interfaceId = call.method.interfaceId;\n msgCall.methodId = call.method.methodId;\n const target = msgCall._initTarget();\n const a = target._initPromisedAnswer();\n a.questionId = this.id;\n transformToPromisedAnswer(a, transform);\n const payload = msgCall._initParams();\n this.conn.fillParams(payload, call);\n this.conn.sendMessage(msg);\n this.addPromise(transform);\n return pipeq;\n }\n addPromise(transform) {\n for (const d of this.derived) {\n if (transformsEqual(transform, d)) {\n return;\n }\n }\n this.derived.push(transform);\n }\n pipelineClose() {\n throw new Error(NOT_IMPLEMENTED);\n }\n}\nfunction transformsEqual(t, u) {\n if (t.length !== u.length) {\n return false;\n }\n for (const [i, element_] of t.entries()) {\n if (element_.field !== u[i].field) {\n return false;\n }\n }\n return true;\n}\n\nclass Qcalls {\n constructor(data) {\n this.data = data;\n }\n static copyOf(data) {\n return new Qcalls([...data]);\n }\n len() {\n return this.data.length;\n }\n clear(i) {\n this.data[i] = null;\n }\n copy() {\n return Qcalls.copyOf(this.data);\n }\n}\n\nfunction joinAnswer(fl, answer) {\n answer.struct().then((obj) => {\n fl.fulfill(obj);\n }).catch((error_) => {\n fl.reject(error_);\n });\n}\n\nconst callQueueSize = 64;\nclass QueueClient {\n constructor(conn, client, calls) {\n this.conn = conn;\n this._client = client;\n this.calls = Qcalls.copyOf(calls);\n this.q = new Queue(this.calls, callQueueSize);\n }\n _client;\n calls;\n q;\n pushCall(call) {\n const f = new Fulfiller();\n try {\n call = copyCall(call);\n } catch (error_) {\n return new ErrorAnswer(error_);\n }\n const i = this.q.push();\n if (i === -1) {\n return new ErrorAnswer(new Error(RPC_CALL_QUEUE_FULL));\n }\n this.calls.data[i] = {\n call,\n f\n };\n return f;\n }\n pushEmbargo(id, tgt) {\n const i = this.q.push();\n if (i === -1) {\n throw new Error(RPC_CALL_QUEUE_FULL);\n }\n this.calls.data[i] = {\n embargoID: id,\n embargoTarget: tgt\n };\n }\n flushQueue() {\n let c = null;\n {\n const i = this.q.front();\n if (i !== -1) {\n c = this.calls.data[i];\n }\n }\n while (c) {\n this.handle(c);\n this.q.pop();\n {\n const i = this.q.front();\n c = i === -1 ? null : this.calls.data[i];\n }\n }\n }\n handle(c) {\n if (!c) {\n return;\n }\n if (isRemoteCall(c)) {\n const answer = this._client.call(c.call);\n joinAnswer(c.a, answer);\n } else if (isLocalCall(c)) {\n const answer = this._client.call(c.call);\n joinAnswer(c.f, answer);\n } else if (isDisembargo(c)) {\n const msg = newDisembargoMessage(\n Disembargo_Context_Which.RECEIVER_LOOPBACK,\n c.embargoID\n );\n msg.disembargo.target = c.embargoTarget;\n this.conn.sendMessage(msg);\n }\n }\n isPassthrough() {\n return this.q.len() === 0;\n }\n call(call) {\n if (this.isPassthrough()) {\n return this._client.call(call);\n }\n return this.pushCall(call);\n }\n // close releases any resources associated with this client.\n // No further calls to the client should be made after calling Close.\n close() {\n }\n}\n\nclass AnswerEntry {\n id;\n conn;\n resultCaps = [];\n done = false;\n obj;\n err;\n deferred = new Deferred();\n queue = [];\n constructor(conn, id) {\n this.conn = conn;\n this.id = id;\n }\n // fulfill is called to resolve an answer successfully.\n fulfill(obj) {\n if (this.done) {\n throw new Error(`answer.fulfill called more than once`);\n }\n this.done = true;\n this.obj = obj;\n const retmsg = newReturnMessage(this.id);\n const ret = retmsg.return;\n const payload = ret._initResults();\n payload.content = obj;\n let firstErr;\n try {\n this.conn.makeCapTable(ret.segment, (len) => payload._initCapTable(len));\n this.deferred.resolve(obj);\n this.conn.sendMessage(retmsg);\n } catch (error_) {\n if (!firstErr) {\n firstErr = error_;\n }\n }\n const [queues, queuesErr] = this.emptyQueue(obj);\n if (queuesErr && !firstErr) {\n firstErr = queuesErr;\n }\n const objcap = obj.segment.message._capnp;\n if (!objcap.capTable) {\n objcap.capTable = [];\n }\n for (const capIdxStr of Object.keys(queues)) {\n const capIdx = Number(capIdxStr);\n const q = queues[capIdx];\n if (objcap.capTable === null) throw new Error(INVARIANT_UNREACHABLE_CODE);\n objcap.capTable[capIdx] = new QueueClient(\n this.conn,\n objcap.capTable[capIdx],\n q\n );\n }\n if (firstErr) {\n throw firstErr;\n }\n }\n // reject is called to resolve an answer with failure.\n reject(err) {\n if (!err) {\n throw new Error(`answer.reject called with nil`);\n }\n if (this.done) {\n throw new Error(`answer.reject claled more than once`);\n }\n const m = newReturnMessage(this.id);\n const mret = m.return;\n setReturnException(mret, err);\n this.err = err;\n this.done = true;\n this.deferred.reject(err);\n let firstErr;\n try {\n this.conn.sendMessage(m);\n } catch (error_) {\n firstErr = error_;\n }\n for (let i = 0; i < this.queue.length; i++) {\n const qa = this.queue[i];\n try {\n if (qa.qcall && isRemoteCall(qa.qcall)) {\n qa.qcall.a.reject(err);\n }\n } catch (error_) {\n if (!firstErr) {\n firstErr = error_;\n }\n }\n }\n this.queue = [];\n if (firstErr) {\n throw firstErr;\n }\n }\n // emptyQueue splits the queue by which capability it targets\n // and drops any invalid calls. Once this function returns,\n // this.queue will be empty.\n emptyQueue(obj) {\n let firstErr;\n const qs = {};\n for (let i = 0; i < this.queue.length; i++) {\n const pc = this.queue[i];\n if (!isRemoteCall(pc.qcall)) {\n continue;\n }\n if (!pc.qcall.a) {\n continue;\n }\n let c;\n try {\n c = transformPtr(obj, pc.transform);\n } catch (error_) {\n try {\n pc.qcall.a.reject(error_);\n } catch (error_2) {\n if (!firstErr) {\n firstErr = error_2;\n }\n }\n continue;\n }\n const ci = Interface.fromPointer(c);\n if (!ci) {\n try {\n pc.qcall.a.reject(new Error(RPC_NULL_CLIENT));\n } catch (error_) {\n if (!firstErr) {\n firstErr = error_;\n }\n }\n continue;\n }\n const cn = ci.getCapId();\n if (!qs[cn]) {\n qs[cn] = [];\n }\n qs[cn].push(pc.qcall);\n }\n this.queue = [];\n return [qs, firstErr];\n }\n queueCall(call, transform, a) {\n if (this.queue.length >= callQueueSize) {\n throw new Error(RPC_CALL_QUEUE_FULL);\n }\n const qcall = {\n a,\n call: copyCall(call)\n };\n const pcall = {\n qcall,\n transform\n };\n this.queue.push(pcall);\n }\n}\nfunction isRemoteCall(a) {\n return !!a.a;\n}\nfunction isLocalCall(a) {\n return !!a.f;\n}\nfunction isDisembargo(a) {\n return !!a.embargoTarget;\n}\n\nclass ImportClient {\n constructor(conn, id) {\n this.conn = conn;\n this.id = id;\n }\n closed = false;\n call(cl) {\n if (this.closed) {\n return new ErrorAnswer(new Error(RPC_IMPORT_CLOSED));\n }\n const q = this.conn.newQuestion(cl.method);\n const msg = newMessage();\n const msgCall = msg._initCall();\n msgCall.questionId = q.id;\n msgCall.interfaceId = cl.method.interfaceId;\n msgCall.methodId = cl.method.methodId;\n const target = msgCall._initTarget();\n target.importedCap = this.id;\n const payload = msgCall._initParams();\n this.conn.fillParams(payload, cl);\n this.conn.sendMessage(msg);\n return q;\n }\n close() {\n }\n}\n\nclass LocalAnswerClient {\n constructor(a, transform) {\n this.a = a;\n this.transform = transform;\n }\n call(call) {\n if (this.a.done) {\n return clientFromResolution(this.transform, this.a.obj, this.a.err).call(\n call\n );\n }\n return new Fulfiller();\n }\n close() {\n throw new Error(NOT_IMPLEMENTED);\n }\n}\n\nconst ConnWeakRefRegistry = globalThis.FinalizationRegistry ? new FinalizationRegistry((cb) => cb()) : undefined;\nconst ConDefaultFinalize = (obj, finalizer) => {\n ConnWeakRefRegistry?.register(obj, finalizer);\n};\nclass Conn {\n /**\n * Create a new connection\n * @param transport The transport used to receive/send messages.\n * @param finalize Weak reference implementation. Compatible with\n * the 'weak' module on node.js (just add weak as a dependency and pass\n * require(\"weak\")), but alternative implementations can be provided for\n * other platforms like Electron. Defaults to using FinalizationRegistry if\n * available.\n * @returns A new connection.\n */\n constructor(transport, finalize = ConDefaultFinalize) {\n this.transport = transport;\n this.finalize = finalize;\n this.startWork();\n }\n questionID = new IDGen();\n questions = [];\n answers = {};\n exportID = new IDGen();\n exports = [];\n imports = {};\n onError;\n main;\n working = false;\n bootstrap(InterfaceClass) {\n const q = this.newQuestion();\n const msg = newMessage();\n const boot = msg._initBootstrap();\n boot.questionId = q.id;\n this.sendMessage(msg);\n return new InterfaceClass.Client(new Pipeline(AnyStruct, q).client());\n }\n initMain(InterfaceClass, target) {\n this.main = new InterfaceClass.Server(target);\n this.addExport(this.main);\n }\n startWork() {\n this.work().catch((error_) => {\n if (this.onError) {\n this.onError(error_);\n } else if (error_ !== undefined) {\n throw error_;\n }\n });\n }\n sendReturnException(id, err) {\n const m = newReturnMessage(id);\n setReturnException(m.return, err);\n this.sendMessage(m);\n }\n handleBootstrapMessage(m) {\n const boot = m.bootstrap;\n const id = boot.questionId;\n const ret = newReturnMessage(id);\n ret.return.releaseParamCaps = false;\n const a = this.insertAnswer(id);\n if (a === null) {\n return this.sendReturnException(id, new Error(RPC_QUESTION_ID_REUSED));\n }\n if (this.main === undefined) {\n return a.reject(new Error(RPC_NO_MAIN_INTERFACE));\n }\n const msg = new Message();\n msg.addCap(this.main);\n a.fulfill(new Interface(msg.getSegment(0), 0));\n }\n handleFinishMessage(m) {\n const { finish } = m;\n const id = finish.questionId;\n const a = this.popAnswer(id);\n if (a === null) {\n throw new Error(format(RPC_FINISH_UNKNOWN_ANSWER, id));\n }\n if (finish.releaseResultCaps) {\n const caps = a.resultCaps;\n let i = caps.length;\n while (--i >= 0) {\n this.releaseExport(i, 1);\n }\n }\n }\n handleMessage(m) {\n switch (m.which()) {\n case Message$1.UNIMPLEMENTED: {\n break;\n }\n case Message$1.BOOTSTRAP: {\n this.handleBootstrapMessage(m);\n break;\n }\n case Message$1.ABORT: {\n this.shutdown(new RPCError(m.abort));\n break;\n }\n case Message$1.FINISH: {\n this.handleFinishMessage(m);\n break;\n }\n case Message$1.RETURN: {\n this.handleReturnMessage(m);\n break;\n }\n case Message$1.CALL: {\n this.handleCallMessage(m);\n break;\n }\n }\n }\n handleReturnMessage(m) {\n const ret = m.return;\n const id = ret.answerId;\n const q = this.popQuestion(id);\n if (!q) {\n throw new Error(format(RPC_RETURN_FOR_UNKNOWN_QUESTION, id));\n }\n if (ret.releaseParamCaps) {\n for (let i = 0; i < q.paramCaps.length; i++) {\n this.releaseExport(id, 1);\n }\n }\n let releaseResultCaps = true;\n switch (ret.which()) {\n case Return.RESULTS: {\n releaseResultCaps = false;\n const { results } = ret;\n this.populateMessageCapTable(results);\n const { content } = results;\n q.fulfill(content);\n break;\n }\n case Return.EXCEPTION: {\n const exc = ret.exception;\n const err = q.method ? new MethodError(q.method, exc.reason) : new RPCError(exc);\n q.reject(err);\n break;\n }\n }\n const fin = newFinishMessage(id, releaseResultCaps);\n this.sendMessage(fin);\n }\n handleCallMessage(m) {\n const mcall = m.call;\n const mt = mcall.target;\n if (mt.which() !== MessageTarget.IMPORTED_CAP && mt.which() !== MessageTarget.PROMISED_ANSWER) {\n const um = newUnimplementedMessage(m);\n this.sendMessage(um);\n return;\n }\n const mparams = mcall.params;\n try {\n this.populateMessageCapTable(mparams);\n } catch {\n const um = newUnimplementedMessage(m);\n this.sendMessage(um);\n return;\n }\n const id = mcall.questionId;\n const a = this.insertAnswer(id);\n if (!a) {\n throw new Error(format(RPC_QUESTION_ID_REUSED, id));\n }\n const interfaceDef = Registry.lookup(mcall.interfaceId);\n if (!interfaceDef) {\n const um = newUnimplementedMessage(m);\n this.sendMessage(um);\n return;\n }\n const method = interfaceDef.methods[mcall.methodId];\n if (!method) {\n const um = newUnimplementedMessage(m);\n this.sendMessage(um);\n return;\n }\n const paramContent = mparams.content;\n const call = {\n method,\n params: getAs(method.ParamsClass, paramContent)\n };\n try {\n this.routeCallMessage(a, mt, call);\n } catch (error_) {\n a.reject(error_);\n }\n }\n routeCallMessage(result, mt, cl) {\n switch (mt.which()) {\n case MessageTarget.IMPORTED_CAP: {\n const id = mt.importedCap;\n const e = this.findExport(id);\n if (!e) {\n throw new Error(RPC_BAD_TARGET);\n }\n const answer = this.call(e.client, cl);\n joinAnswer(result, answer);\n break;\n }\n case MessageTarget.PROMISED_ANSWER: {\n const mpromise = mt.promisedAnswer;\n const id = mpromise.questionId;\n if (id === result.id) {\n throw new Error(RPC_BAD_TARGET);\n }\n const pa = this.answers[id];\n if (!pa) {\n throw new Error(RPC_BAD_TARGET);\n }\n const mtrans = mpromise.transform;\n const transform = promisedAnswerOpsToTransform(mtrans);\n if (pa.done) {\n const { obj, err } = pa;\n const client = clientFromResolution(transform, obj, err);\n const answer = this.call(client, cl);\n joinAnswer(result, answer);\n } else {\n pa.queueCall(cl, transform, result);\n }\n break;\n }\n default: {\n throw new Error(INVARIANT_UNREACHABLE_CODE);\n }\n }\n }\n populateMessageCapTable(payload) {\n const msg = payload.segment.message;\n const ctab = payload.capTable;\n for (const desc of ctab) {\n switch (desc.which()) {\n case CapDescriptor.NONE: {\n msg.addCap(null);\n break;\n }\n case CapDescriptor.SENDER_HOSTED: {\n const id = desc.senderHosted;\n const client = this.addImport(id);\n msg.addCap(client);\n break;\n }\n case CapDescriptor.SENDER_PROMISE: {\n const id = desc.senderPromise;\n const client = this.addImport(id);\n msg.addCap(client);\n break;\n }\n case CapDescriptor.RECEIVER_HOSTED: {\n const id = desc.receiverHosted;\n const e = this.findExport(id);\n if (!e) {\n throw new Error(format(RPC_UNKNOWN_EXPORT_ID, id));\n }\n msg.addCap(e.rc.ref());\n break;\n }\n case CapDescriptor.RECEIVER_ANSWER: {\n const recvAns = desc.receiverAnswer;\n const id = recvAns.questionId;\n const a = this.answers[id];\n if (!a) {\n throw new Error(format(RPC_UNKNOWN_ANSWER_ID, id));\n }\n const recvTransform = recvAns.transform;\n const transform = promisedAnswerOpsToTransform(recvTransform);\n msg.addCap(answerPipelineClient(a, transform));\n break;\n }\n default: {\n throw new Error(format(RPC_UNKNOWN_CAP_DESCRIPTOR, desc.which()));\n }\n }\n }\n }\n addImport(id) {\n const importEntry = this.imports[id];\n if (importEntry) {\n importEntry.refs++;\n return importEntry.rc.ref();\n }\n const client = new ImportClient(this, id);\n const [rc, ref] = RefCount.new(client, this.finalize);\n this.imports[id] = {\n rc,\n refs: 1\n };\n return ref;\n }\n findExport(id) {\n if (id > this.exports.length) {\n return null;\n }\n return this.exports[id];\n }\n addExport(client) {\n for (let i = 0; i < this.exports.length; i++) {\n const e = this.exports[i];\n if (e && isSameClient(e.rc._client, client)) {\n e.wireRefs++;\n return i;\n }\n }\n const id = this.exportID.next();\n const [rc, ref] = RefCount.new(client, this.finalize);\n const _export = {\n client: ref,\n id,\n rc,\n wireRefs: 1\n };\n if (id === this.exports.length) {\n this.exports.push(_export);\n } else {\n this.exports[id] = _export;\n }\n return id;\n }\n releaseExport(id, refs) {\n const e = this.findExport(id);\n if (!e) {\n return;\n }\n e.wireRefs -= refs;\n if (e.wireRefs > 0) {\n return;\n }\n if (e.wireRefs < 0) {\n this.error(`warning: export ${id} has negative refcount (${e.wireRefs})`);\n }\n e.client.close();\n this.exports[id] = null;\n this.exportID.remove(id);\n }\n error(s) {\n console.error(s);\n }\n newQuestion(method) {\n const id = this.questionID.next();\n const q = new Question(this, id, method);\n if (id === this.questions.length) {\n this.questions.push(q);\n } else {\n this.questions[id] = q;\n }\n return q;\n }\n findQuestion(id) {\n if (id > this.questions.length) {\n return null;\n }\n return this.questions[id];\n }\n popQuestion(id) {\n const q = this.findQuestion(id);\n if (!q) {\n return q;\n }\n this.questions[id] = null;\n this.questionID.remove(id);\n return q;\n }\n // TODO: cancel context?\n insertAnswer(id) {\n if (this.answers[id]) {\n return null;\n }\n const a = new AnswerEntry(this, id);\n this.answers[id] = a;\n return a;\n }\n popAnswer(id) {\n const a = this.answers[id];\n delete this.answers[id];\n return a;\n }\n shutdown(_err) {\n this.transport.close();\n }\n call(client, call) {\n return client.call(call);\n }\n fillParams(payload, cl) {\n const params = placeParams(cl, payload.content);\n payload.content = params;\n this.makeCapTable(\n payload.segment,\n (length) => payload._initCapTable(length)\n );\n }\n makeCapTable(s, init) {\n const msgtab = s.message._capnp.capTable;\n if (!msgtab) {\n return;\n }\n const t = init(msgtab.length);\n for (const [i, client] of msgtab.entries()) {\n const desc = t.get(i);\n if (!client) {\n desc.none = true;\n continue;\n }\n this.descriptorForClient(desc, client);\n }\n }\n // descriptorForClient fills desc for client, adding it to the export\n // table if necessary. The caller must be holding onto c.mu.\n descriptorForClient(desc, _client) {\n {\n dig: for (let client = _client; ; ) {\n if (client instanceof ImportClient) {\n if (client.conn !== this) {\n break dig;\n }\n desc.receiverHosted = client.id;\n return;\n } else if (client instanceof Ref) {\n client = client.client();\n } else if (client instanceof PipelineClient) {\n const p = client.pipeline;\n const ans = p.answer;\n const transform = p.transform();\n if (ans instanceof FixedAnswer) {\n let s;\n let err;\n try {\n s = ans.structSync();\n } catch (error_) {\n err = error_;\n }\n client = clientFromResolution(transform, s, err);\n } else if (ans instanceof Question) {\n if (ans.state !== QuestionState.IN_PROGRESS) {\n client = clientFromResolution(transform, ans.obj, ans.err);\n continue;\n }\n if (ans.conn !== this) {\n break dig;\n }\n const a = desc._initReceiverAnswer();\n a.questionId = ans.id;\n transformToPromisedAnswer(a, p.transform());\n return;\n } else {\n break dig;\n }\n } else {\n break dig;\n }\n }\n }\n const id = this.addExport(_client);\n desc.senderHosted = id;\n }\n sendMessage(msg) {\n this.transport.sendMessage(msg);\n }\n async work() {\n this.working = true;\n while (this.working) {\n try {\n const m = await this.transport.recvMessage();\n this.handleMessage(m);\n } catch (error_) {\n if (error_ !== undefined) {\n throw error_;\n }\n this.working = false;\n }\n }\n }\n}\nfunction answerPipelineClient(a, transform) {\n return new LocalAnswerClient(a, transform);\n}\n\nclass DeferredTransport {\n d;\n closed = false;\n close() {\n this.closed = true;\n this.d?.reject();\n }\n recvMessage() {\n if (this.closed) {\n return Promise.reject();\n }\n if (this.d) {\n this.d.reject();\n }\n this.d = new Deferred();\n return this.d.promise;\n }\n reject = (err) => {\n this.d?.reject(err);\n };\n resolve = (buf) => {\n try {\n this.d?.resolve(new Message(buf, false).getRoot(Message$1));\n } catch (error_) {\n this.d?.reject(error_);\n }\n };\n}\n\nexport { AnyPointerList, BoolList, Conn, Data, DataList, Deferred, DeferredTransport, ErrorClient, Float32List, Float64List, Int16List, Int32List, Int64List, Int8List, Interface, InterfaceList, List, ListElementSize, Message, ObjectSize, Pipeline, Pointer, PointerList, Registry, Struct, Text, TextList, Uint16List, Uint32List, Uint64List, Uint8List, Void, VoidList, answerPipelineClient, clientFromResolution, copyCall, isSameClient, placeParams, utils };\n"],"x_google_ignoreList":[0,1,2,3,4],"mappings":"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"}