objdiff-wasm 2.0.0-beta.6 → 2.0.0-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.d.ts CHANGED
@@ -622,11 +622,10 @@ declare const DiffResult: DiffResult$Type;
622
622
 
623
623
  /**
624
624
  */
625
- declare enum MipsAbi {
626
- Auto = 0,
627
- O32 = 1,
628
- N32 = 2,
629
- N64 = 3,
625
+ declare enum ArmR9Usage {
626
+ GeneralPurpose = 0,
627
+ Sb = 1,
628
+ Tr = 2,
630
629
  }
631
630
  /**
632
631
  */
@@ -646,10 +645,11 @@ declare enum X86Formatter {
646
645
  }
647
646
  /**
648
647
  */
649
- declare enum ArmR9Usage {
650
- GeneralPurpose = 0,
651
- Sb = 1,
652
- Tr = 2,
648
+ declare enum MipsAbi {
649
+ Auto = 0,
650
+ O32 = 1,
651
+ N32 = 2,
652
+ N64 = 3,
653
653
  }
654
654
  /**
655
655
  */
@@ -708,7 +708,10 @@ declare class DiffObjConfig$1 {
708
708
 
709
709
  type DiffObjConfig = Omit<Partial<DiffObjConfig$1>, 'free'>;
710
710
 
711
- declare function initialize(workerUrl?: string | URL): void;
711
+ declare function initialize(data?: {
712
+ workerUrl?: string | URL;
713
+ wasmUrl?: string | URL;
714
+ }): Promise<void>;
712
715
  declare function runDiff(left: Uint8Array | undefined, right: Uint8Array | undefined, config?: DiffObjConfig): Promise<DiffResult>;
713
716
  type DiffText = DiffTextBasic | DiffTextBasicColor | DiffTextAddress | DiffTextLine | DiffTextOpcode | DiffTextArgument | DiffTextSymbol | DiffTextBranchDest | DiffTextSpacing;
714
717
  type DiffTextBase = {
package/dist/main.js CHANGED
@@ -1249,33 +1249,50 @@ var workerCallbacks = null;
1249
1249
  var workerReady = new Promise((resolve, reject) => {
1250
1250
  workerCallbacks = { start: performance.now(), resolve, reject };
1251
1251
  });
1252
- function initialize(workerUrl) {
1252
+ async function initialize(data) {
1253
1253
  if (workerInit) {
1254
1254
  return;
1255
1255
  }
1256
1256
  workerInit = true;
1257
- const worker = new Worker(workerUrl || "worker.js", { type: "module" });
1258
- worker.onmessage = onMessage.bind(null, worker);
1259
- worker.onerror = (error) => {
1260
- console.error("Worker error", error);
1261
- workerCallbacks.reject(error);
1257
+ let { workerUrl, wasmUrl } = data || {};
1258
+ if (!workerUrl) {
1259
+ workerUrl = new URL("./worker.js", import.meta.url);
1260
+ }
1261
+ if (!wasmUrl) {
1262
+ wasmUrl = new URL("./objdiff_core_bg.wasm", import.meta.url);
1263
+ }
1264
+ const worker = new Worker(workerUrl, { type: "module" });
1265
+ worker.onmessage = onMessage;
1266
+ worker.onerror = (event) => {
1267
+ console.error("Worker error", event);
1268
+ workerCallbacks.reject(event);
1262
1269
  };
1270
+ await defer({
1271
+ type: "init",
1272
+ wasmUrl
1273
+ }, worker).then(() => {
1274
+ workerCallbacks.resolve(worker);
1275
+ }, (e) => {
1276
+ workerCallbacks.reject(e);
1277
+ throw e;
1278
+ });
1263
1279
  }
1264
1280
  var globalMessageId = 0;
1265
1281
  var messageCallbacks = /* @__PURE__ */ new Map();
1266
- function onMessage(worker, event) {
1282
+ function onMessage(event) {
1267
1283
  switch (event.data.type) {
1268
- case "ready":
1269
- workerCallbacks.resolve(worker);
1270
- break;
1271
1284
  case "result": {
1272
- const { messageId, result } = event.data;
1285
+ const { result, error, messageId } = event.data;
1273
1286
  const callbacks = messageCallbacks.get(messageId);
1274
1287
  if (callbacks) {
1275
1288
  const end = performance.now();
1276
1289
  console.debug(`Message ${messageId} took ${end - callbacks.start}ms`);
1277
1290
  messageCallbacks.delete(messageId);
1278
- callbacks.resolve(result);
1291
+ if (error != null) {
1292
+ callbacks.reject(error);
1293
+ } else {
1294
+ callbacks.resolve(result);
1295
+ }
1279
1296
  } else {
1280
1297
  console.warn(`Unknown message ID ${messageId}`);
1281
1298
  }
@@ -1283,11 +1300,13 @@ function onMessage(worker, event) {
1283
1300
  }
1284
1301
  }
1285
1302
  }
1286
- async function defer(message) {
1287
- if (!workerInit) {
1288
- throw new Error("Worker not initialized");
1303
+ async function defer(message, worker) {
1304
+ if (worker == null) {
1305
+ if (!workerInit) {
1306
+ throw new Error("Worker not initialized");
1307
+ }
1308
+ worker = await workerReady;
1289
1309
  }
1290
- const worker = await workerReady;
1291
1310
  const messageId = globalMessageId++;
1292
1311
  const promise = new Promise((resolve, reject) => {
1293
1312
  messageCallbacks.set(messageId, { start: performance.now(), resolve, reject });
@@ -1300,7 +1319,7 @@ async function defer(message) {
1300
1319
  }
1301
1320
  async function runDiff(left, right, config) {
1302
1321
  const data = await defer({
1303
- type: "run_diff",
1322
+ type: "run_diff_proto",
1304
1323
  left,
1305
1324
  right,
1306
1325
  config
@@ -1315,7 +1334,6 @@ function oneof(type) {
1315
1334
  return type;
1316
1335
  }
1317
1336
  function displayDiff(diff, baseAddr, cb) {
1318
- var _a;
1319
1337
  const ins = diff.instruction;
1320
1338
  if (!ins) {
1321
1339
  return;
@@ -1331,11 +1349,11 @@ function displayDiff(diff, baseAddr, cb) {
1331
1349
  }
1332
1350
  cb({ type: "opcode", mnemonic: ins.mnemonic, opcode: ins.opcode });
1333
1351
  for (let i = 0; i < ins.arguments.length; i++) {
1334
- if (i == 0) {
1352
+ if (i === 0) {
1335
1353
  cb({ type: "spacing", count: 1 });
1336
1354
  }
1337
1355
  const arg = oneof(ins.arguments[i].value);
1338
- const diff_index = (_a = diff.arg_diff[i]) == null ? void 0 : _a.diff_index;
1356
+ const diff_index = diff.arg_diff[i]?.diff_index;
1339
1357
  switch (arg.oneofKind) {
1340
1358
  case "plain_text":
1341
1359
  cb({ type: "basic", text: arg.plain_text, diff_index });
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../gen/diff_pb.ts","../src/main.ts"],"sourcesContent":["/* eslint-disable */\n// @generated by protobuf-ts 2.9.4 with parameter add_pb_suffix,eslint_disable,ts_nocheck,use_proto_field_name\n// @generated from protobuf file \"diff.proto\" (package \"objdiff.diff\", syntax proto3)\n// tslint:disable\n// @ts-nocheck\nimport type { BinaryWriteOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryWriter } from \"@protobuf-ts/runtime\";\nimport { WireType } from \"@protobuf-ts/runtime\";\nimport type { BinaryReadOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryReader } from \"@protobuf-ts/runtime\";\nimport { UnknownFieldHandler } from \"@protobuf-ts/runtime\";\nimport type { PartialMessage } from \"@protobuf-ts/runtime\";\nimport { reflectionMergePartial } from \"@protobuf-ts/runtime\";\nimport { MessageType } from \"@protobuf-ts/runtime\";\n/**\n * A symbol\n *\n * @generated from protobuf message objdiff.diff.Symbol\n */\nexport interface Symbol {\n /**\n * Name of the symbol\n *\n * @generated from protobuf field: string name = 1;\n */\n name: string;\n /**\n * Demangled name of the symbol\n *\n * @generated from protobuf field: optional string demangled_name = 2;\n */\n demangled_name?: string;\n /**\n * Symbol address\n *\n * @generated from protobuf field: uint64 address = 3;\n */\n address: bigint;\n /**\n * Symbol size\n *\n * @generated from protobuf field: uint64 size = 4;\n */\n size: bigint;\n /**\n * Bitmask of SymbolFlag\n *\n * @generated from protobuf field: uint32 flags = 5;\n */\n flags: number;\n}\n/**\n * A single parsed instruction\n *\n * @generated from protobuf message objdiff.diff.Instruction\n */\nexport interface Instruction {\n /**\n * Instruction address\n *\n * @generated from protobuf field: uint64 address = 1;\n */\n address: bigint;\n /**\n * Instruction size\n *\n * @generated from protobuf field: uint32 size = 2;\n */\n size: number;\n /**\n * Instruction opcode\n *\n * @generated from protobuf field: uint32 opcode = 3;\n */\n opcode: number;\n /**\n * Instruction mnemonic\n *\n * @generated from protobuf field: string mnemonic = 4;\n */\n mnemonic: string;\n /**\n * Instruction formatted string\n *\n * @generated from protobuf field: string formatted = 5;\n */\n formatted: string;\n /**\n * Original (unsimplified) instruction string\n *\n * @generated from protobuf field: optional string original = 6;\n */\n original?: string;\n /**\n * Instruction arguments\n *\n * @generated from protobuf field: repeated objdiff.diff.Argument arguments = 7;\n */\n arguments: Argument[];\n /**\n * Instruction relocation\n *\n * @generated from protobuf field: optional objdiff.diff.Relocation relocation = 8;\n */\n relocation?: Relocation;\n /**\n * Instruction branch destination\n *\n * @generated from protobuf field: optional uint64 branch_dest = 9;\n */\n branch_dest?: bigint;\n /**\n * Instruction line number\n *\n * @generated from protobuf field: optional uint32 line_number = 10;\n */\n line_number?: number;\n}\n/**\n * An instruction argument\n *\n * @generated from protobuf message objdiff.diff.Argument\n */\nexport interface Argument {\n /**\n * @generated from protobuf oneof: value\n */\n value: {\n oneofKind: \"plain_text\";\n /**\n * Plain text\n *\n * @generated from protobuf field: string plain_text = 1;\n */\n plain_text: string;\n } | {\n oneofKind: \"argument\";\n /**\n * Value\n *\n * @generated from protobuf field: objdiff.diff.ArgumentValue argument = 2;\n */\n argument: ArgumentValue;\n } | {\n oneofKind: \"relocation\";\n /**\n * Relocation\n *\n * @generated from protobuf field: objdiff.diff.ArgumentRelocation relocation = 3;\n */\n relocation: ArgumentRelocation;\n } | {\n oneofKind: \"branch_dest\";\n /**\n * Branch destination\n *\n * @generated from protobuf field: uint64 branch_dest = 4;\n */\n branch_dest: bigint;\n } | {\n oneofKind: undefined;\n };\n}\n/**\n * An instruction argument value\n *\n * @generated from protobuf message objdiff.diff.ArgumentValue\n */\nexport interface ArgumentValue {\n /**\n * @generated from protobuf oneof: value\n */\n value: {\n oneofKind: \"signed\";\n /**\n * Signed integer\n *\n * @generated from protobuf field: int64 signed = 1;\n */\n signed: bigint;\n } | {\n oneofKind: \"unsigned\";\n /**\n * Unsigned integer\n *\n * @generated from protobuf field: uint64 unsigned = 2;\n */\n unsigned: bigint;\n } | {\n oneofKind: \"opaque\";\n /**\n * Opaque value\n *\n * @generated from protobuf field: string opaque = 3;\n */\n opaque: string;\n } | {\n oneofKind: undefined;\n };\n}\n/**\n * Marker type for relocation arguments\n *\n * @generated from protobuf message objdiff.diff.ArgumentRelocation\n */\nexport interface ArgumentRelocation {\n}\n/**\n * @generated from protobuf message objdiff.diff.Relocation\n */\nexport interface Relocation {\n /**\n * @generated from protobuf field: uint32 type = 1;\n */\n type: number;\n /**\n * @generated from protobuf field: string type_name = 2;\n */\n type_name: string;\n /**\n * @generated from protobuf field: objdiff.diff.RelocationTarget target = 3;\n */\n target?: RelocationTarget;\n}\n/**\n * @generated from protobuf message objdiff.diff.RelocationTarget\n */\nexport interface RelocationTarget {\n /**\n * @generated from protobuf field: objdiff.diff.Symbol symbol = 1;\n */\n symbol?: Symbol;\n /**\n * @generated from protobuf field: int64 addend = 2;\n */\n addend: bigint;\n}\n/**\n * @generated from protobuf message objdiff.diff.InstructionDiff\n */\nexport interface InstructionDiff {\n /**\n * @generated from protobuf field: objdiff.diff.DiffKind diff_kind = 1;\n */\n diff_kind: DiffKind;\n /**\n * @generated from protobuf field: optional objdiff.diff.Instruction instruction = 2;\n */\n instruction?: Instruction;\n /**\n * @generated from protobuf field: optional objdiff.diff.InstructionBranchFrom branch_from = 3;\n */\n branch_from?: InstructionBranchFrom;\n /**\n * @generated from protobuf field: optional objdiff.diff.InstructionBranchTo branch_to = 4;\n */\n branch_to?: InstructionBranchTo;\n /**\n * @generated from protobuf field: repeated objdiff.diff.ArgumentDiff arg_diff = 5;\n */\n arg_diff: ArgumentDiff[];\n}\n/**\n * @generated from protobuf message objdiff.diff.ArgumentDiff\n */\nexport interface ArgumentDiff {\n /**\n * @generated from protobuf field: optional uint32 diff_index = 1;\n */\n diff_index?: number;\n}\n/**\n * @generated from protobuf message objdiff.diff.InstructionBranchFrom\n */\nexport interface InstructionBranchFrom {\n /**\n * @generated from protobuf field: repeated uint32 instruction_index = 1;\n */\n instruction_index: number[];\n /**\n * @generated from protobuf field: uint32 branch_index = 2;\n */\n branch_index: number;\n}\n/**\n * @generated from protobuf message objdiff.diff.InstructionBranchTo\n */\nexport interface InstructionBranchTo {\n /**\n * @generated from protobuf field: uint32 instruction_index = 1;\n */\n instruction_index: number;\n /**\n * @generated from protobuf field: uint32 branch_index = 2;\n */\n branch_index: number;\n}\n/**\n * @generated from protobuf message objdiff.diff.FunctionDiff\n */\nexport interface FunctionDiff {\n /**\n * @generated from protobuf field: objdiff.diff.Symbol symbol = 1;\n */\n symbol?: Symbol;\n /**\n * @generated from protobuf field: repeated objdiff.diff.InstructionDiff instructions = 2;\n */\n instructions: InstructionDiff[];\n /**\n * @generated from protobuf field: optional float match_percent = 3;\n */\n match_percent?: number;\n}\n/**\n * @generated from protobuf message objdiff.diff.DataDiff\n */\nexport interface DataDiff {\n /**\n * @generated from protobuf field: objdiff.diff.DiffKind kind = 1;\n */\n kind: DiffKind;\n /**\n * @generated from protobuf field: bytes data = 2;\n */\n data: Uint8Array;\n /**\n * May be larger than data\n *\n * @generated from protobuf field: uint64 size = 3;\n */\n size: bigint;\n}\n/**\n * @generated from protobuf message objdiff.diff.SectionDiff\n */\nexport interface SectionDiff {\n /**\n * @generated from protobuf field: string name = 1;\n */\n name: string;\n /**\n * @generated from protobuf field: objdiff.diff.SectionKind kind = 2;\n */\n kind: SectionKind;\n /**\n * @generated from protobuf field: uint64 size = 3;\n */\n size: bigint;\n /**\n * @generated from protobuf field: uint64 address = 4;\n */\n address: bigint;\n /**\n * @generated from protobuf field: repeated objdiff.diff.FunctionDiff functions = 5;\n */\n functions: FunctionDiff[];\n /**\n * @generated from protobuf field: repeated objdiff.diff.DataDiff data = 6;\n */\n data: DataDiff[];\n /**\n * @generated from protobuf field: optional float match_percent = 7;\n */\n match_percent?: number;\n}\n/**\n * @generated from protobuf message objdiff.diff.ObjectDiff\n */\nexport interface ObjectDiff {\n /**\n * @generated from protobuf field: repeated objdiff.diff.SectionDiff sections = 1;\n */\n sections: SectionDiff[];\n}\n/**\n * @generated from protobuf message objdiff.diff.DiffResult\n */\nexport interface DiffResult {\n /**\n * @generated from protobuf field: optional objdiff.diff.ObjectDiff left = 1;\n */\n left?: ObjectDiff;\n /**\n * @generated from protobuf field: optional objdiff.diff.ObjectDiff right = 2;\n */\n right?: ObjectDiff;\n}\n/**\n * Symbol visibility flags\n *\n * @generated from protobuf enum objdiff.diff.SymbolFlag\n */\nexport enum SymbolFlag {\n /**\n * @generated from protobuf enum value: SYMBOL_NONE = 0;\n */\n SYMBOL_NONE = 0,\n /**\n * @generated from protobuf enum value: SYMBOL_GLOBAL = 1;\n */\n SYMBOL_GLOBAL = 1,\n /**\n * @generated from protobuf enum value: SYMBOL_LOCAL = 2;\n */\n SYMBOL_LOCAL = 2,\n /**\n * @generated from protobuf enum value: SYMBOL_WEAK = 3;\n */\n SYMBOL_WEAK = 3,\n /**\n * @generated from protobuf enum value: SYMBOL_COMMON = 4;\n */\n SYMBOL_COMMON = 4,\n /**\n * @generated from protobuf enum value: SYMBOL_HIDDEN = 5;\n */\n SYMBOL_HIDDEN = 5\n}\n/**\n * @generated from protobuf enum objdiff.diff.DiffKind\n */\nexport enum DiffKind {\n /**\n * @generated from protobuf enum value: DIFF_NONE = 0;\n */\n DIFF_NONE = 0,\n /**\n * @generated from protobuf enum value: DIFF_REPLACE = 1;\n */\n DIFF_REPLACE = 1,\n /**\n * @generated from protobuf enum value: DIFF_DELETE = 2;\n */\n DIFF_DELETE = 2,\n /**\n * @generated from protobuf enum value: DIFF_INSERT = 3;\n */\n DIFF_INSERT = 3,\n /**\n * @generated from protobuf enum value: DIFF_OP_MISMATCH = 4;\n */\n DIFF_OP_MISMATCH = 4,\n /**\n * @generated from protobuf enum value: DIFF_ARG_MISMATCH = 5;\n */\n DIFF_ARG_MISMATCH = 5\n}\n/**\n * @generated from protobuf enum objdiff.diff.SectionKind\n */\nexport enum SectionKind {\n /**\n * @generated from protobuf enum value: SECTION_UNKNOWN = 0;\n */\n SECTION_UNKNOWN = 0,\n /**\n * @generated from protobuf enum value: SECTION_TEXT = 1;\n */\n SECTION_TEXT = 1,\n /**\n * @generated from protobuf enum value: SECTION_DATA = 2;\n */\n SECTION_DATA = 2,\n /**\n * @generated from protobuf enum value: SECTION_BSS = 3;\n */\n SECTION_BSS = 3,\n /**\n * @generated from protobuf enum value: SECTION_COMMON = 4;\n */\n SECTION_COMMON = 4\n}\n// @generated message type with reflection information, may provide speed optimized methods\nclass Symbol$Type extends MessageType<Symbol> {\n constructor() {\n super(\"objdiff.diff.Symbol\", [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n { no: 2, name: \"demangled_name\", kind: \"scalar\", localName: \"demangled_name\", opt: true, T: 9 /*ScalarType.STRING*/ },\n { no: 3, name: \"address\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 4, name: \"size\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 5, name: \"flags\", kind: \"scalar\", T: 13 /*ScalarType.UINT32*/ }\n ]);\n }\n create(value?: PartialMessage<Symbol>): Symbol {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.name = \"\";\n message.address = 0n;\n message.size = 0n;\n message.flags = 0;\n if (value !== undefined)\n reflectionMergePartial<Symbol>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Symbol): Symbol {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string name */ 1:\n message.name = reader.string();\n break;\n case /* optional string demangled_name */ 2:\n message.demangled_name = reader.string();\n break;\n case /* uint64 address */ 3:\n message.address = reader.uint64().toBigInt();\n break;\n case /* uint64 size */ 4:\n message.size = reader.uint64().toBigInt();\n break;\n case /* uint32 flags */ 5:\n message.flags = reader.uint32();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: Symbol, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string name = 1; */\n if (message.name !== \"\")\n writer.tag(1, WireType.LengthDelimited).string(message.name);\n /* optional string demangled_name = 2; */\n if (message.demangled_name !== undefined)\n writer.tag(2, WireType.LengthDelimited).string(message.demangled_name);\n /* uint64 address = 3; */\n if (message.address !== 0n)\n writer.tag(3, WireType.Varint).uint64(message.address);\n /* uint64 size = 4; */\n if (message.size !== 0n)\n writer.tag(4, WireType.Varint).uint64(message.size);\n /* uint32 flags = 5; */\n if (message.flags !== 0)\n writer.tag(5, WireType.Varint).uint32(message.flags);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.Symbol\n */\nexport const Symbol = new Symbol$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass Instruction$Type extends MessageType<Instruction> {\n constructor() {\n super(\"objdiff.diff.Instruction\", [\n { no: 1, name: \"address\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 2, name: \"size\", kind: \"scalar\", T: 13 /*ScalarType.UINT32*/ },\n { no: 3, name: \"opcode\", kind: \"scalar\", T: 13 /*ScalarType.UINT32*/ },\n { no: 4, name: \"mnemonic\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n { no: 5, name: \"formatted\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n { no: 6, name: \"original\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ },\n { no: 7, name: \"arguments\", kind: \"message\", repeat: 1 /*RepeatType.PACKED*/, T: () => Argument },\n { no: 8, name: \"relocation\", kind: \"message\", T: () => Relocation },\n { no: 9, name: \"branch_dest\", kind: \"scalar\", localName: \"branch_dest\", opt: true, T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 10, name: \"line_number\", kind: \"scalar\", localName: \"line_number\", opt: true, T: 13 /*ScalarType.UINT32*/ }\n ]);\n }\n create(value?: PartialMessage<Instruction>): Instruction {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.address = 0n;\n message.size = 0;\n message.opcode = 0;\n message.mnemonic = \"\";\n message.formatted = \"\";\n message.arguments = [];\n if (value !== undefined)\n reflectionMergePartial<Instruction>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Instruction): Instruction {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* uint64 address */ 1:\n message.address = reader.uint64().toBigInt();\n break;\n case /* uint32 size */ 2:\n message.size = reader.uint32();\n break;\n case /* uint32 opcode */ 3:\n message.opcode = reader.uint32();\n break;\n case /* string mnemonic */ 4:\n message.mnemonic = reader.string();\n break;\n case /* string formatted */ 5:\n message.formatted = reader.string();\n break;\n case /* optional string original */ 6:\n message.original = reader.string();\n break;\n case /* repeated objdiff.diff.Argument arguments */ 7:\n message.arguments.push(Argument.internalBinaryRead(reader, reader.uint32(), options));\n break;\n case /* optional objdiff.diff.Relocation relocation */ 8:\n message.relocation = Relocation.internalBinaryRead(reader, reader.uint32(), options, message.relocation);\n break;\n case /* optional uint64 branch_dest */ 9:\n message.branch_dest = reader.uint64().toBigInt();\n break;\n case /* optional uint32 line_number */ 10:\n message.line_number = reader.uint32();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: Instruction, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* uint64 address = 1; */\n if (message.address !== 0n)\n writer.tag(1, WireType.Varint).uint64(message.address);\n /* uint32 size = 2; */\n if (message.size !== 0)\n writer.tag(2, WireType.Varint).uint32(message.size);\n /* uint32 opcode = 3; */\n if (message.opcode !== 0)\n writer.tag(3, WireType.Varint).uint32(message.opcode);\n /* string mnemonic = 4; */\n if (message.mnemonic !== \"\")\n writer.tag(4, WireType.LengthDelimited).string(message.mnemonic);\n /* string formatted = 5; */\n if (message.formatted !== \"\")\n writer.tag(5, WireType.LengthDelimited).string(message.formatted);\n /* optional string original = 6; */\n if (message.original !== undefined)\n writer.tag(6, WireType.LengthDelimited).string(message.original);\n /* repeated objdiff.diff.Argument arguments = 7; */\n for (let i = 0; i < message.arguments.length; i++)\n Argument.internalBinaryWrite(message.arguments[i], writer.tag(7, WireType.LengthDelimited).fork(), options).join();\n /* optional objdiff.diff.Relocation relocation = 8; */\n if (message.relocation)\n Relocation.internalBinaryWrite(message.relocation, writer.tag(8, WireType.LengthDelimited).fork(), options).join();\n /* optional uint64 branch_dest = 9; */\n if (message.branch_dest !== undefined)\n writer.tag(9, WireType.Varint).uint64(message.branch_dest);\n /* optional uint32 line_number = 10; */\n if (message.line_number !== undefined)\n writer.tag(10, WireType.Varint).uint32(message.line_number);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.Instruction\n */\nexport const Instruction = new Instruction$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass Argument$Type extends MessageType<Argument> {\n constructor() {\n super(\"objdiff.diff.Argument\", [\n { no: 1, name: \"plain_text\", kind: \"scalar\", localName: \"plain_text\", oneof: \"value\", T: 9 /*ScalarType.STRING*/ },\n { no: 2, name: \"argument\", kind: \"message\", oneof: \"value\", T: () => ArgumentValue },\n { no: 3, name: \"relocation\", kind: \"message\", oneof: \"value\", T: () => ArgumentRelocation },\n { no: 4, name: \"branch_dest\", kind: \"scalar\", localName: \"branch_dest\", oneof: \"value\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ }\n ]);\n }\n create(value?: PartialMessage<Argument>): Argument {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.value = { oneofKind: undefined };\n if (value !== undefined)\n reflectionMergePartial<Argument>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Argument): Argument {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string plain_text */ 1:\n message.value = {\n oneofKind: \"plain_text\",\n plain_text: reader.string()\n };\n break;\n case /* objdiff.diff.ArgumentValue argument */ 2:\n message.value = {\n oneofKind: \"argument\",\n argument: ArgumentValue.internalBinaryRead(reader, reader.uint32(), options, (message.value as any).argument)\n };\n break;\n case /* objdiff.diff.ArgumentRelocation relocation */ 3:\n message.value = {\n oneofKind: \"relocation\",\n relocation: ArgumentRelocation.internalBinaryRead(reader, reader.uint32(), options, (message.value as any).relocation)\n };\n break;\n case /* uint64 branch_dest */ 4:\n message.value = {\n oneofKind: \"branch_dest\",\n branch_dest: reader.uint64().toBigInt()\n };\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: Argument, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string plain_text = 1; */\n if (message.value.oneofKind === \"plain_text\")\n writer.tag(1, WireType.LengthDelimited).string(message.value.plain_text);\n /* objdiff.diff.ArgumentValue argument = 2; */\n if (message.value.oneofKind === \"argument\")\n ArgumentValue.internalBinaryWrite(message.value.argument, writer.tag(2, WireType.LengthDelimited).fork(), options).join();\n /* objdiff.diff.ArgumentRelocation relocation = 3; */\n if (message.value.oneofKind === \"relocation\")\n ArgumentRelocation.internalBinaryWrite(message.value.relocation, writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n /* uint64 branch_dest = 4; */\n if (message.value.oneofKind === \"branch_dest\")\n writer.tag(4, WireType.Varint).uint64(message.value.branch_dest);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.Argument\n */\nexport const Argument = new Argument$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ArgumentValue$Type extends MessageType<ArgumentValue> {\n constructor() {\n super(\"objdiff.diff.ArgumentValue\", [\n { no: 1, name: \"signed\", kind: \"scalar\", oneof: \"value\", T: 3 /*ScalarType.INT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 2, name: \"unsigned\", kind: \"scalar\", oneof: \"value\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 3, name: \"opaque\", kind: \"scalar\", oneof: \"value\", T: 9 /*ScalarType.STRING*/ }\n ]);\n }\n create(value?: PartialMessage<ArgumentValue>): ArgumentValue {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.value = { oneofKind: undefined };\n if (value !== undefined)\n reflectionMergePartial<ArgumentValue>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ArgumentValue): ArgumentValue {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* int64 signed */ 1:\n message.value = {\n oneofKind: \"signed\",\n signed: reader.int64().toBigInt()\n };\n break;\n case /* uint64 unsigned */ 2:\n message.value = {\n oneofKind: \"unsigned\",\n unsigned: reader.uint64().toBigInt()\n };\n break;\n case /* string opaque */ 3:\n message.value = {\n oneofKind: \"opaque\",\n opaque: reader.string()\n };\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: ArgumentValue, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* int64 signed = 1; */\n if (message.value.oneofKind === \"signed\")\n writer.tag(1, WireType.Varint).int64(message.value.signed);\n /* uint64 unsigned = 2; */\n if (message.value.oneofKind === \"unsigned\")\n writer.tag(2, WireType.Varint).uint64(message.value.unsigned);\n /* string opaque = 3; */\n if (message.value.oneofKind === \"opaque\")\n writer.tag(3, WireType.LengthDelimited).string(message.value.opaque);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.ArgumentValue\n */\nexport const ArgumentValue = new ArgumentValue$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ArgumentRelocation$Type extends MessageType<ArgumentRelocation> {\n constructor() {\n super(\"objdiff.diff.ArgumentRelocation\", []);\n }\n create(value?: PartialMessage<ArgumentRelocation>): ArgumentRelocation {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<ArgumentRelocation>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ArgumentRelocation): ArgumentRelocation {\n return target ?? this.create();\n }\n internalBinaryWrite(message: ArgumentRelocation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.ArgumentRelocation\n */\nexport const ArgumentRelocation = new ArgumentRelocation$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass Relocation$Type extends MessageType<Relocation> {\n constructor() {\n super(\"objdiff.diff.Relocation\", [\n { no: 1, name: \"type\", kind: \"scalar\", T: 13 /*ScalarType.UINT32*/ },\n { no: 2, name: \"type_name\", kind: \"scalar\", localName: \"type_name\", T: 9 /*ScalarType.STRING*/ },\n { no: 3, name: \"target\", kind: \"message\", T: () => RelocationTarget }\n ]);\n }\n create(value?: PartialMessage<Relocation>): Relocation {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.type = 0;\n message.type_name = \"\";\n if (value !== undefined)\n reflectionMergePartial<Relocation>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Relocation): Relocation {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* uint32 type */ 1:\n message.type = reader.uint32();\n break;\n case /* string type_name */ 2:\n message.type_name = reader.string();\n break;\n case /* objdiff.diff.RelocationTarget target */ 3:\n message.target = RelocationTarget.internalBinaryRead(reader, reader.uint32(), options, message.target);\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: Relocation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* uint32 type = 1; */\n if (message.type !== 0)\n writer.tag(1, WireType.Varint).uint32(message.type);\n /* string type_name = 2; */\n if (message.type_name !== \"\")\n writer.tag(2, WireType.LengthDelimited).string(message.type_name);\n /* objdiff.diff.RelocationTarget target = 3; */\n if (message.target)\n RelocationTarget.internalBinaryWrite(message.target, writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.Relocation\n */\nexport const Relocation = new Relocation$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass RelocationTarget$Type extends MessageType<RelocationTarget> {\n constructor() {\n super(\"objdiff.diff.RelocationTarget\", [\n { no: 1, name: \"symbol\", kind: \"message\", T: () => Symbol },\n { no: 2, name: \"addend\", kind: \"scalar\", T: 3 /*ScalarType.INT64*/, L: 0 /*LongType.BIGINT*/ }\n ]);\n }\n create(value?: PartialMessage<RelocationTarget>): RelocationTarget {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.addend = 0n;\n if (value !== undefined)\n reflectionMergePartial<RelocationTarget>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: RelocationTarget): RelocationTarget {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* objdiff.diff.Symbol symbol */ 1:\n message.symbol = Symbol.internalBinaryRead(reader, reader.uint32(), options, message.symbol);\n break;\n case /* int64 addend */ 2:\n message.addend = reader.int64().toBigInt();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: RelocationTarget, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* objdiff.diff.Symbol symbol = 1; */\n if (message.symbol)\n Symbol.internalBinaryWrite(message.symbol, writer.tag(1, WireType.LengthDelimited).fork(), options).join();\n /* int64 addend = 2; */\n if (message.addend !== 0n)\n writer.tag(2, WireType.Varint).int64(message.addend);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.RelocationTarget\n */\nexport const RelocationTarget = new RelocationTarget$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass InstructionDiff$Type extends MessageType<InstructionDiff> {\n constructor() {\n super(\"objdiff.diff.InstructionDiff\", [\n { no: 1, name: \"diff_kind\", kind: \"enum\", localName: \"diff_kind\", T: () => [\"objdiff.diff.DiffKind\", DiffKind] },\n { no: 2, name: \"instruction\", kind: \"message\", T: () => Instruction },\n { no: 3, name: \"branch_from\", kind: \"message\", localName: \"branch_from\", T: () => InstructionBranchFrom },\n { no: 4, name: \"branch_to\", kind: \"message\", localName: \"branch_to\", T: () => InstructionBranchTo },\n { no: 5, name: \"arg_diff\", kind: \"message\", localName: \"arg_diff\", repeat: 1 /*RepeatType.PACKED*/, T: () => ArgumentDiff }\n ]);\n }\n create(value?: PartialMessage<InstructionDiff>): InstructionDiff {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.diff_kind = 0;\n message.arg_diff = [];\n if (value !== undefined)\n reflectionMergePartial<InstructionDiff>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: InstructionDiff): InstructionDiff {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* objdiff.diff.DiffKind diff_kind */ 1:\n message.diff_kind = reader.int32();\n break;\n case /* optional objdiff.diff.Instruction instruction */ 2:\n message.instruction = Instruction.internalBinaryRead(reader, reader.uint32(), options, message.instruction);\n break;\n case /* optional objdiff.diff.InstructionBranchFrom branch_from */ 3:\n message.branch_from = InstructionBranchFrom.internalBinaryRead(reader, reader.uint32(), options, message.branch_from);\n break;\n case /* optional objdiff.diff.InstructionBranchTo branch_to */ 4:\n message.branch_to = InstructionBranchTo.internalBinaryRead(reader, reader.uint32(), options, message.branch_to);\n break;\n case /* repeated objdiff.diff.ArgumentDiff arg_diff */ 5:\n message.arg_diff.push(ArgumentDiff.internalBinaryRead(reader, reader.uint32(), options));\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: InstructionDiff, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* objdiff.diff.DiffKind diff_kind = 1; */\n if (message.diff_kind !== 0)\n writer.tag(1, WireType.Varint).int32(message.diff_kind);\n /* optional objdiff.diff.Instruction instruction = 2; */\n if (message.instruction)\n Instruction.internalBinaryWrite(message.instruction, writer.tag(2, WireType.LengthDelimited).fork(), options).join();\n /* optional objdiff.diff.InstructionBranchFrom branch_from = 3; */\n if (message.branch_from)\n InstructionBranchFrom.internalBinaryWrite(message.branch_from, writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n /* optional objdiff.diff.InstructionBranchTo branch_to = 4; */\n if (message.branch_to)\n InstructionBranchTo.internalBinaryWrite(message.branch_to, writer.tag(4, WireType.LengthDelimited).fork(), options).join();\n /* repeated objdiff.diff.ArgumentDiff arg_diff = 5; */\n for (let i = 0; i < message.arg_diff.length; i++)\n ArgumentDiff.internalBinaryWrite(message.arg_diff[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.InstructionDiff\n */\nexport const InstructionDiff = new InstructionDiff$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ArgumentDiff$Type extends MessageType<ArgumentDiff> {\n constructor() {\n super(\"objdiff.diff.ArgumentDiff\", [\n { no: 1, name: \"diff_index\", kind: \"scalar\", localName: \"diff_index\", opt: true, T: 13 /*ScalarType.UINT32*/ }\n ]);\n }\n create(value?: PartialMessage<ArgumentDiff>): ArgumentDiff {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<ArgumentDiff>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ArgumentDiff): ArgumentDiff {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* optional uint32 diff_index */ 1:\n message.diff_index = reader.uint32();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: ArgumentDiff, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* optional uint32 diff_index = 1; */\n if (message.diff_index !== undefined)\n writer.tag(1, WireType.Varint).uint32(message.diff_index);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.ArgumentDiff\n */\nexport const ArgumentDiff = new ArgumentDiff$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass InstructionBranchFrom$Type extends MessageType<InstructionBranchFrom> {\n constructor() {\n super(\"objdiff.diff.InstructionBranchFrom\", [\n { no: 1, name: \"instruction_index\", kind: \"scalar\", localName: \"instruction_index\", repeat: 1 /*RepeatType.PACKED*/, T: 13 /*ScalarType.UINT32*/ },\n { no: 2, name: \"branch_index\", kind: \"scalar\", localName: \"branch_index\", T: 13 /*ScalarType.UINT32*/ }\n ]);\n }\n create(value?: PartialMessage<InstructionBranchFrom>): InstructionBranchFrom {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.instruction_index = [];\n message.branch_index = 0;\n if (value !== undefined)\n reflectionMergePartial<InstructionBranchFrom>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: InstructionBranchFrom): InstructionBranchFrom {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* repeated uint32 instruction_index */ 1:\n if (wireType === WireType.LengthDelimited)\n for (let e = reader.int32() + reader.pos; reader.pos < e;)\n message.instruction_index.push(reader.uint32());\n else\n message.instruction_index.push(reader.uint32());\n break;\n case /* uint32 branch_index */ 2:\n message.branch_index = reader.uint32();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: InstructionBranchFrom, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* repeated uint32 instruction_index = 1; */\n if (message.instruction_index.length) {\n writer.tag(1, WireType.LengthDelimited).fork();\n for (let i = 0; i < message.instruction_index.length; i++)\n writer.uint32(message.instruction_index[i]);\n writer.join();\n }\n /* uint32 branch_index = 2; */\n if (message.branch_index !== 0)\n writer.tag(2, WireType.Varint).uint32(message.branch_index);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.InstructionBranchFrom\n */\nexport const InstructionBranchFrom = new InstructionBranchFrom$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass InstructionBranchTo$Type extends MessageType<InstructionBranchTo> {\n constructor() {\n super(\"objdiff.diff.InstructionBranchTo\", [\n { no: 1, name: \"instruction_index\", kind: \"scalar\", localName: \"instruction_index\", T: 13 /*ScalarType.UINT32*/ },\n { no: 2, name: \"branch_index\", kind: \"scalar\", localName: \"branch_index\", T: 13 /*ScalarType.UINT32*/ }\n ]);\n }\n create(value?: PartialMessage<InstructionBranchTo>): InstructionBranchTo {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.instruction_index = 0;\n message.branch_index = 0;\n if (value !== undefined)\n reflectionMergePartial<InstructionBranchTo>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: InstructionBranchTo): InstructionBranchTo {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* uint32 instruction_index */ 1:\n message.instruction_index = reader.uint32();\n break;\n case /* uint32 branch_index */ 2:\n message.branch_index = reader.uint32();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: InstructionBranchTo, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* uint32 instruction_index = 1; */\n if (message.instruction_index !== 0)\n writer.tag(1, WireType.Varint).uint32(message.instruction_index);\n /* uint32 branch_index = 2; */\n if (message.branch_index !== 0)\n writer.tag(2, WireType.Varint).uint32(message.branch_index);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.InstructionBranchTo\n */\nexport const InstructionBranchTo = new InstructionBranchTo$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass FunctionDiff$Type extends MessageType<FunctionDiff> {\n constructor() {\n super(\"objdiff.diff.FunctionDiff\", [\n { no: 1, name: \"symbol\", kind: \"message\", T: () => Symbol },\n { no: 2, name: \"instructions\", kind: \"message\", repeat: 1 /*RepeatType.PACKED*/, T: () => InstructionDiff },\n { no: 3, name: \"match_percent\", kind: \"scalar\", localName: \"match_percent\", opt: true, T: 2 /*ScalarType.FLOAT*/ }\n ]);\n }\n create(value?: PartialMessage<FunctionDiff>): FunctionDiff {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.instructions = [];\n if (value !== undefined)\n reflectionMergePartial<FunctionDiff>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FunctionDiff): FunctionDiff {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* objdiff.diff.Symbol symbol */ 1:\n message.symbol = Symbol.internalBinaryRead(reader, reader.uint32(), options, message.symbol);\n break;\n case /* repeated objdiff.diff.InstructionDiff instructions */ 2:\n message.instructions.push(InstructionDiff.internalBinaryRead(reader, reader.uint32(), options));\n break;\n case /* optional float match_percent */ 3:\n message.match_percent = reader.float();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: FunctionDiff, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* objdiff.diff.Symbol symbol = 1; */\n if (message.symbol)\n Symbol.internalBinaryWrite(message.symbol, writer.tag(1, WireType.LengthDelimited).fork(), options).join();\n /* repeated objdiff.diff.InstructionDiff instructions = 2; */\n for (let i = 0; i < message.instructions.length; i++)\n InstructionDiff.internalBinaryWrite(message.instructions[i], writer.tag(2, WireType.LengthDelimited).fork(), options).join();\n /* optional float match_percent = 3; */\n if (message.match_percent !== undefined)\n writer.tag(3, WireType.Bit32).float(message.match_percent);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.FunctionDiff\n */\nexport const FunctionDiff = new FunctionDiff$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass DataDiff$Type extends MessageType<DataDiff> {\n constructor() {\n super(\"objdiff.diff.DataDiff\", [\n { no: 1, name: \"kind\", kind: \"enum\", T: () => [\"objdiff.diff.DiffKind\", DiffKind] },\n { no: 2, name: \"data\", kind: \"scalar\", T: 12 /*ScalarType.BYTES*/ },\n { no: 3, name: \"size\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ }\n ]);\n }\n create(value?: PartialMessage<DataDiff>): DataDiff {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.kind = 0;\n message.data = new Uint8Array(0);\n message.size = 0n;\n if (value !== undefined)\n reflectionMergePartial<DataDiff>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DataDiff): DataDiff {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* objdiff.diff.DiffKind kind */ 1:\n message.kind = reader.int32();\n break;\n case /* bytes data */ 2:\n message.data = reader.bytes();\n break;\n case /* uint64 size */ 3:\n message.size = reader.uint64().toBigInt();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: DataDiff, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* objdiff.diff.DiffKind kind = 1; */\n if (message.kind !== 0)\n writer.tag(1, WireType.Varint).int32(message.kind);\n /* bytes data = 2; */\n if (message.data.length)\n writer.tag(2, WireType.LengthDelimited).bytes(message.data);\n /* uint64 size = 3; */\n if (message.size !== 0n)\n writer.tag(3, WireType.Varint).uint64(message.size);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.DataDiff\n */\nexport const DataDiff = new DataDiff$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass SectionDiff$Type extends MessageType<SectionDiff> {\n constructor() {\n super(\"objdiff.diff.SectionDiff\", [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n { no: 2, name: \"kind\", kind: \"enum\", T: () => [\"objdiff.diff.SectionKind\", SectionKind] },\n { no: 3, name: \"size\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 4, name: \"address\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 5, name: \"functions\", kind: \"message\", repeat: 1 /*RepeatType.PACKED*/, T: () => FunctionDiff },\n { no: 6, name: \"data\", kind: \"message\", repeat: 1 /*RepeatType.PACKED*/, T: () => DataDiff },\n { no: 7, name: \"match_percent\", kind: \"scalar\", localName: \"match_percent\", opt: true, T: 2 /*ScalarType.FLOAT*/ }\n ]);\n }\n create(value?: PartialMessage<SectionDiff>): SectionDiff {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.name = \"\";\n message.kind = 0;\n message.size = 0n;\n message.address = 0n;\n message.functions = [];\n message.data = [];\n if (value !== undefined)\n reflectionMergePartial<SectionDiff>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: SectionDiff): SectionDiff {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string name */ 1:\n message.name = reader.string();\n break;\n case /* objdiff.diff.SectionKind kind */ 2:\n message.kind = reader.int32();\n break;\n case /* uint64 size */ 3:\n message.size = reader.uint64().toBigInt();\n break;\n case /* uint64 address */ 4:\n message.address = reader.uint64().toBigInt();\n break;\n case /* repeated objdiff.diff.FunctionDiff functions */ 5:\n message.functions.push(FunctionDiff.internalBinaryRead(reader, reader.uint32(), options));\n break;\n case /* repeated objdiff.diff.DataDiff data */ 6:\n message.data.push(DataDiff.internalBinaryRead(reader, reader.uint32(), options));\n break;\n case /* optional float match_percent */ 7:\n message.match_percent = reader.float();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: SectionDiff, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string name = 1; */\n if (message.name !== \"\")\n writer.tag(1, WireType.LengthDelimited).string(message.name);\n /* objdiff.diff.SectionKind kind = 2; */\n if (message.kind !== 0)\n writer.tag(2, WireType.Varint).int32(message.kind);\n /* uint64 size = 3; */\n if (message.size !== 0n)\n writer.tag(3, WireType.Varint).uint64(message.size);\n /* uint64 address = 4; */\n if (message.address !== 0n)\n writer.tag(4, WireType.Varint).uint64(message.address);\n /* repeated objdiff.diff.FunctionDiff functions = 5; */\n for (let i = 0; i < message.functions.length; i++)\n FunctionDiff.internalBinaryWrite(message.functions[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();\n /* repeated objdiff.diff.DataDiff data = 6; */\n for (let i = 0; i < message.data.length; i++)\n DataDiff.internalBinaryWrite(message.data[i], writer.tag(6, WireType.LengthDelimited).fork(), options).join();\n /* optional float match_percent = 7; */\n if (message.match_percent !== undefined)\n writer.tag(7, WireType.Bit32).float(message.match_percent);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.SectionDiff\n */\nexport const SectionDiff = new SectionDiff$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ObjectDiff$Type extends MessageType<ObjectDiff> {\n constructor() {\n super(\"objdiff.diff.ObjectDiff\", [\n { no: 1, name: \"sections\", kind: \"message\", repeat: 1 /*RepeatType.PACKED*/, T: () => SectionDiff }\n ]);\n }\n create(value?: PartialMessage<ObjectDiff>): ObjectDiff {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.sections = [];\n if (value !== undefined)\n reflectionMergePartial<ObjectDiff>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ObjectDiff): ObjectDiff {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* repeated objdiff.diff.SectionDiff sections */ 1:\n message.sections.push(SectionDiff.internalBinaryRead(reader, reader.uint32(), options));\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: ObjectDiff, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* repeated objdiff.diff.SectionDiff sections = 1; */\n for (let i = 0; i < message.sections.length; i++)\n SectionDiff.internalBinaryWrite(message.sections[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.ObjectDiff\n */\nexport const ObjectDiff = new ObjectDiff$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass DiffResult$Type extends MessageType<DiffResult> {\n constructor() {\n super(\"objdiff.diff.DiffResult\", [\n { no: 1, name: \"left\", kind: \"message\", T: () => ObjectDiff },\n { no: 2, name: \"right\", kind: \"message\", T: () => ObjectDiff }\n ]);\n }\n create(value?: PartialMessage<DiffResult>): DiffResult {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<DiffResult>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DiffResult): DiffResult {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* optional objdiff.diff.ObjectDiff left */ 1:\n message.left = ObjectDiff.internalBinaryRead(reader, reader.uint32(), options, message.left);\n break;\n case /* optional objdiff.diff.ObjectDiff right */ 2:\n message.right = ObjectDiff.internalBinaryRead(reader, reader.uint32(), options, message.right);\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: DiffResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* optional objdiff.diff.ObjectDiff left = 1; */\n if (message.left)\n ObjectDiff.internalBinaryWrite(message.left, writer.tag(1, WireType.LengthDelimited).fork(), options).join();\n /* optional objdiff.diff.ObjectDiff right = 2; */\n if (message.right)\n ObjectDiff.internalBinaryWrite(message.right, writer.tag(2, WireType.LengthDelimited).fork(), options).join();\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.DiffResult\n */\nexport const DiffResult = new DiffResult$Type();\n","import {ArgumentValue, DiffResult, InstructionDiff, RelocationTarget} from \"../gen/diff_pb\";\nimport type {\n ArmArchVersion,\n ArmR9Usage,\n DiffObjConfig as WasmDiffObjConfig,\n MipsAbi,\n MipsInstrCategory,\n X86Formatter\n} from '../pkg';\nimport {InMessage, OutMessage} from './worker';\n\n// Export wasm types\nexport type DiffObjConfig = Omit<Partial<WasmDiffObjConfig>, 'free'>;\nexport {ArmArchVersion, ArmR9Usage, MipsAbi, MipsInstrCategory, X86Formatter};\n\n// Export protobuf types\nexport * from '../gen/diff_pb';\n\ninterface PromiseCallbacks {\n start: number;\n resolve: (value: unknown) => void;\n reject: (reason?: unknown) => void;\n}\n\nlet workerInit = false;\nlet workerCallbacks: PromiseCallbacks | null = null;\nconst workerReady = new Promise<Worker>((resolve, reject) => {\n workerCallbacks = {start: performance.now(), resolve, reject};\n});\n\nexport function initialize(workerUrl?: string | URL) {\n if (workerInit) {\n return;\n }\n workerInit = true;\n const worker = new Worker(workerUrl || 'worker.js', {type: 'module'});\n worker.onmessage = onMessage.bind(null, worker);\n worker.onerror = (error) => {\n console.error(\"Worker error\", error);\n workerCallbacks.reject(error);\n };\n}\n\nlet globalMessageId = 0;\nconst messageCallbacks = new Map<number, PromiseCallbacks>();\n\nfunction onMessage(worker: Worker, event: MessageEvent<OutMessage>) {\n switch (event.data.type) {\n case 'ready':\n workerCallbacks.resolve(worker);\n break;\n case 'result': {\n const {messageId, result} = event.data;\n const callbacks = messageCallbacks.get(messageId);\n if (callbacks) {\n const end = performance.now();\n console.debug(`Message ${messageId} took ${end - callbacks.start}ms`);\n messageCallbacks.delete(messageId);\n callbacks.resolve(result);\n } else {\n console.warn(`Unknown message ID ${messageId}`);\n }\n break;\n }\n }\n}\n\nasync function defer<T>(message: Omit<InMessage, 'messageId'>): Promise<T> {\n if (!workerInit) {\n throw new Error('Worker not initialized');\n }\n const worker = await workerReady;\n const messageId = globalMessageId++;\n const promise = new Promise<T>((resolve, reject) => {\n messageCallbacks.set(messageId, {start: performance.now(), resolve, reject});\n });\n worker.postMessage({\n ...message,\n messageId\n });\n return promise;\n}\n\nexport async function runDiff(left: Uint8Array | undefined, right: Uint8Array | undefined, config?: DiffObjConfig): Promise<DiffResult> {\n const data = await defer<Uint8Array>({\n type: 'run_diff',\n left,\n right,\n config\n } as InMessage);\n const parseStart = performance.now();\n const result = DiffResult.fromBinary(data, {readUnknownField: false});\n const end = performance.now();\n console.debug(`Parsing message took ${end - parseStart}ms`);\n return result;\n}\n\nexport type DiffText =\n DiffTextBasic\n | DiffTextBasicColor\n | DiffTextAddress\n | DiffTextLine\n | DiffTextOpcode\n | DiffTextArgument\n | DiffTextSymbol\n | DiffTextBranchDest\n | DiffTextSpacing;\n\ntype DiffTextBase = {\n diff_index?: number,\n};\nexport type DiffTextBasic = DiffTextBase & {\n type: 'basic',\n text: string,\n};\nexport type DiffTextBasicColor = DiffTextBase & {\n type: 'basic_color',\n text: string,\n index: number,\n};\nexport type DiffTextAddress = DiffTextBase & {\n type: 'address',\n address: bigint,\n};\nexport type DiffTextLine = DiffTextBase & {\n type: 'line',\n line_number: number,\n};\nexport type DiffTextOpcode = DiffTextBase & {\n type: 'opcode',\n mnemonic: string,\n opcode: number,\n};\nexport type DiffTextArgument = DiffTextBase & {\n type: 'argument',\n value: ArgumentValue,\n};\nexport type DiffTextSymbol = DiffTextBase & {\n type: 'symbol',\n target: RelocationTarget,\n};\nexport type DiffTextBranchDest = DiffTextBase & {\n type: 'branch_dest',\n address: bigint,\n};\nexport type DiffTextSpacing = DiffTextBase & {\n type: 'spacing',\n count: number,\n};\n\n// TypeScript workaround for oneof types\nexport function oneof<T extends { oneofKind: string }>(type: T): T & { oneofKind: string } {\n return type as T & { oneofKind: string };\n}\n\n// Native JavaScript implementation of objdiff_core::diff::display::display_diff\nexport function displayDiff(diff: InstructionDiff, baseAddr: bigint, cb: (text: DiffText) => void) {\n const ins = diff.instruction;\n if (!ins) {\n return;\n }\n if (ins.line_number != null) {\n cb({type: 'line', line_number: ins.line_number});\n }\n cb({type: 'address', address: ins.address - baseAddr});\n if (diff.branch_from) {\n cb({type: 'basic_color', text: ' ~> ', index: diff.branch_from.branch_index});\n } else {\n cb({type: 'spacing', count: 4});\n }\n cb({type: 'opcode', mnemonic: ins.mnemonic, opcode: ins.opcode});\n for (let i = 0; i < ins.arguments.length; i++) {\n if (i == 0) {\n cb({type: 'spacing', count: 1});\n }\n const arg = oneof(ins.arguments[i].value);\n const diff_index = diff.arg_diff[i]?.diff_index;\n switch (arg.oneofKind) {\n case \"plain_text\":\n cb({type: 'basic', text: arg.plain_text, diff_index});\n break;\n case \"argument\":\n cb({type: 'argument', value: arg.argument, diff_index});\n break;\n case \"relocation\": {\n const reloc = ins.relocation!;\n cb({type: 'symbol', target: reloc.target, diff_index});\n break;\n }\n case \"branch_dest\":\n if (arg.branch_dest < baseAddr) {\n cb({type: 'basic', text: '<unknown>', diff_index});\n } else {\n cb({type: 'branch_dest', address: arg.branch_dest - baseAddr, diff_index});\n }\n break;\n }\n }\n if (diff.branch_to) {\n cb({type: 'basic_color', text: ' ~> ', index: diff.branch_to.branch_index});\n }\n}\n"],"mappings":";AAOA,SAAS,gBAAgB;AAGzB,SAAS,2BAA2B;AAEpC,SAAS,8BAA8B;AACvC,SAAS,mBAAmB;AA4XrB,IAAK,aAAL,kBAAKA,gBAAL;AAIH,EAAAA,wBAAA,iBAAc,KAAd;AAIA,EAAAA,wBAAA,mBAAgB,KAAhB;AAIA,EAAAA,wBAAA,kBAAe,KAAf;AAIA,EAAAA,wBAAA,iBAAc,KAAd;AAIA,EAAAA,wBAAA,mBAAgB,KAAhB;AAIA,EAAAA,wBAAA,mBAAgB,KAAhB;AAxBQ,SAAAA;AAAA,GAAA;AA6BL,IAAK,WAAL,kBAAKC,cAAL;AAIH,EAAAA,oBAAA,eAAY,KAAZ;AAIA,EAAAA,oBAAA,kBAAe,KAAf;AAIA,EAAAA,oBAAA,iBAAc,KAAd;AAIA,EAAAA,oBAAA,iBAAc,KAAd;AAIA,EAAAA,oBAAA,sBAAmB,KAAnB;AAIA,EAAAA,oBAAA,uBAAoB,KAApB;AAxBQ,SAAAA;AAAA,GAAA;AA6BL,IAAK,cAAL,kBAAKC,iBAAL;AAIH,EAAAA,0BAAA,qBAAkB,KAAlB;AAIA,EAAAA,0BAAA,kBAAe,KAAf;AAIA,EAAAA,0BAAA,kBAAe,KAAf;AAIA,EAAAA,0BAAA,iBAAc,KAAd;AAIA,EAAAA,0BAAA,oBAAiB,KAAjB;AApBQ,SAAAA;AAAA,GAAA;AAuBZ,IAAM,cAAN,cAA0B,YAAoB;AAAA,EAC1C,cAAc;AACV,UAAM,uBAAuB;AAAA,MACzB;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAQ,MAAM;AAAA,QAAU,GAAG;AAAA;AAAA,MAAwB;AAAA,MAClE;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAkB,MAAM;AAAA,QAAU,WAAW;AAAA,QAAkB,KAAK;AAAA,QAAM,GAAG;AAAA;AAAA,MAAwB;AAAA,MACpH;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAW,MAAM;AAAA,QAAU,GAAG;AAAA,QAAyB,GAAG;AAAA;AAAA,MAAsB;AAAA,MAC/F;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAQ,MAAM;AAAA,QAAU,GAAG;AAAA,QAAyB,GAAG;AAAA;AAAA,MAAsB;AAAA,MAC5F;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAS,MAAM;AAAA,QAAU,GAAG;AAAA;AAAA,MAAyB;AAAA,IACxE,CAAC;AAAA,EACL;AAAA,EACA,OAAO,OAAwC;AAC3C,UAAM,UAAU,WAAW,OAAO,OAAQ,KAAK,gBAAkB;AACjE,YAAQ,OAAO;AACf,YAAQ,UAAU;AAClB,YAAQ,OAAO;AACf,YAAQ,QAAQ;AAChB,QAAI,UAAU;AACV,6BAA+B,MAAM,SAAS,KAAK;AACvD,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,QAAuB,QAAgB,SAA4B,QAAyB;AAC3G,QAAI,UAAU,UAAU,KAAK,OAAO,GAAG,MAAM,OAAO,MAAM;AAC1D,WAAO,OAAO,MAAM,KAAK;AACrB,UAAI,CAAC,SAAS,QAAQ,IAAI,OAAO,IAAI;AACrC,cAAQ,SAAS;AAAA,QACb;AAAA,QAAuB;AACnB,kBAAQ,OAAO,OAAO,OAAO;AAC7B;AAAA,QACJ;AAAA,QAA0C;AACtC,kBAAQ,iBAAiB,OAAO,OAAO;AACvC;AAAA,QACJ;AAAA,QAA0B;AACtB,kBAAQ,UAAU,OAAO,OAAO,EAAE,SAAS;AAC3C;AAAA,QACJ;AAAA,QAAuB;AACnB,kBAAQ,OAAO,OAAO,OAAO,EAAE,SAAS;AACxC;AAAA,QACJ;AAAA,QAAwB;AACpB,kBAAQ,QAAQ,OAAO,OAAO;AAC9B;AAAA,QACJ;AACI,cAAI,IAAI,QAAQ;AAChB,cAAI,MAAM;AACN,kBAAM,IAAI,WAAW,MAAM,iBAAiB,OAAO,eAAe,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACtG,cAAI,IAAI,OAAO,KAAK,QAAQ;AAC5B,cAAI,MAAM;AACN,aAAC,MAAM,OAAO,oBAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,CAAC;AAAA,MACtG;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB,SAAiB,QAAuB,SAA4C;AAEpG,QAAI,QAAQ,SAAS;AACjB,aAAO,IAAI,GAAG,SAAS,eAAe,EAAE,OAAO,QAAQ,IAAI;AAE/D,QAAI,QAAQ,mBAAmB;AAC3B,aAAO,IAAI,GAAG,SAAS,eAAe,EAAE,OAAO,QAAQ,cAAc;AAEzE,QAAI,QAAQ,YAAY;AACpB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,OAAO;AAEzD,QAAI,QAAQ,SAAS;AACjB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,IAAI;AAEtD,QAAI,QAAQ,UAAU;AAClB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,KAAK;AACvD,QAAI,IAAI,QAAQ;AAChB,QAAI,MAAM;AACN,OAAC,KAAK,OAAO,oBAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM;AAChF,WAAO;AAAA,EACX;AACJ;AAIO,IAAM,SAAS,IAAI,YAAY;AAEtC,IAAM,mBAAN,cAA+B,YAAyB;AAAA,EACpD,cAAc;AACV,UAAM,4BAA4B;AAAA,MAC9B;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAW,MAAM;AAAA,QAAU,GAAG;AAAA,QAAyB,GAAG;AAAA;AAAA,MAAsB;AAAA,MAC/F;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAQ,MAAM;AAAA,QAAU,GAAG;AAAA;AAAA,MAAyB;AAAA,MACnE;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAU,MAAM;AAAA,QAAU,GAAG;AAAA;AAAA,MAAyB;AAAA,MACrE;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAY,MAAM;AAAA,QAAU,GAAG;AAAA;AAAA,MAAwB;AAAA,MACtE;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAa,MAAM;AAAA,QAAU,GAAG;AAAA;AAAA,MAAwB;AAAA,MACvE;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAY,MAAM;AAAA,QAAU,KAAK;AAAA,QAAM,GAAG;AAAA;AAAA,MAAwB;AAAA,MACjF,EAAE,IAAI,GAAG,MAAM,aAAa,MAAM,WAAW,QAAQ,GAAyB,GAAG,MAAM,SAAS;AAAA,MAChG,EAAE,IAAI,GAAG,MAAM,cAAc,MAAM,WAAW,GAAG,MAAM,WAAW;AAAA,MAClE;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAe,MAAM;AAAA,QAAU,WAAW;AAAA,QAAe,KAAK;AAAA,QAAM,GAAG;AAAA,QAAyB,GAAG;AAAA;AAAA,MAAsB;AAAA,MACxI;AAAA,QAAE,IAAI;AAAA,QAAI,MAAM;AAAA,QAAe,MAAM;AAAA,QAAU,WAAW;AAAA,QAAe,KAAK;AAAA,QAAM,GAAG;AAAA;AAAA,MAAyB;AAAA,IACpH,CAAC;AAAA,EACL;AAAA,EACA,OAAO,OAAkD;AACrD,UAAM,UAAU,WAAW,OAAO,OAAQ,KAAK,gBAAkB;AACjE,YAAQ,UAAU;AAClB,YAAQ,OAAO;AACf,YAAQ,SAAS;AACjB,YAAQ,WAAW;AACnB,YAAQ,YAAY;AACpB,YAAQ,YAAY,CAAC;AACrB,QAAI,UAAU;AACV,6BAAoC,MAAM,SAAS,KAAK;AAC5D,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,QAAuB,QAAgB,SAA4B,QAAmC;AACrH,QAAI,UAAU,UAAU,KAAK,OAAO,GAAG,MAAM,OAAO,MAAM;AAC1D,WAAO,OAAO,MAAM,KAAK;AACrB,UAAI,CAAC,SAAS,QAAQ,IAAI,OAAO,IAAI;AACrC,cAAQ,SAAS;AAAA,QACb;AAAA,QAA0B;AACtB,kBAAQ,UAAU,OAAO,OAAO,EAAE,SAAS;AAC3C;AAAA,QACJ;AAAA,QAAuB;AACnB,kBAAQ,OAAO,OAAO,OAAO;AAC7B;AAAA,QACJ;AAAA,QAAyB;AACrB,kBAAQ,SAAS,OAAO,OAAO;AAC/B;AAAA,QACJ;AAAA,QAA2B;AACvB,kBAAQ,WAAW,OAAO,OAAO;AACjC;AAAA,QACJ;AAAA,QAA4B;AACxB,kBAAQ,YAAY,OAAO,OAAO;AAClC;AAAA,QACJ;AAAA,QAAoC;AAChC,kBAAQ,WAAW,OAAO,OAAO;AACjC;AAAA,QACJ;AAAA,QAAoD;AAChD,kBAAQ,UAAU,KAAK,SAAS,mBAAmB,QAAQ,OAAO,OAAO,GAAG,OAAO,CAAC;AACpF;AAAA,QACJ;AAAA,QAAuD;AACnD,kBAAQ,aAAa,WAAW,mBAAmB,QAAQ,OAAO,OAAO,GAAG,SAAS,QAAQ,UAAU;AACvG;AAAA,QACJ;AAAA,QAAuC;AACnC,kBAAQ,cAAc,OAAO,OAAO,EAAE,SAAS;AAC/C;AAAA,QACJ;AAAA,QAAuC;AACnC,kBAAQ,cAAc,OAAO,OAAO;AACpC;AAAA,QACJ;AACI,cAAI,IAAI,QAAQ;AAChB,cAAI,MAAM;AACN,kBAAM,IAAI,WAAW,MAAM,iBAAiB,OAAO,eAAe,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACtG,cAAI,IAAI,OAAO,KAAK,QAAQ;AAC5B,cAAI,MAAM;AACN,aAAC,MAAM,OAAO,oBAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,CAAC;AAAA,MACtG;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB,SAAsB,QAAuB,SAA4C;AAEzG,QAAI,QAAQ,YAAY;AACpB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,OAAO;AAEzD,QAAI,QAAQ,SAAS;AACjB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,IAAI;AAEtD,QAAI,QAAQ,WAAW;AACnB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,MAAM;AAExD,QAAI,QAAQ,aAAa;AACrB,aAAO,IAAI,GAAG,SAAS,eAAe,EAAE,OAAO,QAAQ,QAAQ;AAEnE,QAAI,QAAQ,cAAc;AACtB,aAAO,IAAI,GAAG,SAAS,eAAe,EAAE,OAAO,QAAQ,SAAS;AAEpE,QAAI,QAAQ,aAAa;AACrB,aAAO,IAAI,GAAG,SAAS,eAAe,EAAE,OAAO,QAAQ,QAAQ;AAEnE,aAAS,IAAI,GAAG,IAAI,QAAQ,UAAU,QAAQ;AAC1C,eAAS,oBAAoB,QAAQ,UAAU,CAAC,GAAG,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AAErH,QAAI,QAAQ;AACR,iBAAW,oBAAoB,QAAQ,YAAY,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AAErH,QAAI,QAAQ,gBAAgB;AACxB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,WAAW;AAE7D,QAAI,QAAQ,gBAAgB;AACxB,aAAO,IAAI,IAAI,SAAS,MAAM,EAAE,OAAO,QAAQ,WAAW;AAC9D,QAAI,IAAI,QAAQ;AAChB,QAAI,MAAM;AACN,OAAC,KAAK,OAAO,oBAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM;AAChF,WAAO;AAAA,EACX;AACJ;AAIO,IAAM,cAAc,IAAI,iBAAiB;AAEhD,IAAM,gBAAN,cAA4B,YAAsB;AAAA,EAC9C,cAAc;AACV,UAAM,yBAAyB;AAAA,MAC3B;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAc,MAAM;AAAA,QAAU,WAAW;AAAA,QAAc,OAAO;AAAA,QAAS,GAAG;AAAA;AAAA,MAAwB;AAAA,MACjH,EAAE,IAAI,GAAG,MAAM,YAAY,MAAM,WAAW,OAAO,SAAS,GAAG,MAAM,cAAc;AAAA,MACnF,EAAE,IAAI,GAAG,MAAM,cAAc,MAAM,WAAW,OAAO,SAAS,GAAG,MAAM,mBAAmB;AAAA,MAC1F;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAe,MAAM;AAAA,QAAU,WAAW;AAAA,QAAe,OAAO;AAAA,QAAS,GAAG;AAAA,QAAyB,GAAG;AAAA;AAAA,MAAsB;AAAA,IACjJ,CAAC;AAAA,EACL;AAAA,EACA,OAAO,OAA4C;AAC/C,UAAM,UAAU,WAAW,OAAO,OAAQ,KAAK,gBAAkB;AACjE,YAAQ,QAAQ,EAAE,WAAW,OAAU;AACvC,QAAI,UAAU;AACV,6BAAiC,MAAM,SAAS,KAAK;AACzD,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,QAAuB,QAAgB,SAA4B,QAA6B;AAC/G,QAAI,UAAU,UAAU,KAAK,OAAO,GAAG,MAAM,OAAO,MAAM;AAC1D,WAAO,OAAO,MAAM,KAAK;AACrB,UAAI,CAAC,SAAS,QAAQ,IAAI,OAAO,IAAI;AACrC,cAAQ,SAAS;AAAA,QACb;AAAA,QAA6B;AACzB,kBAAQ,QAAQ;AAAA,YACZ,WAAW;AAAA,YACX,YAAY,OAAO,OAAO;AAAA,UAC9B;AACA;AAAA,QACJ;AAAA,QAA+C;AAC3C,kBAAQ,QAAQ;AAAA,YACZ,WAAW;AAAA,YACX,UAAU,cAAc,mBAAmB,QAAQ,OAAO,OAAO,GAAG,SAAU,QAAQ,MAAc,QAAQ;AAAA,UAChH;AACA;AAAA,QACJ;AAAA,QAAsD;AAClD,kBAAQ,QAAQ;AAAA,YACZ,WAAW;AAAA,YACX,YAAY,mBAAmB,mBAAmB,QAAQ,OAAO,OAAO,GAAG,SAAU,QAAQ,MAAc,UAAU;AAAA,UACzH;AACA;AAAA,QACJ;AAAA,QAA8B;AAC1B,kBAAQ,QAAQ;AAAA,YACZ,WAAW;AAAA,YACX,aAAa,OAAO,OAAO,EAAE,SAAS;AAAA,UAC1C;AACA;AAAA,QACJ;AACI,cAAI,IAAI,QAAQ;AAChB,cAAI,MAAM;AACN,kBAAM,IAAI,WAAW,MAAM,iBAAiB,OAAO,eAAe,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACtG,cAAI,IAAI,OAAO,KAAK,QAAQ;AAC5B,cAAI,MAAM;AACN,aAAC,MAAM,OAAO,oBAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,CAAC;AAAA,MACtG;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB,SAAmB,QAAuB,SAA4C;AAEtG,QAAI,QAAQ,MAAM,cAAc;AAC5B,aAAO,IAAI,GAAG,SAAS,eAAe,EAAE,OAAO,QAAQ,MAAM,UAAU;AAE3E,QAAI,QAAQ,MAAM,cAAc;AAC5B,oBAAc,oBAAoB,QAAQ,MAAM,UAAU,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AAE5H,QAAI,QAAQ,MAAM,cAAc;AAC5B,yBAAmB,oBAAoB,QAAQ,MAAM,YAAY,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AAEnI,QAAI,QAAQ,MAAM,cAAc;AAC5B,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,MAAM,WAAW;AACnE,QAAI,IAAI,QAAQ;AAChB,QAAI,MAAM;AACN,OAAC,KAAK,OAAO,oBAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM;AAChF,WAAO;AAAA,EACX;AACJ;AAIO,IAAM,WAAW,IAAI,cAAc;AAE1C,IAAM,qBAAN,cAAiC,YAA2B;AAAA,EACxD,cAAc;AACV,UAAM,8BAA8B;AAAA,MAChC;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAU,MAAM;AAAA,QAAU,OAAO;AAAA,QAAS,GAAG;AAAA,QAAwB,GAAG;AAAA;AAAA,MAAsB;AAAA,MAC7G;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAY,MAAM;AAAA,QAAU,OAAO;AAAA,QAAS,GAAG;AAAA,QAAyB,GAAG;AAAA;AAAA,MAAsB;AAAA,MAChH;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAU,MAAM;AAAA,QAAU,OAAO;AAAA,QAAS,GAAG;AAAA;AAAA,MAAwB;AAAA,IACxF,CAAC;AAAA,EACL;AAAA,EACA,OAAO,OAAsD;AACzD,UAAM,UAAU,WAAW,OAAO,OAAQ,KAAK,gBAAkB;AACjE,YAAQ,QAAQ,EAAE,WAAW,OAAU;AACvC,QAAI,UAAU;AACV,6BAAsC,MAAM,SAAS,KAAK;AAC9D,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,QAAuB,QAAgB,SAA4B,QAAuC;AACzH,QAAI,UAAU,UAAU,KAAK,OAAO,GAAG,MAAM,OAAO,MAAM;AAC1D,WAAO,OAAO,MAAM,KAAK;AACrB,UAAI,CAAC,SAAS,QAAQ,IAAI,OAAO,IAAI;AACrC,cAAQ,SAAS;AAAA,QACb;AAAA,QAAwB;AACpB,kBAAQ,QAAQ;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ,OAAO,MAAM,EAAE,SAAS;AAAA,UACpC;AACA;AAAA,QACJ;AAAA,QAA2B;AACvB,kBAAQ,QAAQ;AAAA,YACZ,WAAW;AAAA,YACX,UAAU,OAAO,OAAO,EAAE,SAAS;AAAA,UACvC;AACA;AAAA,QACJ;AAAA,QAAyB;AACrB,kBAAQ,QAAQ;AAAA,YACZ,WAAW;AAAA,YACX,QAAQ,OAAO,OAAO;AAAA,UAC1B;AACA;AAAA,QACJ;AACI,cAAI,IAAI,QAAQ;AAChB,cAAI,MAAM;AACN,kBAAM,IAAI,WAAW,MAAM,iBAAiB,OAAO,eAAe,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACtG,cAAI,IAAI,OAAO,KAAK,QAAQ;AAC5B,cAAI,MAAM;AACN,aAAC,MAAM,OAAO,oBAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,CAAC;AAAA,MACtG;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB,SAAwB,QAAuB,SAA4C;AAE3G,QAAI,QAAQ,MAAM,cAAc;AAC5B,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,MAAM,QAAQ,MAAM,MAAM;AAE7D,QAAI,QAAQ,MAAM,cAAc;AAC5B,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,MAAM,QAAQ;AAEhE,QAAI,QAAQ,MAAM,cAAc;AAC5B,aAAO,IAAI,GAAG,SAAS,eAAe,EAAE,OAAO,QAAQ,MAAM,MAAM;AACvE,QAAI,IAAI,QAAQ;AAChB,QAAI,MAAM;AACN,OAAC,KAAK,OAAO,oBAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM;AAChF,WAAO;AAAA,EACX;AACJ;AAIO,IAAM,gBAAgB,IAAI,mBAAmB;AAEpD,IAAM,0BAAN,cAAsC,YAAgC;AAAA,EAClE,cAAc;AACV,UAAM,mCAAmC,CAAC,CAAC;AAAA,EAC/C;AAAA,EACA,OAAO,OAAgE;AACnE,UAAM,UAAU,WAAW,OAAO,OAAQ,KAAK,gBAAkB;AACjE,QAAI,UAAU;AACV,6BAA2C,MAAM,SAAS,KAAK;AACnE,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,QAAuB,QAAgB,SAA4B,QAAiD;AACnI,WAAO,UAAU,KAAK,OAAO;AAAA,EACjC;AAAA,EACA,oBAAoB,SAA6B,QAAuB,SAA4C;AAChH,QAAI,IAAI,QAAQ;AAChB,QAAI,MAAM;AACN,OAAC,KAAK,OAAO,oBAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM;AAChF,WAAO;AAAA,EACX;AACJ;AAIO,IAAM,qBAAqB,IAAI,wBAAwB;AAE9D,IAAM,kBAAN,cAA8B,YAAwB;AAAA,EAClD,cAAc;AACV,UAAM,2BAA2B;AAAA,MAC7B;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAQ,MAAM;AAAA,QAAU,GAAG;AAAA;AAAA,MAAyB;AAAA,MACnE;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAa,MAAM;AAAA,QAAU,WAAW;AAAA,QAAa,GAAG;AAAA;AAAA,MAAwB;AAAA,MAC/F,EAAE,IAAI,GAAG,MAAM,UAAU,MAAM,WAAW,GAAG,MAAM,iBAAiB;AAAA,IACxE,CAAC;AAAA,EACL;AAAA,EACA,OAAO,OAAgD;AACnD,UAAM,UAAU,WAAW,OAAO,OAAQ,KAAK,gBAAkB;AACjE,YAAQ,OAAO;AACf,YAAQ,YAAY;AACpB,QAAI,UAAU;AACV,6BAAmC,MAAM,SAAS,KAAK;AAC3D,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,QAAuB,QAAgB,SAA4B,QAAiC;AACnH,QAAI,UAAU,UAAU,KAAK,OAAO,GAAG,MAAM,OAAO,MAAM;AAC1D,WAAO,OAAO,MAAM,KAAK;AACrB,UAAI,CAAC,SAAS,QAAQ,IAAI,OAAO,IAAI;AACrC,cAAQ,SAAS;AAAA,QACb;AAAA,QAAuB;AACnB,kBAAQ,OAAO,OAAO,OAAO;AAC7B;AAAA,QACJ;AAAA,QAA4B;AACxB,kBAAQ,YAAY,OAAO,OAAO;AAClC;AAAA,QACJ;AAAA,QAAgD;AAC5C,kBAAQ,SAAS,iBAAiB,mBAAmB,QAAQ,OAAO,OAAO,GAAG,SAAS,QAAQ,MAAM;AACrG;AAAA,QACJ;AACI,cAAI,IAAI,QAAQ;AAChB,cAAI,MAAM;AACN,kBAAM,IAAI,WAAW,MAAM,iBAAiB,OAAO,eAAe,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACtG,cAAI,IAAI,OAAO,KAAK,QAAQ;AAC5B,cAAI,MAAM;AACN,aAAC,MAAM,OAAO,oBAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,CAAC;AAAA,MACtG;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB,SAAqB,QAAuB,SAA4C;AAExG,QAAI,QAAQ,SAAS;AACjB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,IAAI;AAEtD,QAAI,QAAQ,cAAc;AACtB,aAAO,IAAI,GAAG,SAAS,eAAe,EAAE,OAAO,QAAQ,SAAS;AAEpE,QAAI,QAAQ;AACR,uBAAiB,oBAAoB,QAAQ,QAAQ,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AACvH,QAAI,IAAI,QAAQ;AAChB,QAAI,MAAM;AACN,OAAC,KAAK,OAAO,oBAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM;AAChF,WAAO;AAAA,EACX;AACJ;AAIO,IAAM,aAAa,IAAI,gBAAgB;AAE9C,IAAM,wBAAN,cAAoC,YAA8B;AAAA,EAC9D,cAAc;AACV,UAAM,iCAAiC;AAAA,MACnC,EAAE,IAAI,GAAG,MAAM,UAAU,MAAM,WAAW,GAAG,MAAM,OAAO;AAAA,MAC1D;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAU,MAAM;AAAA,QAAU,GAAG;AAAA,QAAwB,GAAG;AAAA;AAAA,MAAsB;AAAA,IACjG,CAAC;AAAA,EACL;AAAA,EACA,OAAO,OAA4D;AAC/D,UAAM,UAAU,WAAW,OAAO,OAAQ,KAAK,gBAAkB;AACjE,YAAQ,SAAS;AACjB,QAAI,UAAU;AACV,6BAAyC,MAAM,SAAS,KAAK;AACjE,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,QAAuB,QAAgB,SAA4B,QAA6C;AAC/H,QAAI,UAAU,UAAU,KAAK,OAAO,GAAG,MAAM,OAAO,MAAM;AAC1D,WAAO,OAAO,MAAM,KAAK;AACrB,UAAI,CAAC,SAAS,QAAQ,IAAI,OAAO,IAAI;AACrC,cAAQ,SAAS;AAAA,QACb;AAAA,QAAsC;AAClC,kBAAQ,SAAS,OAAO,mBAAmB,QAAQ,OAAO,OAAO,GAAG,SAAS,QAAQ,MAAM;AAC3F;AAAA,QACJ;AAAA,QAAwB;AACpB,kBAAQ,SAAS,OAAO,MAAM,EAAE,SAAS;AACzC;AAAA,QACJ;AACI,cAAI,IAAI,QAAQ;AAChB,cAAI,MAAM;AACN,kBAAM,IAAI,WAAW,MAAM,iBAAiB,OAAO,eAAe,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACtG,cAAI,IAAI,OAAO,KAAK,QAAQ;AAC5B,cAAI,MAAM;AACN,aAAC,MAAM,OAAO,oBAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,CAAC;AAAA,MACtG;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB,SAA2B,QAAuB,SAA4C;AAE9G,QAAI,QAAQ;AACR,aAAO,oBAAoB,QAAQ,QAAQ,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AAE7G,QAAI,QAAQ,WAAW;AACnB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,MAAM,QAAQ,MAAM;AACvD,QAAI,IAAI,QAAQ;AAChB,QAAI,MAAM;AACN,OAAC,KAAK,OAAO,oBAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM;AAChF,WAAO;AAAA,EACX;AACJ;AAIO,IAAM,mBAAmB,IAAI,sBAAsB;AAE1D,IAAM,uBAAN,cAAmC,YAA6B;AAAA,EAC5D,cAAc;AACV,UAAM,gCAAgC;AAAA,MAClC,EAAE,IAAI,GAAG,MAAM,aAAa,MAAM,QAAQ,WAAW,aAAa,GAAG,MAAM,CAAC,yBAAyB,QAAQ,EAAE;AAAA,MAC/G,EAAE,IAAI,GAAG,MAAM,eAAe,MAAM,WAAW,GAAG,MAAM,YAAY;AAAA,MACpE,EAAE,IAAI,GAAG,MAAM,eAAe,MAAM,WAAW,WAAW,eAAe,GAAG,MAAM,sBAAsB;AAAA,MACxG,EAAE,IAAI,GAAG,MAAM,aAAa,MAAM,WAAW,WAAW,aAAa,GAAG,MAAM,oBAAoB;AAAA,MAClG,EAAE,IAAI,GAAG,MAAM,YAAY,MAAM,WAAW,WAAW,YAAY,QAAQ,GAAyB,GAAG,MAAM,aAAa;AAAA,IAC9H,CAAC;AAAA,EACL;AAAA,EACA,OAAO,OAA0D;AAC7D,UAAM,UAAU,WAAW,OAAO,OAAQ,KAAK,gBAAkB;AACjE,YAAQ,YAAY;AACpB,YAAQ,WAAW,CAAC;AACpB,QAAI,UAAU;AACV,6BAAwC,MAAM,SAAS,KAAK;AAChE,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,QAAuB,QAAgB,SAA4B,QAA2C;AAC7H,QAAI,UAAU,UAAU,KAAK,OAAO,GAAG,MAAM,OAAO,MAAM;AAC1D,WAAO,OAAO,MAAM,KAAK;AACrB,UAAI,CAAC,SAAS,QAAQ,IAAI,OAAO,IAAI;AACrC,cAAQ,SAAS;AAAA,QACb;AAAA,QAA2C;AACvC,kBAAQ,YAAY,OAAO,MAAM;AACjC;AAAA,QACJ;AAAA,QAAyD;AACrD,kBAAQ,cAAc,YAAY,mBAAmB,QAAQ,OAAO,OAAO,GAAG,SAAS,QAAQ,WAAW;AAC1G;AAAA,QACJ;AAAA,QAAmE;AAC/D,kBAAQ,cAAc,sBAAsB,mBAAmB,QAAQ,OAAO,OAAO,GAAG,SAAS,QAAQ,WAAW;AACpH;AAAA,QACJ;AAAA,QAA+D;AAC3D,kBAAQ,YAAY,oBAAoB,mBAAmB,QAAQ,OAAO,OAAO,GAAG,SAAS,QAAQ,SAAS;AAC9G;AAAA,QACJ;AAAA,QAAuD;AACnD,kBAAQ,SAAS,KAAK,aAAa,mBAAmB,QAAQ,OAAO,OAAO,GAAG,OAAO,CAAC;AACvF;AAAA,QACJ;AACI,cAAI,IAAI,QAAQ;AAChB,cAAI,MAAM;AACN,kBAAM,IAAI,WAAW,MAAM,iBAAiB,OAAO,eAAe,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACtG,cAAI,IAAI,OAAO,KAAK,QAAQ;AAC5B,cAAI,MAAM;AACN,aAAC,MAAM,OAAO,oBAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,CAAC;AAAA,MACtG;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB,SAA0B,QAAuB,SAA4C;AAE7G,QAAI,QAAQ,cAAc;AACtB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,MAAM,QAAQ,SAAS;AAE1D,QAAI,QAAQ;AACR,kBAAY,oBAAoB,QAAQ,aAAa,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AAEvH,QAAI,QAAQ;AACR,4BAAsB,oBAAoB,QAAQ,aAAa,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AAEjI,QAAI,QAAQ;AACR,0BAAoB,oBAAoB,QAAQ,WAAW,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AAE7H,aAAS,IAAI,GAAG,IAAI,QAAQ,SAAS,QAAQ;AACzC,mBAAa,oBAAoB,QAAQ,SAAS,CAAC,GAAG,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AACxH,QAAI,IAAI,QAAQ;AAChB,QAAI,MAAM;AACN,OAAC,KAAK,OAAO,oBAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM;AAChF,WAAO;AAAA,EACX;AACJ;AAIO,IAAM,kBAAkB,IAAI,qBAAqB;AAExD,IAAM,oBAAN,cAAgC,YAA0B;AAAA,EACtD,cAAc;AACV,UAAM,6BAA6B;AAAA,MAC/B;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAc,MAAM;AAAA,QAAU,WAAW;AAAA,QAAc,KAAK;AAAA,QAAM,GAAG;AAAA;AAAA,MAAyB;AAAA,IACjH,CAAC;AAAA,EACL;AAAA,EACA,OAAO,OAAoD;AACvD,UAAM,UAAU,WAAW,OAAO,OAAQ,KAAK,gBAAkB;AACjE,QAAI,UAAU;AACV,6BAAqC,MAAM,SAAS,KAAK;AAC7D,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,QAAuB,QAAgB,SAA4B,QAAqC;AACvH,QAAI,UAAU,UAAU,KAAK,OAAO,GAAG,MAAM,OAAO,MAAM;AAC1D,WAAO,OAAO,MAAM,KAAK;AACrB,UAAI,CAAC,SAAS,QAAQ,IAAI,OAAO,IAAI;AACrC,cAAQ,SAAS;AAAA,QACb;AAAA,QAAsC;AAClC,kBAAQ,aAAa,OAAO,OAAO;AACnC;AAAA,QACJ;AACI,cAAI,IAAI,QAAQ;AAChB,cAAI,MAAM;AACN,kBAAM,IAAI,WAAW,MAAM,iBAAiB,OAAO,eAAe,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACtG,cAAI,IAAI,OAAO,KAAK,QAAQ;AAC5B,cAAI,MAAM;AACN,aAAC,MAAM,OAAO,oBAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,CAAC;AAAA,MACtG;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB,SAAuB,QAAuB,SAA4C;AAE1G,QAAI,QAAQ,eAAe;AACvB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,UAAU;AAC5D,QAAI,IAAI,QAAQ;AAChB,QAAI,MAAM;AACN,OAAC,KAAK,OAAO,oBAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM;AAChF,WAAO;AAAA,EACX;AACJ;AAIO,IAAM,eAAe,IAAI,kBAAkB;AAElD,IAAM,6BAAN,cAAyC,YAAmC;AAAA,EACxE,cAAc;AACV,UAAM,sCAAsC;AAAA,MACxC;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAqB,MAAM;AAAA,QAAU,WAAW;AAAA,QAAqB,QAAQ;AAAA,QAAyB,GAAG;AAAA;AAAA,MAAyB;AAAA,MACjJ;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAgB,MAAM;AAAA,QAAU,WAAW;AAAA,QAAgB,GAAG;AAAA;AAAA,MAAyB;AAAA,IAC1G,CAAC;AAAA,EACL;AAAA,EACA,OAAO,OAAsE;AACzE,UAAM,UAAU,WAAW,OAAO,OAAQ,KAAK,gBAAkB;AACjE,YAAQ,oBAAoB,CAAC;AAC7B,YAAQ,eAAe;AACvB,QAAI,UAAU;AACV,6BAA8C,MAAM,SAAS,KAAK;AACtE,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,QAAuB,QAAgB,SAA4B,QAAuD;AACzI,QAAI,UAAU,UAAU,KAAK,OAAO,GAAG,MAAM,OAAO,MAAM;AAC1D,WAAO,OAAO,MAAM,KAAK;AACrB,UAAI,CAAC,SAAS,QAAQ,IAAI,OAAO,IAAI;AACrC,cAAQ,SAAS;AAAA,QACb;AAAA,QAA6C;AACzC,cAAI,aAAa,SAAS;AACtB,qBAAS,IAAI,OAAO,MAAM,IAAI,OAAO,KAAK,OAAO,MAAM;AACnD,sBAAQ,kBAAkB,KAAK,OAAO,OAAO,CAAC;AAAA;AAElD,oBAAQ,kBAAkB,KAAK,OAAO,OAAO,CAAC;AAClD;AAAA,QACJ;AAAA,QAA+B;AAC3B,kBAAQ,eAAe,OAAO,OAAO;AACrC;AAAA,QACJ;AACI,cAAI,IAAI,QAAQ;AAChB,cAAI,MAAM;AACN,kBAAM,IAAI,WAAW,MAAM,iBAAiB,OAAO,eAAe,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACtG,cAAI,IAAI,OAAO,KAAK,QAAQ;AAC5B,cAAI,MAAM;AACN,aAAC,MAAM,OAAO,oBAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,CAAC;AAAA,MACtG;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB,SAAgC,QAAuB,SAA4C;AAEnH,QAAI,QAAQ,kBAAkB,QAAQ;AAClC,aAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK;AAC7C,eAAS,IAAI,GAAG,IAAI,QAAQ,kBAAkB,QAAQ;AAClD,eAAO,OAAO,QAAQ,kBAAkB,CAAC,CAAC;AAC9C,aAAO,KAAK;AAAA,IAChB;AAEA,QAAI,QAAQ,iBAAiB;AACzB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,YAAY;AAC9D,QAAI,IAAI,QAAQ;AAChB,QAAI,MAAM;AACN,OAAC,KAAK,OAAO,oBAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM;AAChF,WAAO;AAAA,EACX;AACJ;AAIO,IAAM,wBAAwB,IAAI,2BAA2B;AAEpE,IAAM,2BAAN,cAAuC,YAAiC;AAAA,EACpE,cAAc;AACV,UAAM,oCAAoC;AAAA,MACtC;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAqB,MAAM;AAAA,QAAU,WAAW;AAAA,QAAqB,GAAG;AAAA;AAAA,MAAyB;AAAA,MAChH;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAgB,MAAM;AAAA,QAAU,WAAW;AAAA,QAAgB,GAAG;AAAA;AAAA,MAAyB;AAAA,IAC1G,CAAC;AAAA,EACL;AAAA,EACA,OAAO,OAAkE;AACrE,UAAM,UAAU,WAAW,OAAO,OAAQ,KAAK,gBAAkB;AACjE,YAAQ,oBAAoB;AAC5B,YAAQ,eAAe;AACvB,QAAI,UAAU;AACV,6BAA4C,MAAM,SAAS,KAAK;AACpE,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,QAAuB,QAAgB,SAA4B,QAAmD;AACrI,QAAI,UAAU,UAAU,KAAK,OAAO,GAAG,MAAM,OAAO,MAAM;AAC1D,WAAO,OAAO,MAAM,KAAK;AACrB,UAAI,CAAC,SAAS,QAAQ,IAAI,OAAO,IAAI;AACrC,cAAQ,SAAS;AAAA,QACb;AAAA,QAAoC;AAChC,kBAAQ,oBAAoB,OAAO,OAAO;AAC1C;AAAA,QACJ;AAAA,QAA+B;AAC3B,kBAAQ,eAAe,OAAO,OAAO;AACrC;AAAA,QACJ;AACI,cAAI,IAAI,QAAQ;AAChB,cAAI,MAAM;AACN,kBAAM,IAAI,WAAW,MAAM,iBAAiB,OAAO,eAAe,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACtG,cAAI,IAAI,OAAO,KAAK,QAAQ;AAC5B,cAAI,MAAM;AACN,aAAC,MAAM,OAAO,oBAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,CAAC;AAAA,MACtG;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB,SAA8B,QAAuB,SAA4C;AAEjH,QAAI,QAAQ,sBAAsB;AAC9B,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,iBAAiB;AAEnE,QAAI,QAAQ,iBAAiB;AACzB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,YAAY;AAC9D,QAAI,IAAI,QAAQ;AAChB,QAAI,MAAM;AACN,OAAC,KAAK,OAAO,oBAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM;AAChF,WAAO;AAAA,EACX;AACJ;AAIO,IAAM,sBAAsB,IAAI,yBAAyB;AAEhE,IAAM,oBAAN,cAAgC,YAA0B;AAAA,EACtD,cAAc;AACV,UAAM,6BAA6B;AAAA,MAC/B,EAAE,IAAI,GAAG,MAAM,UAAU,MAAM,WAAW,GAAG,MAAM,OAAO;AAAA,MAC1D,EAAE,IAAI,GAAG,MAAM,gBAAgB,MAAM,WAAW,QAAQ,GAAyB,GAAG,MAAM,gBAAgB;AAAA,MAC1G;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAiB,MAAM;AAAA,QAAU,WAAW;AAAA,QAAiB,KAAK;AAAA,QAAM,GAAG;AAAA;AAAA,MAAuB;AAAA,IACrH,CAAC;AAAA,EACL;AAAA,EACA,OAAO,OAAoD;AACvD,UAAM,UAAU,WAAW,OAAO,OAAQ,KAAK,gBAAkB;AACjE,YAAQ,eAAe,CAAC;AACxB,QAAI,UAAU;AACV,6BAAqC,MAAM,SAAS,KAAK;AAC7D,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,QAAuB,QAAgB,SAA4B,QAAqC;AACvH,QAAI,UAAU,UAAU,KAAK,OAAO,GAAG,MAAM,OAAO,MAAM;AAC1D,WAAO,OAAO,MAAM,KAAK;AACrB,UAAI,CAAC,SAAS,QAAQ,IAAI,OAAO,IAAI;AACrC,cAAQ,SAAS;AAAA,QACb;AAAA,QAAsC;AAClC,kBAAQ,SAAS,OAAO,mBAAmB,QAAQ,OAAO,OAAO,GAAG,SAAS,QAAQ,MAAM;AAC3F;AAAA,QACJ;AAAA,QAA8D;AAC1D,kBAAQ,aAAa,KAAK,gBAAgB,mBAAmB,QAAQ,OAAO,OAAO,GAAG,OAAO,CAAC;AAC9F;AAAA,QACJ;AAAA,QAAwC;AACpC,kBAAQ,gBAAgB,OAAO,MAAM;AACrC;AAAA,QACJ;AACI,cAAI,IAAI,QAAQ;AAChB,cAAI,MAAM;AACN,kBAAM,IAAI,WAAW,MAAM,iBAAiB,OAAO,eAAe,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACtG,cAAI,IAAI,OAAO,KAAK,QAAQ;AAC5B,cAAI,MAAM;AACN,aAAC,MAAM,OAAO,oBAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,CAAC;AAAA,MACtG;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB,SAAuB,QAAuB,SAA4C;AAE1G,QAAI,QAAQ;AACR,aAAO,oBAAoB,QAAQ,QAAQ,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AAE7G,aAAS,IAAI,GAAG,IAAI,QAAQ,aAAa,QAAQ;AAC7C,sBAAgB,oBAAoB,QAAQ,aAAa,CAAC,GAAG,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AAE/H,QAAI,QAAQ,kBAAkB;AAC1B,aAAO,IAAI,GAAG,SAAS,KAAK,EAAE,MAAM,QAAQ,aAAa;AAC7D,QAAI,IAAI,QAAQ;AAChB,QAAI,MAAM;AACN,OAAC,KAAK,OAAO,oBAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM;AAChF,WAAO;AAAA,EACX;AACJ;AAIO,IAAM,eAAe,IAAI,kBAAkB;AAElD,IAAM,gBAAN,cAA4B,YAAsB;AAAA,EAC9C,cAAc;AACV,UAAM,yBAAyB;AAAA,MAC3B,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,yBAAyB,QAAQ,EAAE;AAAA,MAClF;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAQ,MAAM;AAAA,QAAU,GAAG;AAAA;AAAA,MAAwB;AAAA,MAClE;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAQ,MAAM;AAAA,QAAU,GAAG;AAAA,QAAyB,GAAG;AAAA;AAAA,MAAsB;AAAA,IAChG,CAAC;AAAA,EACL;AAAA,EACA,OAAO,OAA4C;AAC/C,UAAM,UAAU,WAAW,OAAO,OAAQ,KAAK,gBAAkB;AACjE,YAAQ,OAAO;AACf,YAAQ,OAAO,IAAI,WAAW,CAAC;AAC/B,YAAQ,OAAO;AACf,QAAI,UAAU;AACV,6BAAiC,MAAM,SAAS,KAAK;AACzD,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,QAAuB,QAAgB,SAA4B,QAA6B;AAC/G,QAAI,UAAU,UAAU,KAAK,OAAO,GAAG,MAAM,OAAO,MAAM;AAC1D,WAAO,OAAO,MAAM,KAAK;AACrB,UAAI,CAAC,SAAS,QAAQ,IAAI,OAAO,IAAI;AACrC,cAAQ,SAAS;AAAA,QACb;AAAA,QAAsC;AAClC,kBAAQ,OAAO,OAAO,MAAM;AAC5B;AAAA,QACJ;AAAA,QAAsB;AAClB,kBAAQ,OAAO,OAAO,MAAM;AAC5B;AAAA,QACJ;AAAA,QAAuB;AACnB,kBAAQ,OAAO,OAAO,OAAO,EAAE,SAAS;AACxC;AAAA,QACJ;AACI,cAAI,IAAI,QAAQ;AAChB,cAAI,MAAM;AACN,kBAAM,IAAI,WAAW,MAAM,iBAAiB,OAAO,eAAe,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACtG,cAAI,IAAI,OAAO,KAAK,QAAQ;AAC5B,cAAI,MAAM;AACN,aAAC,MAAM,OAAO,oBAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,CAAC;AAAA,MACtG;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB,SAAmB,QAAuB,SAA4C;AAEtG,QAAI,QAAQ,SAAS;AACjB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,MAAM,QAAQ,IAAI;AAErD,QAAI,QAAQ,KAAK;AACb,aAAO,IAAI,GAAG,SAAS,eAAe,EAAE,MAAM,QAAQ,IAAI;AAE9D,QAAI,QAAQ,SAAS;AACjB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,IAAI;AACtD,QAAI,IAAI,QAAQ;AAChB,QAAI,MAAM;AACN,OAAC,KAAK,OAAO,oBAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM;AAChF,WAAO;AAAA,EACX;AACJ;AAIO,IAAM,WAAW,IAAI,cAAc;AAE1C,IAAM,mBAAN,cAA+B,YAAyB;AAAA,EACpD,cAAc;AACV,UAAM,4BAA4B;AAAA,MAC9B;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAQ,MAAM;AAAA,QAAU,GAAG;AAAA;AAAA,MAAwB;AAAA,MAClE,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,QAAQ,GAAG,MAAM,CAAC,4BAA4B,WAAW,EAAE;AAAA,MACxF;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAQ,MAAM;AAAA,QAAU,GAAG;AAAA,QAAyB,GAAG;AAAA;AAAA,MAAsB;AAAA,MAC5F;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAW,MAAM;AAAA,QAAU,GAAG;AAAA,QAAyB,GAAG;AAAA;AAAA,MAAsB;AAAA,MAC/F,EAAE,IAAI,GAAG,MAAM,aAAa,MAAM,WAAW,QAAQ,GAAyB,GAAG,MAAM,aAAa;AAAA,MACpG,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,WAAW,QAAQ,GAAyB,GAAG,MAAM,SAAS;AAAA,MAC3F;AAAA,QAAE,IAAI;AAAA,QAAG,MAAM;AAAA,QAAiB,MAAM;AAAA,QAAU,WAAW;AAAA,QAAiB,KAAK;AAAA,QAAM,GAAG;AAAA;AAAA,MAAuB;AAAA,IACrH,CAAC;AAAA,EACL;AAAA,EACA,OAAO,OAAkD;AACrD,UAAM,UAAU,WAAW,OAAO,OAAQ,KAAK,gBAAkB;AACjE,YAAQ,OAAO;AACf,YAAQ,OAAO;AACf,YAAQ,OAAO;AACf,YAAQ,UAAU;AAClB,YAAQ,YAAY,CAAC;AACrB,YAAQ,OAAO,CAAC;AAChB,QAAI,UAAU;AACV,6BAAoC,MAAM,SAAS,KAAK;AAC5D,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,QAAuB,QAAgB,SAA4B,QAAmC;AACrH,QAAI,UAAU,UAAU,KAAK,OAAO,GAAG,MAAM,OAAO,MAAM;AAC1D,WAAO,OAAO,MAAM,KAAK;AACrB,UAAI,CAAC,SAAS,QAAQ,IAAI,OAAO,IAAI;AACrC,cAAQ,SAAS;AAAA,QACb;AAAA,QAAuB;AACnB,kBAAQ,OAAO,OAAO,OAAO;AAC7B;AAAA,QACJ;AAAA,QAAyC;AACrC,kBAAQ,OAAO,OAAO,MAAM;AAC5B;AAAA,QACJ;AAAA,QAAuB;AACnB,kBAAQ,OAAO,OAAO,OAAO,EAAE,SAAS;AACxC;AAAA,QACJ;AAAA,QAA0B;AACtB,kBAAQ,UAAU,OAAO,OAAO,EAAE,SAAS;AAC3C;AAAA,QACJ;AAAA,QAAwD;AACpD,kBAAQ,UAAU,KAAK,aAAa,mBAAmB,QAAQ,OAAO,OAAO,GAAG,OAAO,CAAC;AACxF;AAAA,QACJ;AAAA,QAA+C;AAC3C,kBAAQ,KAAK,KAAK,SAAS,mBAAmB,QAAQ,OAAO,OAAO,GAAG,OAAO,CAAC;AAC/E;AAAA,QACJ;AAAA,QAAwC;AACpC,kBAAQ,gBAAgB,OAAO,MAAM;AACrC;AAAA,QACJ;AACI,cAAI,IAAI,QAAQ;AAChB,cAAI,MAAM;AACN,kBAAM,IAAI,WAAW,MAAM,iBAAiB,OAAO,eAAe,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACtG,cAAI,IAAI,OAAO,KAAK,QAAQ;AAC5B,cAAI,MAAM;AACN,aAAC,MAAM,OAAO,oBAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,CAAC;AAAA,MACtG;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB,SAAsB,QAAuB,SAA4C;AAEzG,QAAI,QAAQ,SAAS;AACjB,aAAO,IAAI,GAAG,SAAS,eAAe,EAAE,OAAO,QAAQ,IAAI;AAE/D,QAAI,QAAQ,SAAS;AACjB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,MAAM,QAAQ,IAAI;AAErD,QAAI,QAAQ,SAAS;AACjB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,IAAI;AAEtD,QAAI,QAAQ,YAAY;AACpB,aAAO,IAAI,GAAG,SAAS,MAAM,EAAE,OAAO,QAAQ,OAAO;AAEzD,aAAS,IAAI,GAAG,IAAI,QAAQ,UAAU,QAAQ;AAC1C,mBAAa,oBAAoB,QAAQ,UAAU,CAAC,GAAG,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AAEzH,aAAS,IAAI,GAAG,IAAI,QAAQ,KAAK,QAAQ;AACrC,eAAS,oBAAoB,QAAQ,KAAK,CAAC,GAAG,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AAEhH,QAAI,QAAQ,kBAAkB;AAC1B,aAAO,IAAI,GAAG,SAAS,KAAK,EAAE,MAAM,QAAQ,aAAa;AAC7D,QAAI,IAAI,QAAQ;AAChB,QAAI,MAAM;AACN,OAAC,KAAK,OAAO,oBAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM;AAChF,WAAO;AAAA,EACX;AACJ;AAIO,IAAM,cAAc,IAAI,iBAAiB;AAEhD,IAAM,kBAAN,cAA8B,YAAwB;AAAA,EAClD,cAAc;AACV,UAAM,2BAA2B;AAAA,MAC7B,EAAE,IAAI,GAAG,MAAM,YAAY,MAAM,WAAW,QAAQ,GAAyB,GAAG,MAAM,YAAY;AAAA,IACtG,CAAC;AAAA,EACL;AAAA,EACA,OAAO,OAAgD;AACnD,UAAM,UAAU,WAAW,OAAO,OAAQ,KAAK,gBAAkB;AACjE,YAAQ,WAAW,CAAC;AACpB,QAAI,UAAU;AACV,6BAAmC,MAAM,SAAS,KAAK;AAC3D,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,QAAuB,QAAgB,SAA4B,QAAiC;AACnH,QAAI,UAAU,UAAU,KAAK,OAAO,GAAG,MAAM,OAAO,MAAM;AAC1D,WAAO,OAAO,MAAM,KAAK;AACrB,UAAI,CAAC,SAAS,QAAQ,IAAI,OAAO,IAAI;AACrC,cAAQ,SAAS;AAAA,QACb;AAAA,QAAsD;AAClD,kBAAQ,SAAS,KAAK,YAAY,mBAAmB,QAAQ,OAAO,OAAO,GAAG,OAAO,CAAC;AACtF;AAAA,QACJ;AACI,cAAI,IAAI,QAAQ;AAChB,cAAI,MAAM;AACN,kBAAM,IAAI,WAAW,MAAM,iBAAiB,OAAO,eAAe,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACtG,cAAI,IAAI,OAAO,KAAK,QAAQ;AAC5B,cAAI,MAAM;AACN,aAAC,MAAM,OAAO,oBAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,CAAC;AAAA,MACtG;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB,SAAqB,QAAuB,SAA4C;AAExG,aAAS,IAAI,GAAG,IAAI,QAAQ,SAAS,QAAQ;AACzC,kBAAY,oBAAoB,QAAQ,SAAS,CAAC,GAAG,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AACvH,QAAI,IAAI,QAAQ;AAChB,QAAI,MAAM;AACN,OAAC,KAAK,OAAO,oBAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM;AAChF,WAAO;AAAA,EACX;AACJ;AAIO,IAAM,aAAa,IAAI,gBAAgB;AAE9C,IAAM,kBAAN,cAA8B,YAAwB;AAAA,EAClD,cAAc;AACV,UAAM,2BAA2B;AAAA,MAC7B,EAAE,IAAI,GAAG,MAAM,QAAQ,MAAM,WAAW,GAAG,MAAM,WAAW;AAAA,MAC5D,EAAE,IAAI,GAAG,MAAM,SAAS,MAAM,WAAW,GAAG,MAAM,WAAW;AAAA,IACjE,CAAC;AAAA,EACL;AAAA,EACA,OAAO,OAAgD;AACnD,UAAM,UAAU,WAAW,OAAO,OAAQ,KAAK,gBAAkB;AACjE,QAAI,UAAU;AACV,6BAAmC,MAAM,SAAS,KAAK;AAC3D,WAAO;AAAA,EACX;AAAA,EACA,mBAAmB,QAAuB,QAAgB,SAA4B,QAAiC;AACnH,QAAI,UAAU,UAAU,KAAK,OAAO,GAAG,MAAM,OAAO,MAAM;AAC1D,WAAO,OAAO,MAAM,KAAK;AACrB,UAAI,CAAC,SAAS,QAAQ,IAAI,OAAO,IAAI;AACrC,cAAQ,SAAS;AAAA,QACb;AAAA,QAAiD;AAC7C,kBAAQ,OAAO,WAAW,mBAAmB,QAAQ,OAAO,OAAO,GAAG,SAAS,QAAQ,IAAI;AAC3F;AAAA,QACJ;AAAA,QAAkD;AAC9C,kBAAQ,QAAQ,WAAW,mBAAmB,QAAQ,OAAO,OAAO,GAAG,SAAS,QAAQ,KAAK;AAC7F;AAAA,QACJ;AACI,cAAI,IAAI,QAAQ;AAChB,cAAI,MAAM;AACN,kBAAM,IAAI,WAAW,MAAM,iBAAiB,OAAO,eAAe,QAAQ,SAAS,KAAK,QAAQ,EAAE;AACtG,cAAI,IAAI,OAAO,KAAK,QAAQ;AAC5B,cAAI,MAAM;AACN,aAAC,MAAM,OAAO,oBAAoB,SAAS,GAAG,KAAK,UAAU,SAAS,SAAS,UAAU,CAAC;AAAA,MACtG;AAAA,IACJ;AACA,WAAO;AAAA,EACX;AAAA,EACA,oBAAoB,SAAqB,QAAuB,SAA4C;AAExG,QAAI,QAAQ;AACR,iBAAW,oBAAoB,QAAQ,MAAM,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AAE/G,QAAI,QAAQ;AACR,iBAAW,oBAAoB,QAAQ,OAAO,OAAO,IAAI,GAAG,SAAS,eAAe,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK;AAChH,QAAI,IAAI,QAAQ;AAChB,QAAI,MAAM;AACN,OAAC,KAAK,OAAO,oBAAoB,UAAU,GAAG,KAAK,UAAU,SAAS,MAAM;AAChF,WAAO;AAAA,EACX;AACJ;AAIO,IAAM,aAAa,IAAI,gBAAgB;;;ACl9C9C,IAAI,aAAa;AACjB,IAAI,kBAA2C;AAC/C,IAAM,cAAc,IAAI,QAAgB,CAAC,SAAS,WAAW;AACzD,oBAAkB,EAAC,OAAO,YAAY,IAAI,GAAG,SAAS,OAAM;AAChE,CAAC;AAEM,SAAS,WAAW,WAA0B;AACjD,MAAI,YAAY;AACZ;AAAA,EACJ;AACA,eAAa;AACb,QAAM,SAAS,IAAI,OAAO,aAAa,aAAa,EAAC,MAAM,SAAQ,CAAC;AACpE,SAAO,YAAY,UAAU,KAAK,MAAM,MAAM;AAC9C,SAAO,UAAU,CAAC,UAAU;AACxB,YAAQ,MAAM,gBAAgB,KAAK;AACnC,oBAAgB,OAAO,KAAK;AAAA,EAChC;AACJ;AAEA,IAAI,kBAAkB;AACtB,IAAM,mBAAmB,oBAAI,IAA8B;AAE3D,SAAS,UAAU,QAAgB,OAAiC;AAChE,UAAQ,MAAM,KAAK,MAAM;AAAA,IACrB,KAAK;AACD,sBAAgB,QAAQ,MAAM;AAC9B;AAAA,IACJ,KAAK,UAAU;AACX,YAAM,EAAC,WAAW,OAAM,IAAI,MAAM;AAClC,YAAM,YAAY,iBAAiB,IAAI,SAAS;AAChD,UAAI,WAAW;AACX,cAAM,MAAM,YAAY,IAAI;AAC5B,gBAAQ,MAAM,WAAW,SAAS,SAAS,MAAM,UAAU,KAAK,IAAI;AACpE,yBAAiB,OAAO,SAAS;AACjC,kBAAU,QAAQ,MAAM;AAAA,MAC5B,OAAO;AACH,gBAAQ,KAAK,sBAAsB,SAAS,EAAE;AAAA,MAClD;AACA;AAAA,IACJ;AAAA,EACJ;AACJ;AAEA,eAAe,MAAS,SAAmD;AACvE,MAAI,CAAC,YAAY;AACb,UAAM,IAAI,MAAM,wBAAwB;AAAA,EAC5C;AACA,QAAM,SAAS,MAAM;AACrB,QAAM,YAAY;AAClB,QAAM,UAAU,IAAI,QAAW,CAAC,SAAS,WAAW;AAChD,qBAAiB,IAAI,WAAW,EAAC,OAAO,YAAY,IAAI,GAAG,SAAS,OAAM,CAAC;AAAA,EAC/E,CAAC;AACD,SAAO,YAAY;AAAA,IACf,GAAG;AAAA,IACH;AAAA,EACJ,CAAC;AACD,SAAO;AACX;AAEA,eAAsB,QAAQ,MAA8B,OAA+B,QAA6C;AACpI,QAAM,OAAO,MAAM,MAAkB;AAAA,IACjC,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA;AAAA,EACJ,CAAc;AACd,QAAM,aAAa,YAAY,IAAI;AACnC,QAAM,SAAS,WAAW,WAAW,MAAM,EAAC,kBAAkB,MAAK,CAAC;AACpE,QAAM,MAAM,YAAY,IAAI;AAC5B,UAAQ,MAAM,wBAAwB,MAAM,UAAU,IAAI;AAC1D,SAAO;AACX;AAwDO,SAAS,MAAuC,MAAoC;AACvF,SAAO;AACX;AAGO,SAAS,YAAY,MAAuB,UAAkB,IAA8B;AA5JnG;AA6JI,QAAM,MAAM,KAAK;AACjB,MAAI,CAAC,KAAK;AACN;AAAA,EACJ;AACA,MAAI,IAAI,eAAe,MAAM;AACzB,OAAG,EAAC,MAAM,QAAQ,aAAa,IAAI,YAAW,CAAC;AAAA,EACnD;AACA,KAAG,EAAC,MAAM,WAAW,SAAS,IAAI,UAAU,SAAQ,CAAC;AACrD,MAAI,KAAK,aAAa;AAClB,OAAG,EAAC,MAAM,eAAe,MAAM,QAAQ,OAAO,KAAK,YAAY,aAAY,CAAC;AAAA,EAChF,OAAO;AACH,OAAG,EAAC,MAAM,WAAW,OAAO,EAAC,CAAC;AAAA,EAClC;AACA,KAAG,EAAC,MAAM,UAAU,UAAU,IAAI,UAAU,QAAQ,IAAI,OAAM,CAAC;AAC/D,WAAS,IAAI,GAAG,IAAI,IAAI,UAAU,QAAQ,KAAK;AAC3C,QAAI,KAAK,GAAG;AACR,SAAG,EAAC,MAAM,WAAW,OAAO,EAAC,CAAC;AAAA,IAClC;AACA,UAAM,MAAM,MAAM,IAAI,UAAU,CAAC,EAAE,KAAK;AACxC,UAAM,cAAa,UAAK,SAAS,CAAC,MAAf,mBAAkB;AACrC,YAAQ,IAAI,WAAW;AAAA,MACnB,KAAK;AACD,WAAG,EAAC,MAAM,SAAS,MAAM,IAAI,YAAY,WAAU,CAAC;AACpD;AAAA,MACJ,KAAK;AACD,WAAG,EAAC,MAAM,YAAY,OAAO,IAAI,UAAU,WAAU,CAAC;AACtD;AAAA,MACJ,KAAK,cAAc;AACf,cAAM,QAAQ,IAAI;AAClB,WAAG,EAAC,MAAM,UAAU,QAAQ,MAAM,QAAQ,WAAU,CAAC;AACrD;AAAA,MACJ;AAAA,MACA,KAAK;AACD,YAAI,IAAI,cAAc,UAAU;AAC5B,aAAG,EAAC,MAAM,SAAS,MAAM,aAAa,WAAU,CAAC;AAAA,QACrD,OAAO;AACH,aAAG,EAAC,MAAM,eAAe,SAAS,IAAI,cAAc,UAAU,WAAU,CAAC;AAAA,QAC7E;AACA;AAAA,IACR;AAAA,EACJ;AACA,MAAI,KAAK,WAAW;AAChB,OAAG,EAAC,MAAM,eAAe,MAAM,QAAQ,OAAO,KAAK,UAAU,aAAY,CAAC;AAAA,EAC9E;AACJ;","names":["SymbolFlag","DiffKind","SectionKind"]}
1
+ {"version":3,"sources":["../gen/diff_pb.ts","../src/main.ts"],"sourcesContent":["/* eslint-disable */\n// @generated by protobuf-ts 2.9.4 with parameter add_pb_suffix,eslint_disable,ts_nocheck,use_proto_field_name\n// @generated from protobuf file \"diff.proto\" (package \"objdiff.diff\", syntax proto3)\n// tslint:disable\n// @ts-nocheck\nimport type { BinaryWriteOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryWriter } from \"@protobuf-ts/runtime\";\nimport { WireType } from \"@protobuf-ts/runtime\";\nimport type { BinaryReadOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryReader } from \"@protobuf-ts/runtime\";\nimport { UnknownFieldHandler } from \"@protobuf-ts/runtime\";\nimport type { PartialMessage } from \"@protobuf-ts/runtime\";\nimport { reflectionMergePartial } from \"@protobuf-ts/runtime\";\nimport { MessageType } from \"@protobuf-ts/runtime\";\n/**\n * A symbol\n *\n * @generated from protobuf message objdiff.diff.Symbol\n */\nexport interface Symbol {\n /**\n * Name of the symbol\n *\n * @generated from protobuf field: string name = 1;\n */\n name: string;\n /**\n * Demangled name of the symbol\n *\n * @generated from protobuf field: optional string demangled_name = 2;\n */\n demangled_name?: string;\n /**\n * Symbol address\n *\n * @generated from protobuf field: uint64 address = 3;\n */\n address: bigint;\n /**\n * Symbol size\n *\n * @generated from protobuf field: uint64 size = 4;\n */\n size: bigint;\n /**\n * Bitmask of SymbolFlag\n *\n * @generated from protobuf field: uint32 flags = 5;\n */\n flags: number;\n}\n/**\n * A single parsed instruction\n *\n * @generated from protobuf message objdiff.diff.Instruction\n */\nexport interface Instruction {\n /**\n * Instruction address\n *\n * @generated from protobuf field: uint64 address = 1;\n */\n address: bigint;\n /**\n * Instruction size\n *\n * @generated from protobuf field: uint32 size = 2;\n */\n size: number;\n /**\n * Instruction opcode\n *\n * @generated from protobuf field: uint32 opcode = 3;\n */\n opcode: number;\n /**\n * Instruction mnemonic\n *\n * @generated from protobuf field: string mnemonic = 4;\n */\n mnemonic: string;\n /**\n * Instruction formatted string\n *\n * @generated from protobuf field: string formatted = 5;\n */\n formatted: string;\n /**\n * Original (unsimplified) instruction string\n *\n * @generated from protobuf field: optional string original = 6;\n */\n original?: string;\n /**\n * Instruction arguments\n *\n * @generated from protobuf field: repeated objdiff.diff.Argument arguments = 7;\n */\n arguments: Argument[];\n /**\n * Instruction relocation\n *\n * @generated from protobuf field: optional objdiff.diff.Relocation relocation = 8;\n */\n relocation?: Relocation;\n /**\n * Instruction branch destination\n *\n * @generated from protobuf field: optional uint64 branch_dest = 9;\n */\n branch_dest?: bigint;\n /**\n * Instruction line number\n *\n * @generated from protobuf field: optional uint32 line_number = 10;\n */\n line_number?: number;\n}\n/**\n * An instruction argument\n *\n * @generated from protobuf message objdiff.diff.Argument\n */\nexport interface Argument {\n /**\n * @generated from protobuf oneof: value\n */\n value: {\n oneofKind: \"plain_text\";\n /**\n * Plain text\n *\n * @generated from protobuf field: string plain_text = 1;\n */\n plain_text: string;\n } | {\n oneofKind: \"argument\";\n /**\n * Value\n *\n * @generated from protobuf field: objdiff.diff.ArgumentValue argument = 2;\n */\n argument: ArgumentValue;\n } | {\n oneofKind: \"relocation\";\n /**\n * Relocation\n *\n * @generated from protobuf field: objdiff.diff.ArgumentRelocation relocation = 3;\n */\n relocation: ArgumentRelocation;\n } | {\n oneofKind: \"branch_dest\";\n /**\n * Branch destination\n *\n * @generated from protobuf field: uint64 branch_dest = 4;\n */\n branch_dest: bigint;\n } | {\n oneofKind: undefined;\n };\n}\n/**\n * An instruction argument value\n *\n * @generated from protobuf message objdiff.diff.ArgumentValue\n */\nexport interface ArgumentValue {\n /**\n * @generated from protobuf oneof: value\n */\n value: {\n oneofKind: \"signed\";\n /**\n * Signed integer\n *\n * @generated from protobuf field: int64 signed = 1;\n */\n signed: bigint;\n } | {\n oneofKind: \"unsigned\";\n /**\n * Unsigned integer\n *\n * @generated from protobuf field: uint64 unsigned = 2;\n */\n unsigned: bigint;\n } | {\n oneofKind: \"opaque\";\n /**\n * Opaque value\n *\n * @generated from protobuf field: string opaque = 3;\n */\n opaque: string;\n } | {\n oneofKind: undefined;\n };\n}\n/**\n * Marker type for relocation arguments\n *\n * @generated from protobuf message objdiff.diff.ArgumentRelocation\n */\nexport interface ArgumentRelocation {\n}\n/**\n * @generated from protobuf message objdiff.diff.Relocation\n */\nexport interface Relocation {\n /**\n * @generated from protobuf field: uint32 type = 1;\n */\n type: number;\n /**\n * @generated from protobuf field: string type_name = 2;\n */\n type_name: string;\n /**\n * @generated from protobuf field: objdiff.diff.RelocationTarget target = 3;\n */\n target?: RelocationTarget;\n}\n/**\n * @generated from protobuf message objdiff.diff.RelocationTarget\n */\nexport interface RelocationTarget {\n /**\n * @generated from protobuf field: objdiff.diff.Symbol symbol = 1;\n */\n symbol?: Symbol;\n /**\n * @generated from protobuf field: int64 addend = 2;\n */\n addend: bigint;\n}\n/**\n * @generated from protobuf message objdiff.diff.InstructionDiff\n */\nexport interface InstructionDiff {\n /**\n * @generated from protobuf field: objdiff.diff.DiffKind diff_kind = 1;\n */\n diff_kind: DiffKind;\n /**\n * @generated from protobuf field: optional objdiff.diff.Instruction instruction = 2;\n */\n instruction?: Instruction;\n /**\n * @generated from protobuf field: optional objdiff.diff.InstructionBranchFrom branch_from = 3;\n */\n branch_from?: InstructionBranchFrom;\n /**\n * @generated from protobuf field: optional objdiff.diff.InstructionBranchTo branch_to = 4;\n */\n branch_to?: InstructionBranchTo;\n /**\n * @generated from protobuf field: repeated objdiff.diff.ArgumentDiff arg_diff = 5;\n */\n arg_diff: ArgumentDiff[];\n}\n/**\n * @generated from protobuf message objdiff.diff.ArgumentDiff\n */\nexport interface ArgumentDiff {\n /**\n * @generated from protobuf field: optional uint32 diff_index = 1;\n */\n diff_index?: number;\n}\n/**\n * @generated from protobuf message objdiff.diff.InstructionBranchFrom\n */\nexport interface InstructionBranchFrom {\n /**\n * @generated from protobuf field: repeated uint32 instruction_index = 1;\n */\n instruction_index: number[];\n /**\n * @generated from protobuf field: uint32 branch_index = 2;\n */\n branch_index: number;\n}\n/**\n * @generated from protobuf message objdiff.diff.InstructionBranchTo\n */\nexport interface InstructionBranchTo {\n /**\n * @generated from protobuf field: uint32 instruction_index = 1;\n */\n instruction_index: number;\n /**\n * @generated from protobuf field: uint32 branch_index = 2;\n */\n branch_index: number;\n}\n/**\n * @generated from protobuf message objdiff.diff.FunctionDiff\n */\nexport interface FunctionDiff {\n /**\n * @generated from protobuf field: objdiff.diff.Symbol symbol = 1;\n */\n symbol?: Symbol;\n /**\n * @generated from protobuf field: repeated objdiff.diff.InstructionDiff instructions = 2;\n */\n instructions: InstructionDiff[];\n /**\n * @generated from protobuf field: optional float match_percent = 3;\n */\n match_percent?: number;\n}\n/**\n * @generated from protobuf message objdiff.diff.DataDiff\n */\nexport interface DataDiff {\n /**\n * @generated from protobuf field: objdiff.diff.DiffKind kind = 1;\n */\n kind: DiffKind;\n /**\n * @generated from protobuf field: bytes data = 2;\n */\n data: Uint8Array;\n /**\n * May be larger than data\n *\n * @generated from protobuf field: uint64 size = 3;\n */\n size: bigint;\n}\n/**\n * @generated from protobuf message objdiff.diff.SectionDiff\n */\nexport interface SectionDiff {\n /**\n * @generated from protobuf field: string name = 1;\n */\n name: string;\n /**\n * @generated from protobuf field: objdiff.diff.SectionKind kind = 2;\n */\n kind: SectionKind;\n /**\n * @generated from protobuf field: uint64 size = 3;\n */\n size: bigint;\n /**\n * @generated from protobuf field: uint64 address = 4;\n */\n address: bigint;\n /**\n * @generated from protobuf field: repeated objdiff.diff.FunctionDiff functions = 5;\n */\n functions: FunctionDiff[];\n /**\n * @generated from protobuf field: repeated objdiff.diff.DataDiff data = 6;\n */\n data: DataDiff[];\n /**\n * @generated from protobuf field: optional float match_percent = 7;\n */\n match_percent?: number;\n}\n/**\n * @generated from protobuf message objdiff.diff.ObjectDiff\n */\nexport interface ObjectDiff {\n /**\n * @generated from protobuf field: repeated objdiff.diff.SectionDiff sections = 1;\n */\n sections: SectionDiff[];\n}\n/**\n * @generated from protobuf message objdiff.diff.DiffResult\n */\nexport interface DiffResult {\n /**\n * @generated from protobuf field: optional objdiff.diff.ObjectDiff left = 1;\n */\n left?: ObjectDiff;\n /**\n * @generated from protobuf field: optional objdiff.diff.ObjectDiff right = 2;\n */\n right?: ObjectDiff;\n}\n/**\n * Symbol visibility flags\n *\n * @generated from protobuf enum objdiff.diff.SymbolFlag\n */\nexport enum SymbolFlag {\n /**\n * @generated from protobuf enum value: SYMBOL_NONE = 0;\n */\n SYMBOL_NONE = 0,\n /**\n * @generated from protobuf enum value: SYMBOL_GLOBAL = 1;\n */\n SYMBOL_GLOBAL = 1,\n /**\n * @generated from protobuf enum value: SYMBOL_LOCAL = 2;\n */\n SYMBOL_LOCAL = 2,\n /**\n * @generated from protobuf enum value: SYMBOL_WEAK = 3;\n */\n SYMBOL_WEAK = 3,\n /**\n * @generated from protobuf enum value: SYMBOL_COMMON = 4;\n */\n SYMBOL_COMMON = 4,\n /**\n * @generated from protobuf enum value: SYMBOL_HIDDEN = 5;\n */\n SYMBOL_HIDDEN = 5\n}\n/**\n * @generated from protobuf enum objdiff.diff.DiffKind\n */\nexport enum DiffKind {\n /**\n * @generated from protobuf enum value: DIFF_NONE = 0;\n */\n DIFF_NONE = 0,\n /**\n * @generated from protobuf enum value: DIFF_REPLACE = 1;\n */\n DIFF_REPLACE = 1,\n /**\n * @generated from protobuf enum value: DIFF_DELETE = 2;\n */\n DIFF_DELETE = 2,\n /**\n * @generated from protobuf enum value: DIFF_INSERT = 3;\n */\n DIFF_INSERT = 3,\n /**\n * @generated from protobuf enum value: DIFF_OP_MISMATCH = 4;\n */\n DIFF_OP_MISMATCH = 4,\n /**\n * @generated from protobuf enum value: DIFF_ARG_MISMATCH = 5;\n */\n DIFF_ARG_MISMATCH = 5\n}\n/**\n * @generated from protobuf enum objdiff.diff.SectionKind\n */\nexport enum SectionKind {\n /**\n * @generated from protobuf enum value: SECTION_UNKNOWN = 0;\n */\n SECTION_UNKNOWN = 0,\n /**\n * @generated from protobuf enum value: SECTION_TEXT = 1;\n */\n SECTION_TEXT = 1,\n /**\n * @generated from protobuf enum value: SECTION_DATA = 2;\n */\n SECTION_DATA = 2,\n /**\n * @generated from protobuf enum value: SECTION_BSS = 3;\n */\n SECTION_BSS = 3,\n /**\n * @generated from protobuf enum value: SECTION_COMMON = 4;\n */\n SECTION_COMMON = 4\n}\n// @generated message type with reflection information, may provide speed optimized methods\nclass Symbol$Type extends MessageType<Symbol> {\n constructor() {\n super(\"objdiff.diff.Symbol\", [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n { no: 2, name: \"demangled_name\", kind: \"scalar\", localName: \"demangled_name\", opt: true, T: 9 /*ScalarType.STRING*/ },\n { no: 3, name: \"address\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 4, name: \"size\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 5, name: \"flags\", kind: \"scalar\", T: 13 /*ScalarType.UINT32*/ }\n ]);\n }\n create(value?: PartialMessage<Symbol>): Symbol {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.name = \"\";\n message.address = 0n;\n message.size = 0n;\n message.flags = 0;\n if (value !== undefined)\n reflectionMergePartial<Symbol>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Symbol): Symbol {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string name */ 1:\n message.name = reader.string();\n break;\n case /* optional string demangled_name */ 2:\n message.demangled_name = reader.string();\n break;\n case /* uint64 address */ 3:\n message.address = reader.uint64().toBigInt();\n break;\n case /* uint64 size */ 4:\n message.size = reader.uint64().toBigInt();\n break;\n case /* uint32 flags */ 5:\n message.flags = reader.uint32();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: Symbol, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string name = 1; */\n if (message.name !== \"\")\n writer.tag(1, WireType.LengthDelimited).string(message.name);\n /* optional string demangled_name = 2; */\n if (message.demangled_name !== undefined)\n writer.tag(2, WireType.LengthDelimited).string(message.demangled_name);\n /* uint64 address = 3; */\n if (message.address !== 0n)\n writer.tag(3, WireType.Varint).uint64(message.address);\n /* uint64 size = 4; */\n if (message.size !== 0n)\n writer.tag(4, WireType.Varint).uint64(message.size);\n /* uint32 flags = 5; */\n if (message.flags !== 0)\n writer.tag(5, WireType.Varint).uint32(message.flags);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.Symbol\n */\nexport const Symbol = new Symbol$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass Instruction$Type extends MessageType<Instruction> {\n constructor() {\n super(\"objdiff.diff.Instruction\", [\n { no: 1, name: \"address\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 2, name: \"size\", kind: \"scalar\", T: 13 /*ScalarType.UINT32*/ },\n { no: 3, name: \"opcode\", kind: \"scalar\", T: 13 /*ScalarType.UINT32*/ },\n { no: 4, name: \"mnemonic\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n { no: 5, name: \"formatted\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n { no: 6, name: \"original\", kind: \"scalar\", opt: true, T: 9 /*ScalarType.STRING*/ },\n { no: 7, name: \"arguments\", kind: \"message\", repeat: 1 /*RepeatType.PACKED*/, T: () => Argument },\n { no: 8, name: \"relocation\", kind: \"message\", T: () => Relocation },\n { no: 9, name: \"branch_dest\", kind: \"scalar\", localName: \"branch_dest\", opt: true, T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 10, name: \"line_number\", kind: \"scalar\", localName: \"line_number\", opt: true, T: 13 /*ScalarType.UINT32*/ }\n ]);\n }\n create(value?: PartialMessage<Instruction>): Instruction {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.address = 0n;\n message.size = 0;\n message.opcode = 0;\n message.mnemonic = \"\";\n message.formatted = \"\";\n message.arguments = [];\n if (value !== undefined)\n reflectionMergePartial<Instruction>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Instruction): Instruction {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* uint64 address */ 1:\n message.address = reader.uint64().toBigInt();\n break;\n case /* uint32 size */ 2:\n message.size = reader.uint32();\n break;\n case /* uint32 opcode */ 3:\n message.opcode = reader.uint32();\n break;\n case /* string mnemonic */ 4:\n message.mnemonic = reader.string();\n break;\n case /* string formatted */ 5:\n message.formatted = reader.string();\n break;\n case /* optional string original */ 6:\n message.original = reader.string();\n break;\n case /* repeated objdiff.diff.Argument arguments */ 7:\n message.arguments.push(Argument.internalBinaryRead(reader, reader.uint32(), options));\n break;\n case /* optional objdiff.diff.Relocation relocation */ 8:\n message.relocation = Relocation.internalBinaryRead(reader, reader.uint32(), options, message.relocation);\n break;\n case /* optional uint64 branch_dest */ 9:\n message.branch_dest = reader.uint64().toBigInt();\n break;\n case /* optional uint32 line_number */ 10:\n message.line_number = reader.uint32();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: Instruction, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* uint64 address = 1; */\n if (message.address !== 0n)\n writer.tag(1, WireType.Varint).uint64(message.address);\n /* uint32 size = 2; */\n if (message.size !== 0)\n writer.tag(2, WireType.Varint).uint32(message.size);\n /* uint32 opcode = 3; */\n if (message.opcode !== 0)\n writer.tag(3, WireType.Varint).uint32(message.opcode);\n /* string mnemonic = 4; */\n if (message.mnemonic !== \"\")\n writer.tag(4, WireType.LengthDelimited).string(message.mnemonic);\n /* string formatted = 5; */\n if (message.formatted !== \"\")\n writer.tag(5, WireType.LengthDelimited).string(message.formatted);\n /* optional string original = 6; */\n if (message.original !== undefined)\n writer.tag(6, WireType.LengthDelimited).string(message.original);\n /* repeated objdiff.diff.Argument arguments = 7; */\n for (let i = 0; i < message.arguments.length; i++)\n Argument.internalBinaryWrite(message.arguments[i], writer.tag(7, WireType.LengthDelimited).fork(), options).join();\n /* optional objdiff.diff.Relocation relocation = 8; */\n if (message.relocation)\n Relocation.internalBinaryWrite(message.relocation, writer.tag(8, WireType.LengthDelimited).fork(), options).join();\n /* optional uint64 branch_dest = 9; */\n if (message.branch_dest !== undefined)\n writer.tag(9, WireType.Varint).uint64(message.branch_dest);\n /* optional uint32 line_number = 10; */\n if (message.line_number !== undefined)\n writer.tag(10, WireType.Varint).uint32(message.line_number);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.Instruction\n */\nexport const Instruction = new Instruction$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass Argument$Type extends MessageType<Argument> {\n constructor() {\n super(\"objdiff.diff.Argument\", [\n { no: 1, name: \"plain_text\", kind: \"scalar\", localName: \"plain_text\", oneof: \"value\", T: 9 /*ScalarType.STRING*/ },\n { no: 2, name: \"argument\", kind: \"message\", oneof: \"value\", T: () => ArgumentValue },\n { no: 3, name: \"relocation\", kind: \"message\", oneof: \"value\", T: () => ArgumentRelocation },\n { no: 4, name: \"branch_dest\", kind: \"scalar\", localName: \"branch_dest\", oneof: \"value\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ }\n ]);\n }\n create(value?: PartialMessage<Argument>): Argument {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.value = { oneofKind: undefined };\n if (value !== undefined)\n reflectionMergePartial<Argument>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Argument): Argument {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string plain_text */ 1:\n message.value = {\n oneofKind: \"plain_text\",\n plain_text: reader.string()\n };\n break;\n case /* objdiff.diff.ArgumentValue argument */ 2:\n message.value = {\n oneofKind: \"argument\",\n argument: ArgumentValue.internalBinaryRead(reader, reader.uint32(), options, (message.value as any).argument)\n };\n break;\n case /* objdiff.diff.ArgumentRelocation relocation */ 3:\n message.value = {\n oneofKind: \"relocation\",\n relocation: ArgumentRelocation.internalBinaryRead(reader, reader.uint32(), options, (message.value as any).relocation)\n };\n break;\n case /* uint64 branch_dest */ 4:\n message.value = {\n oneofKind: \"branch_dest\",\n branch_dest: reader.uint64().toBigInt()\n };\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: Argument, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string plain_text = 1; */\n if (message.value.oneofKind === \"plain_text\")\n writer.tag(1, WireType.LengthDelimited).string(message.value.plain_text);\n /* objdiff.diff.ArgumentValue argument = 2; */\n if (message.value.oneofKind === \"argument\")\n ArgumentValue.internalBinaryWrite(message.value.argument, writer.tag(2, WireType.LengthDelimited).fork(), options).join();\n /* objdiff.diff.ArgumentRelocation relocation = 3; */\n if (message.value.oneofKind === \"relocation\")\n ArgumentRelocation.internalBinaryWrite(message.value.relocation, writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n /* uint64 branch_dest = 4; */\n if (message.value.oneofKind === \"branch_dest\")\n writer.tag(4, WireType.Varint).uint64(message.value.branch_dest);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.Argument\n */\nexport const Argument = new Argument$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ArgumentValue$Type extends MessageType<ArgumentValue> {\n constructor() {\n super(\"objdiff.diff.ArgumentValue\", [\n { no: 1, name: \"signed\", kind: \"scalar\", oneof: \"value\", T: 3 /*ScalarType.INT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 2, name: \"unsigned\", kind: \"scalar\", oneof: \"value\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 3, name: \"opaque\", kind: \"scalar\", oneof: \"value\", T: 9 /*ScalarType.STRING*/ }\n ]);\n }\n create(value?: PartialMessage<ArgumentValue>): ArgumentValue {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.value = { oneofKind: undefined };\n if (value !== undefined)\n reflectionMergePartial<ArgumentValue>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ArgumentValue): ArgumentValue {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* int64 signed */ 1:\n message.value = {\n oneofKind: \"signed\",\n signed: reader.int64().toBigInt()\n };\n break;\n case /* uint64 unsigned */ 2:\n message.value = {\n oneofKind: \"unsigned\",\n unsigned: reader.uint64().toBigInt()\n };\n break;\n case /* string opaque */ 3:\n message.value = {\n oneofKind: \"opaque\",\n opaque: reader.string()\n };\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: ArgumentValue, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* int64 signed = 1; */\n if (message.value.oneofKind === \"signed\")\n writer.tag(1, WireType.Varint).int64(message.value.signed);\n /* uint64 unsigned = 2; */\n if (message.value.oneofKind === \"unsigned\")\n writer.tag(2, WireType.Varint).uint64(message.value.unsigned);\n /* string opaque = 3; */\n if (message.value.oneofKind === \"opaque\")\n writer.tag(3, WireType.LengthDelimited).string(message.value.opaque);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.ArgumentValue\n */\nexport const ArgumentValue = new ArgumentValue$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ArgumentRelocation$Type extends MessageType<ArgumentRelocation> {\n constructor() {\n super(\"objdiff.diff.ArgumentRelocation\", []);\n }\n create(value?: PartialMessage<ArgumentRelocation>): ArgumentRelocation {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<ArgumentRelocation>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ArgumentRelocation): ArgumentRelocation {\n return target ?? this.create();\n }\n internalBinaryWrite(message: ArgumentRelocation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.ArgumentRelocation\n */\nexport const ArgumentRelocation = new ArgumentRelocation$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass Relocation$Type extends MessageType<Relocation> {\n constructor() {\n super(\"objdiff.diff.Relocation\", [\n { no: 1, name: \"type\", kind: \"scalar\", T: 13 /*ScalarType.UINT32*/ },\n { no: 2, name: \"type_name\", kind: \"scalar\", localName: \"type_name\", T: 9 /*ScalarType.STRING*/ },\n { no: 3, name: \"target\", kind: \"message\", T: () => RelocationTarget }\n ]);\n }\n create(value?: PartialMessage<Relocation>): Relocation {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.type = 0;\n message.type_name = \"\";\n if (value !== undefined)\n reflectionMergePartial<Relocation>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: Relocation): Relocation {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* uint32 type */ 1:\n message.type = reader.uint32();\n break;\n case /* string type_name */ 2:\n message.type_name = reader.string();\n break;\n case /* objdiff.diff.RelocationTarget target */ 3:\n message.target = RelocationTarget.internalBinaryRead(reader, reader.uint32(), options, message.target);\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: Relocation, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* uint32 type = 1; */\n if (message.type !== 0)\n writer.tag(1, WireType.Varint).uint32(message.type);\n /* string type_name = 2; */\n if (message.type_name !== \"\")\n writer.tag(2, WireType.LengthDelimited).string(message.type_name);\n /* objdiff.diff.RelocationTarget target = 3; */\n if (message.target)\n RelocationTarget.internalBinaryWrite(message.target, writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.Relocation\n */\nexport const Relocation = new Relocation$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass RelocationTarget$Type extends MessageType<RelocationTarget> {\n constructor() {\n super(\"objdiff.diff.RelocationTarget\", [\n { no: 1, name: \"symbol\", kind: \"message\", T: () => Symbol },\n { no: 2, name: \"addend\", kind: \"scalar\", T: 3 /*ScalarType.INT64*/, L: 0 /*LongType.BIGINT*/ }\n ]);\n }\n create(value?: PartialMessage<RelocationTarget>): RelocationTarget {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.addend = 0n;\n if (value !== undefined)\n reflectionMergePartial<RelocationTarget>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: RelocationTarget): RelocationTarget {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* objdiff.diff.Symbol symbol */ 1:\n message.symbol = Symbol.internalBinaryRead(reader, reader.uint32(), options, message.symbol);\n break;\n case /* int64 addend */ 2:\n message.addend = reader.int64().toBigInt();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: RelocationTarget, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* objdiff.diff.Symbol symbol = 1; */\n if (message.symbol)\n Symbol.internalBinaryWrite(message.symbol, writer.tag(1, WireType.LengthDelimited).fork(), options).join();\n /* int64 addend = 2; */\n if (message.addend !== 0n)\n writer.tag(2, WireType.Varint).int64(message.addend);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.RelocationTarget\n */\nexport const RelocationTarget = new RelocationTarget$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass InstructionDiff$Type extends MessageType<InstructionDiff> {\n constructor() {\n super(\"objdiff.diff.InstructionDiff\", [\n { no: 1, name: \"diff_kind\", kind: \"enum\", localName: \"diff_kind\", T: () => [\"objdiff.diff.DiffKind\", DiffKind] },\n { no: 2, name: \"instruction\", kind: \"message\", T: () => Instruction },\n { no: 3, name: \"branch_from\", kind: \"message\", localName: \"branch_from\", T: () => InstructionBranchFrom },\n { no: 4, name: \"branch_to\", kind: \"message\", localName: \"branch_to\", T: () => InstructionBranchTo },\n { no: 5, name: \"arg_diff\", kind: \"message\", localName: \"arg_diff\", repeat: 1 /*RepeatType.PACKED*/, T: () => ArgumentDiff }\n ]);\n }\n create(value?: PartialMessage<InstructionDiff>): InstructionDiff {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.diff_kind = 0;\n message.arg_diff = [];\n if (value !== undefined)\n reflectionMergePartial<InstructionDiff>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: InstructionDiff): InstructionDiff {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* objdiff.diff.DiffKind diff_kind */ 1:\n message.diff_kind = reader.int32();\n break;\n case /* optional objdiff.diff.Instruction instruction */ 2:\n message.instruction = Instruction.internalBinaryRead(reader, reader.uint32(), options, message.instruction);\n break;\n case /* optional objdiff.diff.InstructionBranchFrom branch_from */ 3:\n message.branch_from = InstructionBranchFrom.internalBinaryRead(reader, reader.uint32(), options, message.branch_from);\n break;\n case /* optional objdiff.diff.InstructionBranchTo branch_to */ 4:\n message.branch_to = InstructionBranchTo.internalBinaryRead(reader, reader.uint32(), options, message.branch_to);\n break;\n case /* repeated objdiff.diff.ArgumentDiff arg_diff */ 5:\n message.arg_diff.push(ArgumentDiff.internalBinaryRead(reader, reader.uint32(), options));\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: InstructionDiff, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* objdiff.diff.DiffKind diff_kind = 1; */\n if (message.diff_kind !== 0)\n writer.tag(1, WireType.Varint).int32(message.diff_kind);\n /* optional objdiff.diff.Instruction instruction = 2; */\n if (message.instruction)\n Instruction.internalBinaryWrite(message.instruction, writer.tag(2, WireType.LengthDelimited).fork(), options).join();\n /* optional objdiff.diff.InstructionBranchFrom branch_from = 3; */\n if (message.branch_from)\n InstructionBranchFrom.internalBinaryWrite(message.branch_from, writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n /* optional objdiff.diff.InstructionBranchTo branch_to = 4; */\n if (message.branch_to)\n InstructionBranchTo.internalBinaryWrite(message.branch_to, writer.tag(4, WireType.LengthDelimited).fork(), options).join();\n /* repeated objdiff.diff.ArgumentDiff arg_diff = 5; */\n for (let i = 0; i < message.arg_diff.length; i++)\n ArgumentDiff.internalBinaryWrite(message.arg_diff[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.InstructionDiff\n */\nexport const InstructionDiff = new InstructionDiff$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ArgumentDiff$Type extends MessageType<ArgumentDiff> {\n constructor() {\n super(\"objdiff.diff.ArgumentDiff\", [\n { no: 1, name: \"diff_index\", kind: \"scalar\", localName: \"diff_index\", opt: true, T: 13 /*ScalarType.UINT32*/ }\n ]);\n }\n create(value?: PartialMessage<ArgumentDiff>): ArgumentDiff {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<ArgumentDiff>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ArgumentDiff): ArgumentDiff {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* optional uint32 diff_index */ 1:\n message.diff_index = reader.uint32();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: ArgumentDiff, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* optional uint32 diff_index = 1; */\n if (message.diff_index !== undefined)\n writer.tag(1, WireType.Varint).uint32(message.diff_index);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.ArgumentDiff\n */\nexport const ArgumentDiff = new ArgumentDiff$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass InstructionBranchFrom$Type extends MessageType<InstructionBranchFrom> {\n constructor() {\n super(\"objdiff.diff.InstructionBranchFrom\", [\n { no: 1, name: \"instruction_index\", kind: \"scalar\", localName: \"instruction_index\", repeat: 1 /*RepeatType.PACKED*/, T: 13 /*ScalarType.UINT32*/ },\n { no: 2, name: \"branch_index\", kind: \"scalar\", localName: \"branch_index\", T: 13 /*ScalarType.UINT32*/ }\n ]);\n }\n create(value?: PartialMessage<InstructionBranchFrom>): InstructionBranchFrom {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.instruction_index = [];\n message.branch_index = 0;\n if (value !== undefined)\n reflectionMergePartial<InstructionBranchFrom>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: InstructionBranchFrom): InstructionBranchFrom {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* repeated uint32 instruction_index */ 1:\n if (wireType === WireType.LengthDelimited)\n for (let e = reader.int32() + reader.pos; reader.pos < e;)\n message.instruction_index.push(reader.uint32());\n else\n message.instruction_index.push(reader.uint32());\n break;\n case /* uint32 branch_index */ 2:\n message.branch_index = reader.uint32();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: InstructionBranchFrom, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* repeated uint32 instruction_index = 1; */\n if (message.instruction_index.length) {\n writer.tag(1, WireType.LengthDelimited).fork();\n for (let i = 0; i < message.instruction_index.length; i++)\n writer.uint32(message.instruction_index[i]);\n writer.join();\n }\n /* uint32 branch_index = 2; */\n if (message.branch_index !== 0)\n writer.tag(2, WireType.Varint).uint32(message.branch_index);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.InstructionBranchFrom\n */\nexport const InstructionBranchFrom = new InstructionBranchFrom$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass InstructionBranchTo$Type extends MessageType<InstructionBranchTo> {\n constructor() {\n super(\"objdiff.diff.InstructionBranchTo\", [\n { no: 1, name: \"instruction_index\", kind: \"scalar\", localName: \"instruction_index\", T: 13 /*ScalarType.UINT32*/ },\n { no: 2, name: \"branch_index\", kind: \"scalar\", localName: \"branch_index\", T: 13 /*ScalarType.UINT32*/ }\n ]);\n }\n create(value?: PartialMessage<InstructionBranchTo>): InstructionBranchTo {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.instruction_index = 0;\n message.branch_index = 0;\n if (value !== undefined)\n reflectionMergePartial<InstructionBranchTo>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: InstructionBranchTo): InstructionBranchTo {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* uint32 instruction_index */ 1:\n message.instruction_index = reader.uint32();\n break;\n case /* uint32 branch_index */ 2:\n message.branch_index = reader.uint32();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: InstructionBranchTo, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* uint32 instruction_index = 1; */\n if (message.instruction_index !== 0)\n writer.tag(1, WireType.Varint).uint32(message.instruction_index);\n /* uint32 branch_index = 2; */\n if (message.branch_index !== 0)\n writer.tag(2, WireType.Varint).uint32(message.branch_index);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.InstructionBranchTo\n */\nexport const InstructionBranchTo = new InstructionBranchTo$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass FunctionDiff$Type extends MessageType<FunctionDiff> {\n constructor() {\n super(\"objdiff.diff.FunctionDiff\", [\n { no: 1, name: \"symbol\", kind: \"message\", T: () => Symbol },\n { no: 2, name: \"instructions\", kind: \"message\", repeat: 1 /*RepeatType.PACKED*/, T: () => InstructionDiff },\n { no: 3, name: \"match_percent\", kind: \"scalar\", localName: \"match_percent\", opt: true, T: 2 /*ScalarType.FLOAT*/ }\n ]);\n }\n create(value?: PartialMessage<FunctionDiff>): FunctionDiff {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.instructions = [];\n if (value !== undefined)\n reflectionMergePartial<FunctionDiff>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: FunctionDiff): FunctionDiff {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* objdiff.diff.Symbol symbol */ 1:\n message.symbol = Symbol.internalBinaryRead(reader, reader.uint32(), options, message.symbol);\n break;\n case /* repeated objdiff.diff.InstructionDiff instructions */ 2:\n message.instructions.push(InstructionDiff.internalBinaryRead(reader, reader.uint32(), options));\n break;\n case /* optional float match_percent */ 3:\n message.match_percent = reader.float();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: FunctionDiff, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* objdiff.diff.Symbol symbol = 1; */\n if (message.symbol)\n Symbol.internalBinaryWrite(message.symbol, writer.tag(1, WireType.LengthDelimited).fork(), options).join();\n /* repeated objdiff.diff.InstructionDiff instructions = 2; */\n for (let i = 0; i < message.instructions.length; i++)\n InstructionDiff.internalBinaryWrite(message.instructions[i], writer.tag(2, WireType.LengthDelimited).fork(), options).join();\n /* optional float match_percent = 3; */\n if (message.match_percent !== undefined)\n writer.tag(3, WireType.Bit32).float(message.match_percent);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.FunctionDiff\n */\nexport const FunctionDiff = new FunctionDiff$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass DataDiff$Type extends MessageType<DataDiff> {\n constructor() {\n super(\"objdiff.diff.DataDiff\", [\n { no: 1, name: \"kind\", kind: \"enum\", T: () => [\"objdiff.diff.DiffKind\", DiffKind] },\n { no: 2, name: \"data\", kind: \"scalar\", T: 12 /*ScalarType.BYTES*/ },\n { no: 3, name: \"size\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ }\n ]);\n }\n create(value?: PartialMessage<DataDiff>): DataDiff {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.kind = 0;\n message.data = new Uint8Array(0);\n message.size = 0n;\n if (value !== undefined)\n reflectionMergePartial<DataDiff>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DataDiff): DataDiff {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* objdiff.diff.DiffKind kind */ 1:\n message.kind = reader.int32();\n break;\n case /* bytes data */ 2:\n message.data = reader.bytes();\n break;\n case /* uint64 size */ 3:\n message.size = reader.uint64().toBigInt();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: DataDiff, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* objdiff.diff.DiffKind kind = 1; */\n if (message.kind !== 0)\n writer.tag(1, WireType.Varint).int32(message.kind);\n /* bytes data = 2; */\n if (message.data.length)\n writer.tag(2, WireType.LengthDelimited).bytes(message.data);\n /* uint64 size = 3; */\n if (message.size !== 0n)\n writer.tag(3, WireType.Varint).uint64(message.size);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.DataDiff\n */\nexport const DataDiff = new DataDiff$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass SectionDiff$Type extends MessageType<SectionDiff> {\n constructor() {\n super(\"objdiff.diff.SectionDiff\", [\n { no: 1, name: \"name\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n { no: 2, name: \"kind\", kind: \"enum\", T: () => [\"objdiff.diff.SectionKind\", SectionKind] },\n { no: 3, name: \"size\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 4, name: \"address\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 5, name: \"functions\", kind: \"message\", repeat: 1 /*RepeatType.PACKED*/, T: () => FunctionDiff },\n { no: 6, name: \"data\", kind: \"message\", repeat: 1 /*RepeatType.PACKED*/, T: () => DataDiff },\n { no: 7, name: \"match_percent\", kind: \"scalar\", localName: \"match_percent\", opt: true, T: 2 /*ScalarType.FLOAT*/ }\n ]);\n }\n create(value?: PartialMessage<SectionDiff>): SectionDiff {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.name = \"\";\n message.kind = 0;\n message.size = 0n;\n message.address = 0n;\n message.functions = [];\n message.data = [];\n if (value !== undefined)\n reflectionMergePartial<SectionDiff>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: SectionDiff): SectionDiff {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string name */ 1:\n message.name = reader.string();\n break;\n case /* objdiff.diff.SectionKind kind */ 2:\n message.kind = reader.int32();\n break;\n case /* uint64 size */ 3:\n message.size = reader.uint64().toBigInt();\n break;\n case /* uint64 address */ 4:\n message.address = reader.uint64().toBigInt();\n break;\n case /* repeated objdiff.diff.FunctionDiff functions */ 5:\n message.functions.push(FunctionDiff.internalBinaryRead(reader, reader.uint32(), options));\n break;\n case /* repeated objdiff.diff.DataDiff data */ 6:\n message.data.push(DataDiff.internalBinaryRead(reader, reader.uint32(), options));\n break;\n case /* optional float match_percent */ 7:\n message.match_percent = reader.float();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: SectionDiff, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string name = 1; */\n if (message.name !== \"\")\n writer.tag(1, WireType.LengthDelimited).string(message.name);\n /* objdiff.diff.SectionKind kind = 2; */\n if (message.kind !== 0)\n writer.tag(2, WireType.Varint).int32(message.kind);\n /* uint64 size = 3; */\n if (message.size !== 0n)\n writer.tag(3, WireType.Varint).uint64(message.size);\n /* uint64 address = 4; */\n if (message.address !== 0n)\n writer.tag(4, WireType.Varint).uint64(message.address);\n /* repeated objdiff.diff.FunctionDiff functions = 5; */\n for (let i = 0; i < message.functions.length; i++)\n FunctionDiff.internalBinaryWrite(message.functions[i], writer.tag(5, WireType.LengthDelimited).fork(), options).join();\n /* repeated objdiff.diff.DataDiff data = 6; */\n for (let i = 0; i < message.data.length; i++)\n DataDiff.internalBinaryWrite(message.data[i], writer.tag(6, WireType.LengthDelimited).fork(), options).join();\n /* optional float match_percent = 7; */\n if (message.match_percent !== undefined)\n writer.tag(7, WireType.Bit32).float(message.match_percent);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.SectionDiff\n */\nexport const SectionDiff = new SectionDiff$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass ObjectDiff$Type extends MessageType<ObjectDiff> {\n constructor() {\n super(\"objdiff.diff.ObjectDiff\", [\n { no: 1, name: \"sections\", kind: \"message\", repeat: 1 /*RepeatType.PACKED*/, T: () => SectionDiff }\n ]);\n }\n create(value?: PartialMessage<ObjectDiff>): ObjectDiff {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.sections = [];\n if (value !== undefined)\n reflectionMergePartial<ObjectDiff>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ObjectDiff): ObjectDiff {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* repeated objdiff.diff.SectionDiff sections */ 1:\n message.sections.push(SectionDiff.internalBinaryRead(reader, reader.uint32(), options));\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: ObjectDiff, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* repeated objdiff.diff.SectionDiff sections = 1; */\n for (let i = 0; i < message.sections.length; i++)\n SectionDiff.internalBinaryWrite(message.sections[i], writer.tag(1, WireType.LengthDelimited).fork(), options).join();\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.ObjectDiff\n */\nexport const ObjectDiff = new ObjectDiff$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass DiffResult$Type extends MessageType<DiffResult> {\n constructor() {\n super(\"objdiff.diff.DiffResult\", [\n { no: 1, name: \"left\", kind: \"message\", T: () => ObjectDiff },\n { no: 2, name: \"right\", kind: \"message\", T: () => ObjectDiff }\n ]);\n }\n create(value?: PartialMessage<DiffResult>): DiffResult {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<DiffResult>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: DiffResult): DiffResult {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* optional objdiff.diff.ObjectDiff left */ 1:\n message.left = ObjectDiff.internalBinaryRead(reader, reader.uint32(), options, message.left);\n break;\n case /* optional objdiff.diff.ObjectDiff right */ 2:\n message.right = ObjectDiff.internalBinaryRead(reader, reader.uint32(), options, message.right);\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: DiffResult, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* optional objdiff.diff.ObjectDiff left = 1; */\n if (message.left)\n ObjectDiff.internalBinaryWrite(message.left, writer.tag(1, WireType.LengthDelimited).fork(), options).join();\n /* optional objdiff.diff.ObjectDiff right = 2; */\n if (message.right)\n ObjectDiff.internalBinaryWrite(message.right, writer.tag(2, WireType.LengthDelimited).fork(), options).join();\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message objdiff.diff.DiffResult\n */\nexport const DiffResult = new DiffResult$Type();\n","import {ArgumentValue, DiffResult, InstructionDiff, RelocationTarget} from \"../gen/diff_pb\";\nimport type {\n ArmArchVersion,\n ArmR9Usage,\n DiffObjConfig as WasmDiffObjConfig,\n MipsAbi,\n MipsInstrCategory,\n X86Formatter\n} from '../pkg';\nimport {HandlerData, InMessage, OutMessage} from './worker';\n\n// Export wasm types\nexport type DiffObjConfig = Omit<Partial<WasmDiffObjConfig>, 'free'>;\nexport {ArmArchVersion, ArmR9Usage, MipsAbi, MipsInstrCategory, X86Formatter};\n\n// Export protobuf types\nexport * from '../gen/diff_pb';\n\ninterface PromiseCallbacks<T> {\n start: number;\n resolve: (value: T) => void;\n reject: (reason?: unknown) => void;\n}\n\nlet workerInit = false;\nlet workerCallbacks: PromiseCallbacks<Worker> | null = null;\nconst workerReady = new Promise<Worker>((resolve, reject) => {\n workerCallbacks = {start: performance.now(), resolve, reject};\n});\n\nexport async function initialize(data?: {\n workerUrl?: string | URL,\n wasmUrl?: string | URL, // Relative to worker URL\n}) {\n if (workerInit) {\n return;\n }\n workerInit = true;\n let {workerUrl, wasmUrl} = data || {};\n if (!workerUrl) {\n // Bundlers will convert this into an asset URL\n workerUrl = new URL('./worker.js', import.meta.url);\n }\n if (!wasmUrl) {\n // Bundlers will convert this into an asset URL\n wasmUrl = new URL('./objdiff_core_bg.wasm', import.meta.url);\n }\n const worker = new Worker(workerUrl, {type: 'module'});\n worker.onmessage = onMessage;\n worker.onerror = (event) => {\n console.error(\"Worker error\", event);\n workerCallbacks.reject(event);\n };\n await defer<boolean>({\n type: 'init',\n wasmUrl,\n }, worker).then(() => {\n workerCallbacks.resolve(worker);\n }, (e) => {\n workerCallbacks.reject(e);\n throw e;\n });\n}\n\nlet globalMessageId = 0;\nconst messageCallbacks = new Map<number, PromiseCallbacks<unknown>>();\n\nfunction onMessage(event: MessageEvent<OutMessage>) {\n switch (event.data.type) {\n case 'result': {\n const {result, error, messageId} = event.data;\n const callbacks = messageCallbacks.get(messageId);\n if (callbacks) {\n const end = performance.now();\n console.debug(`Message ${messageId} took ${end - callbacks.start}ms`);\n messageCallbacks.delete(messageId);\n if (error != null) {\n callbacks.reject(error);\n } else {\n callbacks.resolve(result);\n }\n } else {\n console.warn(`Unknown message ID ${messageId}`);\n }\n break;\n }\n }\n}\n\nasync function defer<T>(message: HandlerData, worker?: Worker): Promise<T> {\n if (worker == null) {\n if (!workerInit) {\n throw new Error('Worker not initialized');\n }\n worker = await workerReady;\n }\n const messageId = globalMessageId++;\n const promise = new Promise<T>((resolve, reject) => {\n messageCallbacks.set(messageId, {start: performance.now(), resolve, reject});\n });\n worker.postMessage({\n ...message,\n messageId\n });\n return promise;\n}\n\nexport async function runDiff(left: Uint8Array | undefined, right: Uint8Array | undefined, config?: DiffObjConfig): Promise<DiffResult> {\n const data = await defer<Uint8Array>({\n type: 'run_diff_proto',\n left,\n right,\n config\n } as InMessage);\n const parseStart = performance.now();\n const result = DiffResult.fromBinary(data, {readUnknownField: false});\n const end = performance.now();\n console.debug(`Parsing message took ${end - parseStart}ms`);\n return result;\n}\n\nexport type DiffText =\n DiffTextBasic\n | DiffTextBasicColor\n | DiffTextAddress\n | DiffTextLine\n | DiffTextOpcode\n | DiffTextArgument\n | DiffTextSymbol\n | DiffTextBranchDest\n | DiffTextSpacing;\n\ntype DiffTextBase = {\n diff_index?: number,\n};\nexport type DiffTextBasic = DiffTextBase & {\n type: 'basic',\n text: string,\n};\nexport type DiffTextBasicColor = DiffTextBase & {\n type: 'basic_color',\n text: string,\n index: number,\n};\nexport type DiffTextAddress = DiffTextBase & {\n type: 'address',\n address: bigint,\n};\nexport type DiffTextLine = DiffTextBase & {\n type: 'line',\n line_number: number,\n};\nexport type DiffTextOpcode = DiffTextBase & {\n type: 'opcode',\n mnemonic: string,\n opcode: number,\n};\nexport type DiffTextArgument = DiffTextBase & {\n type: 'argument',\n value: ArgumentValue,\n};\nexport type DiffTextSymbol = DiffTextBase & {\n type: 'symbol',\n target: RelocationTarget,\n};\nexport type DiffTextBranchDest = DiffTextBase & {\n type: 'branch_dest',\n address: bigint,\n};\nexport type DiffTextSpacing = DiffTextBase & {\n type: 'spacing',\n count: number,\n};\n\n// TypeScript workaround for oneof types\nexport function oneof<T extends { oneofKind: string }>(type: T): T & { oneofKind: string } {\n return type as T & { oneofKind: string };\n}\n\n// Native JavaScript implementation of objdiff_core::diff::display::display_diff\nexport function displayDiff(diff: InstructionDiff, baseAddr: bigint, cb: (text: DiffText) => void) {\n const ins = diff.instruction;\n if (!ins) {\n return;\n }\n if (ins.line_number != null) {\n cb({type: 'line', line_number: ins.line_number});\n }\n cb({type: 'address', address: ins.address - baseAddr});\n if (diff.branch_from) {\n cb({type: 'basic_color', text: ' ~> ', index: diff.branch_from.branch_index});\n } else {\n cb({type: 'spacing', count: 4});\n }\n cb({type: 'opcode', mnemonic: ins.mnemonic, opcode: ins.opcode});\n for (let i = 0; i < ins.arguments.length; i++) {\n if (i === 0) {\n cb({type: 'spacing', count: 1});\n }\n const arg = oneof(ins.arguments[i].value);\n const diff_index = diff.arg_diff[i]?.diff_index;\n switch (arg.oneofKind) {\n case \"plain_text\":\n cb({type: 'basic', text: arg.plain_text, diff_index});\n break;\n case \"argument\":\n cb({type: 'argument', value: arg.argument, diff_index});\n break;\n case \"relocation\": {\n const reloc = ins.relocation!;\n cb({type: 'symbol', target: reloc.target, diff_index});\n break;\n }\n case \"branch_dest\":\n if (arg.branch_dest < baseAddr) {\n cb({type: 'basic', text: '<unknown>', diff_index});\n } else {\n cb({type: 'branch_dest', address: arg.branch_dest - baseAddr, diff_index});\n }\n break;\n }\n }\n if (diff.branch_to) {\n cb({type: 'basic_color', text: ' ~> ', index: diff.branch_to.branch_index});\n }\n}\n"],"mappings":"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","names":["SymbolFlag","DiffKind","SectionKind"]}
Binary file
package/dist/worker.js CHANGED
@@ -95,10 +95,10 @@ function default_diff_obj_config() {
95
95
  const ret = wasm.default_diff_obj_config();
96
96
  return DiffObjConfig.__wrap(ret);
97
97
  }
98
- var MipsAbi = Object.freeze({ Auto: 0, "0": "Auto", O32: 1, "1": "O32", N32: 2, "2": "N32", N64: 3, "3": "N64" });
98
+ var ArmR9Usage = Object.freeze({ GeneralPurpose: 0, "0": "GeneralPurpose", Sb: 1, "1": "Sb", Tr: 2, "2": "Tr" });
99
99
  var ArmArchVersion = Object.freeze({ Auto: 0, "0": "Auto", V4T: 1, "1": "V4T", V5TE: 2, "2": "V5TE", V6K: 3, "3": "V6K" });
100
100
  var X86Formatter = Object.freeze({ Intel: 0, "0": "Intel", Gas: 1, "1": "Gas", Nasm: 2, "2": "Nasm", Masm: 3, "3": "Masm" });
101
- var ArmR9Usage = Object.freeze({ GeneralPurpose: 0, "0": "GeneralPurpose", Sb: 1, "1": "Sb", Tr: 2, "2": "Tr" });
101
+ var MipsAbi = Object.freeze({ Auto: 0, "0": "Auto", O32: 1, "1": "O32", N32: 2, "2": "N32", N64: 3, "3": "N64" });
102
102
  var MipsInstrCategory = Object.freeze({ Auto: 0, "0": "Auto", Cpu: 1, "1": "Cpu", Rsp: 2, "2": "Rsp", R3000Gte: 3, "3": "R3000Gte", R4000Allegrex: 4, "4": "R4000Allegrex", R5900: 5, "5": "R5900" });
103
103
  var DiffObjConfigFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
104
104
  }, unregister: () => {
@@ -356,13 +356,27 @@ async function __wbg_init(module_or_path) {
356
356
  var objdiff_core_default = __wbg_init;
357
357
 
358
358
  // src/worker.ts
359
- self.postMessage({ type: "init" });
360
- await objdiff_core_default({});
361
- self.postMessage({ type: "ready" });
362
359
  var handlers = {
363
- "run_diff": run_diff
360
+ init,
361
+ // run_diff_json: run_diff_json,
362
+ run_diff_proto: run_diff_proto2
364
363
  };
365
- function run_diff({ left, right, config }) {
364
+ var wasmReady = null;
365
+ async function init({ wasmUrl }) {
366
+ if (wasmReady != null) {
367
+ throw new Error("Already initialized");
368
+ }
369
+ wasmReady = objdiff_core_default({ module_or_path: wasmUrl }).then(() => {
370
+ });
371
+ return wasmReady;
372
+ }
373
+ async function initIfNeeded() {
374
+ if (wasmReady == null) {
375
+ await init({});
376
+ }
377
+ return wasmReady;
378
+ }
379
+ function createConfig(config) {
366
380
  const cfg = default_diff_obj_config();
367
381
  if (config) {
368
382
  for (const key in config) {
@@ -371,38 +385,44 @@ function run_diff({ left, right, config }) {
371
385
  }
372
386
  }
373
387
  }
388
+ return cfg;
389
+ }
390
+ async function run_diff_proto2({ left, right, config }) {
391
+ const cfg = createConfig(config);
374
392
  return run_diff_proto(left, right, cfg);
375
393
  }
376
- self.onmessage = async (event) => {
394
+ self.onmessage = (event) => {
377
395
  const data = event.data;
378
- const handler = handlers[data.type];
379
- if (handler) {
380
- try {
396
+ const messageId = data?.messageId;
397
+ (async () => {
398
+ if (!data) {
399
+ throw new Error("No data");
400
+ }
401
+ const handler = handlers[data.type];
402
+ if (handler) {
403
+ if (data.type !== "init") {
404
+ await initIfNeeded();
405
+ }
381
406
  const start = performance.now();
382
- const result = handler(data);
407
+ const result = await handler(data);
383
408
  const end = performance.now();
384
409
  console.debug(`Worker message ${data.messageId} took ${end - start}ms`);
385
410
  self.postMessage({
386
411
  type: "result",
387
412
  result,
388
413
  error: null,
389
- messageId: data.messageId
390
- });
391
- } catch (error) {
392
- self.postMessage({
393
- type: "result",
394
- result: null,
395
- error,
396
- messageId: data.messageId
414
+ messageId
397
415
  });
416
+ } else {
417
+ throw new Error(`No handler for ${data.type}`);
398
418
  }
399
- } else {
419
+ })().catch((error) => {
400
420
  self.postMessage({
401
421
  type: "result",
402
422
  result: null,
403
- error: `No handler for ${data.type}`,
404
- messageId: data.messageId
423
+ error,
424
+ messageId
405
425
  });
406
- }
426
+ });
407
427
  };
408
428
  //# sourceMappingURL=worker.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../pkg/objdiff_core.js","../src/worker.ts"],"sourcesContent":["let wasm;\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nlet heap_next = heap.length;\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction getObject(idx) { return heap[idx]; }\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n/**\n* @param {Uint8Array | undefined} left\n* @param {Uint8Array | undefined} right\n* @param {DiffObjConfig} config\n* @returns {string}\n*/\nexport function run_diff(left, right, config) {\n let deferred5_0;\n let deferred5_1;\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n var ptr0 = isLikeNone(left) ? 0 : passArray8ToWasm0(left, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(right) ? 0 : passArray8ToWasm0(right, wasm.__wbindgen_malloc);\n var len1 = WASM_VECTOR_LEN;\n _assertClass(config, DiffObjConfig);\n var ptr2 = config.__destroy_into_raw();\n wasm.run_diff(retptr, ptr0, len0, ptr1, len1, ptr2);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n var ptr4 = r0;\n var len4 = r1;\n if (r3) {\n ptr4 = 0; len4 = 0;\n throw takeObject(r2);\n }\n deferred5_0 = ptr4;\n deferred5_1 = len4;\n return getStringFromWasm0(ptr4, len4);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(deferred5_0, deferred5_1, 1);\n }\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n* @param {Uint8Array | undefined} left\n* @param {Uint8Array | undefined} right\n* @param {DiffObjConfig} config\n* @returns {Uint8Array}\n*/\nexport function run_diff_proto(left, right, config) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n var ptr0 = isLikeNone(left) ? 0 : passArray8ToWasm0(left, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(right) ? 0 : passArray8ToWasm0(right, wasm.__wbindgen_malloc);\n var len1 = WASM_VECTOR_LEN;\n _assertClass(config, DiffObjConfig);\n var ptr2 = config.__destroy_into_raw();\n wasm.run_diff_proto(retptr, ptr0, len0, ptr1, len1, ptr2);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v4 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1, 1);\n return v4;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @returns {DiffObjConfig}\n*/\nexport function default_diff_obj_config() {\n const ret = wasm.default_diff_obj_config();\n return DiffObjConfig.__wrap(ret);\n}\n\n/**\n*/\nexport const MipsAbi = Object.freeze({ Auto:0,\"0\":\"Auto\",O32:1,\"1\":\"O32\",N32:2,\"2\":\"N32\",N64:3,\"3\":\"N64\", });\n/**\n*/\nexport const ArmArchVersion = Object.freeze({ Auto:0,\"0\":\"Auto\",V4T:1,\"1\":\"V4T\",V5TE:2,\"2\":\"V5TE\",V6K:3,\"3\":\"V6K\", });\n/**\n*/\nexport const X86Formatter = Object.freeze({ Intel:0,\"0\":\"Intel\",Gas:1,\"1\":\"Gas\",Nasm:2,\"2\":\"Nasm\",Masm:3,\"3\":\"Masm\", });\n/**\n*/\nexport const ArmR9Usage = Object.freeze({ GeneralPurpose:0,\"0\":\"GeneralPurpose\",Sb:1,\"1\":\"Sb\",Tr:2,\"2\":\"Tr\", });\n/**\n*/\nexport const MipsInstrCategory = Object.freeze({ Auto:0,\"0\":\"Auto\",Cpu:1,\"1\":\"Cpu\",Rsp:2,\"2\":\"Rsp\",R3000Gte:3,\"3\":\"R3000Gte\",R4000Allegrex:4,\"4\":\"R4000Allegrex\",R5900:5,\"5\":\"R5900\", });\n\nconst DiffObjConfigFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_diffobjconfig_free(ptr >>> 0, 1));\n/**\n*/\nexport class DiffObjConfig {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(DiffObjConfig.prototype);\n obj.__wbg_ptr = ptr;\n DiffObjConfigFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n DiffObjConfigFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_diffobjconfig_free(ptr, 0);\n }\n /**\n * @returns {boolean}\n */\n get relax_reloc_diffs() {\n const ret = wasm.__wbg_get_diffobjconfig_relax_reloc_diffs(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set relax_reloc_diffs(arg0) {\n wasm.__wbg_set_diffobjconfig_relax_reloc_diffs(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {boolean}\n */\n get space_between_args() {\n const ret = wasm.__wbg_get_diffobjconfig_space_between_args(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set space_between_args(arg0) {\n wasm.__wbg_set_diffobjconfig_space_between_args(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {boolean}\n */\n get combine_data_sections() {\n const ret = wasm.__wbg_get_diffobjconfig_combine_data_sections(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set combine_data_sections(arg0) {\n wasm.__wbg_set_diffobjconfig_combine_data_sections(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {X86Formatter}\n */\n get x86_formatter() {\n const ret = wasm.__wbg_get_diffobjconfig_x86_formatter(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {X86Formatter} arg0\n */\n set x86_formatter(arg0) {\n wasm.__wbg_set_diffobjconfig_x86_formatter(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {MipsAbi}\n */\n get mips_abi() {\n const ret = wasm.__wbg_get_diffobjconfig_mips_abi(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {MipsAbi} arg0\n */\n set mips_abi(arg0) {\n wasm.__wbg_set_diffobjconfig_mips_abi(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {MipsInstrCategory}\n */\n get mips_instr_category() {\n const ret = wasm.__wbg_get_diffobjconfig_mips_instr_category(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {MipsInstrCategory} arg0\n */\n set mips_instr_category(arg0) {\n wasm.__wbg_set_diffobjconfig_mips_instr_category(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {ArmArchVersion}\n */\n get arm_arch_version() {\n const ret = wasm.__wbg_get_diffobjconfig_arm_arch_version(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {ArmArchVersion} arg0\n */\n set arm_arch_version(arg0) {\n wasm.__wbg_set_diffobjconfig_arm_arch_version(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {boolean}\n */\n get arm_unified_syntax() {\n const ret = wasm.__wbg_get_diffobjconfig_arm_unified_syntax(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set arm_unified_syntax(arg0) {\n wasm.__wbg_set_diffobjconfig_arm_unified_syntax(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {boolean}\n */\n get arm_av_registers() {\n const ret = wasm.__wbg_get_diffobjconfig_arm_av_registers(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set arm_av_registers(arg0) {\n wasm.__wbg_set_diffobjconfig_arm_av_registers(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {ArmR9Usage}\n */\n get arm_r9_usage() {\n const ret = wasm.__wbg_get_diffobjconfig_arm_r9_usage(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {ArmR9Usage} arg0\n */\n set arm_r9_usage(arg0) {\n wasm.__wbg_set_diffobjconfig_arm_r9_usage(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {boolean}\n */\n get arm_sl_usage() {\n const ret = wasm.__wbg_get_diffobjconfig_arm_sl_usage(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set arm_sl_usage(arg0) {\n wasm.__wbg_set_diffobjconfig_arm_sl_usage(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {boolean}\n */\n get arm_fp_usage() {\n const ret = wasm.__wbg_get_diffobjconfig_arm_fp_usage(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set arm_fp_usage(arg0) {\n wasm.__wbg_set_diffobjconfig_arm_fp_usage(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {boolean}\n */\n get arm_ip_usage() {\n const ret = wasm.__wbg_get_diffobjconfig_arm_ip_usage(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set arm_ip_usage(arg0) {\n wasm.__wbg_set_diffobjconfig_arm_ip_usage(this.__wbg_ptr, arg0);\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_error_new = function(arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined' && Object.getPrototypeOf(module) === Object.prototype)\n ({module} = module)\n else\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined' && Object.getPrototypeOf(module_or_path) === Object.prototype)\n ({module_or_path} = module_or_path)\n else\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('objdiff_core_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","import wasmInit, {default_diff_obj_config, run_diff_proto} from '../pkg';\nimport {DiffObjConfig} from \"./main\";\n\nself.postMessage({type: 'init'} as OutMessage);\nawait wasmInit({});\nself.postMessage({type: 'ready'} as OutMessage);\n\ntype ExtractParam<T> = {\n [K in keyof T]: T[K] extends (arg1: infer U, ...args: any[]) => any ? U & { type: K } : never;\n}[keyof T];\ntype HandlerData = ExtractParam<{\n run_diff: typeof run_diff,\n}>;\nconst handlers: {\n [K in HandlerData['type']]: (data: Omit<HandlerData, 'type'>) => unknown\n} = {\n 'run_diff': run_diff,\n};\n\nfunction run_diff({left, right, config}: {\n left: Uint8Array | undefined,\n right: Uint8Array | undefined,\n config?: DiffObjConfig\n}): Uint8Array {\n const cfg = default_diff_obj_config();\n if (config) {\n for (const key in config) {\n if (key in config) {\n cfg[key] = config[key];\n }\n }\n }\n return run_diff_proto(left, right, cfg);\n}\n\nexport type InMessage = HandlerData & { messageId: number };\n\nexport type OutMessage = ({\n type: 'result',\n result: unknown | null,\n error: unknown | null,\n} | {\n type: 'init',\n msg: string\n} | {\n type: 'ready',\n msg: string\n}) & { messageId: number };\n\nself.onmessage = async (event: MessageEvent<InMessage>) => {\n const data = event.data;\n const handler = handlers[data.type];\n if (handler) {\n try {\n const start = performance.now();\n const result = handler(data);\n const end = performance.now();\n console.debug(`Worker message ${data.messageId} took ${end - start}ms`);\n self.postMessage({\n type: 'result',\n result: result,\n error: null,\n messageId: data.messageId\n });\n } catch (error) {\n self.postMessage({\n type: 'result',\n result: null,\n error: error,\n messageId: data.messageId\n });\n }\n } else {\n self.postMessage({\n type: 'result',\n result: null,\n error: `No handler for ${data.type}`,\n messageId: data.messageId\n });\n }\n};\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../pkg/objdiff_core.js","../src/worker.ts"],"sourcesContent":["let wasm;\n\nconst cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } );\n\nif (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); };\n\nlet cachedUint8ArrayMemory0 = null;\n\nfunction getUint8ArrayMemory0() {\n if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {\n cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8ArrayMemory0;\n}\n\nfunction getStringFromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));\n}\n\nconst heap = new Array(128).fill(undefined);\n\nheap.push(undefined, null, true, false);\n\nlet heap_next = heap.length;\n\nfunction addHeapObject(obj) {\n if (heap_next === heap.length) heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n\n heap[idx] = obj;\n return idx;\n}\n\nlet WASM_VECTOR_LEN = 0;\n\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1, 1) >>> 0;\n getUint8ArrayMemory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\n\nfunction isLikeNone(x) {\n return x === undefined || x === null;\n}\n\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\n\nlet cachedDataViewMemory0 = null;\n\nfunction getDataViewMemory0() {\n if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {\n cachedDataViewMemory0 = new DataView(wasm.memory.buffer);\n }\n return cachedDataViewMemory0;\n}\n\nfunction getObject(idx) { return heap[idx]; }\n\nfunction dropObject(idx) {\n if (idx < 132) return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\n\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\n\nfunction getArrayU8FromWasm0(ptr, len) {\n ptr = ptr >>> 0;\n return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);\n}\n/**\n* @param {Uint8Array | undefined} left\n* @param {Uint8Array | undefined} right\n* @param {DiffObjConfig} config\n* @returns {Uint8Array}\n*/\nexport function run_diff_proto(left, right, config) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n var ptr0 = isLikeNone(left) ? 0 : passArray8ToWasm0(left, wasm.__wbindgen_malloc);\n var len0 = WASM_VECTOR_LEN;\n var ptr1 = isLikeNone(right) ? 0 : passArray8ToWasm0(right, wasm.__wbindgen_malloc);\n var len1 = WASM_VECTOR_LEN;\n _assertClass(config, DiffObjConfig);\n var ptr2 = config.__destroy_into_raw();\n wasm.run_diff_proto(retptr, ptr0, len0, ptr1, len1, ptr2);\n var r0 = getDataViewMemory0().getInt32(retptr + 4 * 0, true);\n var r1 = getDataViewMemory0().getInt32(retptr + 4 * 1, true);\n var r2 = getDataViewMemory0().getInt32(retptr + 4 * 2, true);\n var r3 = getDataViewMemory0().getInt32(retptr + 4 * 3, true);\n if (r3) {\n throw takeObject(r2);\n }\n var v4 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1, 1);\n return v4;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\n\n/**\n* @returns {DiffObjConfig}\n*/\nexport function default_diff_obj_config() {\n const ret = wasm.default_diff_obj_config();\n return DiffObjConfig.__wrap(ret);\n}\n\n/**\n*/\nexport const ArmR9Usage = Object.freeze({ GeneralPurpose:0,\"0\":\"GeneralPurpose\",Sb:1,\"1\":\"Sb\",Tr:2,\"2\":\"Tr\", });\n/**\n*/\nexport const ArmArchVersion = Object.freeze({ Auto:0,\"0\":\"Auto\",V4T:1,\"1\":\"V4T\",V5TE:2,\"2\":\"V5TE\",V6K:3,\"3\":\"V6K\", });\n/**\n*/\nexport const X86Formatter = Object.freeze({ Intel:0,\"0\":\"Intel\",Gas:1,\"1\":\"Gas\",Nasm:2,\"2\":\"Nasm\",Masm:3,\"3\":\"Masm\", });\n/**\n*/\nexport const MipsAbi = Object.freeze({ Auto:0,\"0\":\"Auto\",O32:1,\"1\":\"O32\",N32:2,\"2\":\"N32\",N64:3,\"3\":\"N64\", });\n/**\n*/\nexport const MipsInstrCategory = Object.freeze({ Auto:0,\"0\":\"Auto\",Cpu:1,\"1\":\"Cpu\",Rsp:2,\"2\":\"Rsp\",R3000Gte:3,\"3\":\"R3000Gte\",R4000Allegrex:4,\"4\":\"R4000Allegrex\",R5900:5,\"5\":\"R5900\", });\n\nconst DiffObjConfigFinalization = (typeof FinalizationRegistry === 'undefined')\n ? { register: () => {}, unregister: () => {} }\n : new FinalizationRegistry(ptr => wasm.__wbg_diffobjconfig_free(ptr >>> 0, 1));\n/**\n*/\nexport class DiffObjConfig {\n\n static __wrap(ptr) {\n ptr = ptr >>> 0;\n const obj = Object.create(DiffObjConfig.prototype);\n obj.__wbg_ptr = ptr;\n DiffObjConfigFinalization.register(obj, obj.__wbg_ptr, obj);\n return obj;\n }\n\n __destroy_into_raw() {\n const ptr = this.__wbg_ptr;\n this.__wbg_ptr = 0;\n DiffObjConfigFinalization.unregister(this);\n return ptr;\n }\n\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_diffobjconfig_free(ptr, 0);\n }\n /**\n * @returns {boolean}\n */\n get relax_reloc_diffs() {\n const ret = wasm.__wbg_get_diffobjconfig_relax_reloc_diffs(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set relax_reloc_diffs(arg0) {\n wasm.__wbg_set_diffobjconfig_relax_reloc_diffs(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {boolean}\n */\n get space_between_args() {\n const ret = wasm.__wbg_get_diffobjconfig_space_between_args(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set space_between_args(arg0) {\n wasm.__wbg_set_diffobjconfig_space_between_args(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {boolean}\n */\n get combine_data_sections() {\n const ret = wasm.__wbg_get_diffobjconfig_combine_data_sections(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set combine_data_sections(arg0) {\n wasm.__wbg_set_diffobjconfig_combine_data_sections(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {X86Formatter}\n */\n get x86_formatter() {\n const ret = wasm.__wbg_get_diffobjconfig_x86_formatter(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {X86Formatter} arg0\n */\n set x86_formatter(arg0) {\n wasm.__wbg_set_diffobjconfig_x86_formatter(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {MipsAbi}\n */\n get mips_abi() {\n const ret = wasm.__wbg_get_diffobjconfig_mips_abi(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {MipsAbi} arg0\n */\n set mips_abi(arg0) {\n wasm.__wbg_set_diffobjconfig_mips_abi(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {MipsInstrCategory}\n */\n get mips_instr_category() {\n const ret = wasm.__wbg_get_diffobjconfig_mips_instr_category(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {MipsInstrCategory} arg0\n */\n set mips_instr_category(arg0) {\n wasm.__wbg_set_diffobjconfig_mips_instr_category(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {ArmArchVersion}\n */\n get arm_arch_version() {\n const ret = wasm.__wbg_get_diffobjconfig_arm_arch_version(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {ArmArchVersion} arg0\n */\n set arm_arch_version(arg0) {\n wasm.__wbg_set_diffobjconfig_arm_arch_version(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {boolean}\n */\n get arm_unified_syntax() {\n const ret = wasm.__wbg_get_diffobjconfig_arm_unified_syntax(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set arm_unified_syntax(arg0) {\n wasm.__wbg_set_diffobjconfig_arm_unified_syntax(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {boolean}\n */\n get arm_av_registers() {\n const ret = wasm.__wbg_get_diffobjconfig_arm_av_registers(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set arm_av_registers(arg0) {\n wasm.__wbg_set_diffobjconfig_arm_av_registers(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {ArmR9Usage}\n */\n get arm_r9_usage() {\n const ret = wasm.__wbg_get_diffobjconfig_arm_r9_usage(this.__wbg_ptr);\n return ret;\n }\n /**\n * @param {ArmR9Usage} arg0\n */\n set arm_r9_usage(arg0) {\n wasm.__wbg_set_diffobjconfig_arm_r9_usage(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {boolean}\n */\n get arm_sl_usage() {\n const ret = wasm.__wbg_get_diffobjconfig_arm_sl_usage(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set arm_sl_usage(arg0) {\n wasm.__wbg_set_diffobjconfig_arm_sl_usage(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {boolean}\n */\n get arm_fp_usage() {\n const ret = wasm.__wbg_get_diffobjconfig_arm_fp_usage(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set arm_fp_usage(arg0) {\n wasm.__wbg_set_diffobjconfig_arm_fp_usage(this.__wbg_ptr, arg0);\n }\n /**\n * @returns {boolean}\n */\n get arm_ip_usage() {\n const ret = wasm.__wbg_get_diffobjconfig_arm_ip_usage(this.__wbg_ptr);\n return ret !== 0;\n }\n /**\n * @param {boolean} arg0\n */\n set arm_ip_usage(arg0) {\n wasm.__wbg_set_diffobjconfig_arm_ip_usage(this.__wbg_ptr, arg0);\n }\n}\n\nasync function __wbg_load(module, imports) {\n if (typeof Response === 'function' && module instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === 'function') {\n try {\n return await WebAssembly.instantiateStreaming(module, imports);\n\n } catch (e) {\n if (module.headers.get('Content-Type') != 'application/wasm') {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n\n } else {\n throw e;\n }\n }\n }\n\n const bytes = await module.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n\n } else {\n const instance = await WebAssembly.instantiate(module, imports);\n\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module };\n\n } else {\n return instance;\n }\n }\n}\n\nfunction __wbg_get_imports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_error_new = function(arg0, arg1) {\n const ret = new Error(getStringFromWasm0(arg0, arg1));\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n\n return imports;\n}\n\nfunction __wbg_init_memory(imports, memory) {\n\n}\n\nfunction __wbg_finalize_init(instance, module) {\n wasm = instance.exports;\n __wbg_init.__wbindgen_wasm_module = module;\n cachedDataViewMemory0 = null;\n cachedUint8ArrayMemory0 = null;\n\n\n\n return wasm;\n}\n\nfunction initSync(module) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module !== 'undefined' && Object.getPrototypeOf(module) === Object.prototype)\n ({module} = module)\n else\n console.warn('using deprecated parameters for `initSync()`; pass a single object instead')\n\n const imports = __wbg_get_imports();\n\n __wbg_init_memory(imports);\n\n if (!(module instanceof WebAssembly.Module)) {\n module = new WebAssembly.Module(module);\n }\n\n const instance = new WebAssembly.Instance(module, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nasync function __wbg_init(module_or_path) {\n if (wasm !== undefined) return wasm;\n\n\n if (typeof module_or_path !== 'undefined' && Object.getPrototypeOf(module_or_path) === Object.prototype)\n ({module_or_path} = module_or_path)\n else\n console.warn('using deprecated parameters for the initialization function; pass a single object instead')\n\n if (typeof module_or_path === 'undefined') {\n module_or_path = new URL('objdiff_core_bg.wasm', import.meta.url);\n }\n const imports = __wbg_get_imports();\n\n if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) {\n module_or_path = fetch(module_or_path);\n }\n\n __wbg_init_memory(imports);\n\n const { instance, module } = await __wbg_load(await module_or_path, imports);\n\n return __wbg_finalize_init(instance, module);\n}\n\nexport { initSync };\nexport default __wbg_init;\n","import wasmInit, * as exports from '../pkg';\nimport {DiffObjConfig} from \"./main\";\n\ntype ExtractParam<T> = {\n [K in keyof T]: T[K] extends (arg1: infer U, ...args: unknown[]) => Promise<unknown> ? U & { type: K } : never;\n}[keyof T];\nexport type HandlerData = ExtractParam<{\n init: typeof init,\n // run_diff_json: typeof run_diff_json,\n run_diff_proto: typeof run_diff_proto,\n}>;\nconst handlers: {\n [K in HandlerData['type']]: (data: Omit<HandlerData, 'type'>) => Promise<unknown>\n} = {\n init: init,\n // run_diff_json: run_diff_json,\n run_diff_proto: run_diff_proto,\n};\n\nlet wasmReady: Promise<void> | null = null;\n\nasync function init({wasmUrl}: { wasmUrl?: string | URL }): Promise<void> {\n if (wasmReady != null) {\n throw new Error('Already initialized');\n }\n wasmReady = wasmInit({module_or_path: wasmUrl})\n .then(() => {});\n return wasmReady;\n}\n\nasync function initIfNeeded() {\n if (wasmReady == null) {\n await init({});\n }\n return wasmReady;\n}\n\nfunction createConfig(config: DiffObjConfig): exports.DiffObjConfig {\n const cfg = exports.default_diff_obj_config();\n if (config) {\n for (const key in config) {\n if (key in config) {\n cfg[key] = config[key];\n }\n }\n }\n return cfg;\n}\n\n// async function run_diff_json({left, right, config}: {\n// left: Uint8Array | undefined,\n// right: Uint8Array | undefined,\n// config?: DiffObjConfig\n// }): Promise<string> {\n// const cfg = createConfig(config);\n// return exports.run_diff_json(left, right, cfg);\n// }\n\nasync function run_diff_proto({left, right, config}: {\n left: Uint8Array | undefined,\n right: Uint8Array | undefined,\n config?: DiffObjConfig\n}): Promise<Uint8Array> {\n const cfg = createConfig(config);\n return exports.run_diff_proto(left, right, cfg);\n}\n\nexport type InMessage = HandlerData & { messageId: number };\n\nexport type OutMessage = {\n type: 'result',\n result: unknown | null,\n error: string | Error | null,\n messageId: number,\n};\n\nself.onmessage = (event: MessageEvent<InMessage>) => {\n const data = event.data;\n const messageId = data?.messageId;\n (async () => {\n if (!data) {\n throw new Error('No data');\n }\n const handler = handlers[data.type];\n if (handler) {\n if (data.type !== 'init') {\n await initIfNeeded();\n }\n const start = performance.now();\n const result = await handler(data);\n const end = performance.now();\n console.debug(`Worker message ${data.messageId} took ${end - start}ms`);\n self.postMessage({\n type: 'result',\n result: result,\n error: null,\n messageId,\n } as OutMessage);\n } else {\n throw new Error(`No handler for ${data.type}`);\n }\n })().catch(error => {\n self.postMessage({\n type: 'result',\n result: null,\n error,\n messageId,\n } as OutMessage);\n });\n};\n"],"mappings":"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","names":["run_diff_proto"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "objdiff-wasm",
3
- "version": "2.0.0-beta.6",
3
+ "version": "2.0.0-beta.7",
4
4
  "description": "A local diffing tool for decompilation projects.",
5
5
  "author": {
6
6
  "name": "Luke Street",
@@ -19,7 +19,7 @@
19
19
  "types": "dist/main.d.ts",
20
20
  "scripts": {
21
21
  "build": "tsup",
22
- "build:all": "npm run build && npm run build:proto && npm run build:wasm",
22
+ "build:all": "npm run build:wasm && npm run build:proto && npm run build",
23
23
  "build:proto": "protoc --ts_out=gen --ts_opt add_pb_suffix,eslint_disable,ts_nocheck,use_proto_field_name --proto_path=../objdiff-core/protos ../objdiff-core/protos/*.proto",
24
24
  "build:wasm": "cd ../objdiff-core && wasm-pack build --out-dir ../objdiff-wasm/pkg --target web -- --features arm,dwarf,ppc,x86,wasm"
25
25
  },
package/dist/worker.d.ts DELETED
@@ -1,34 +0,0 @@
1
- import { DiffObjConfig } from './main.js';
2
- import '@protobuf-ts/runtime';
3
-
4
- type ExtractParam<T> = {
5
- [K in keyof T]: T[K] extends (arg1: infer U, ...args: any[]) => any ? U & {
6
- type: K;
7
- } : never;
8
- }[keyof T];
9
- type HandlerData = ExtractParam<{
10
- run_diff: typeof run_diff;
11
- }>;
12
- declare function run_diff({ left, right, config }: {
13
- left: Uint8Array | undefined;
14
- right: Uint8Array | undefined;
15
- config?: DiffObjConfig;
16
- }): Uint8Array;
17
- type InMessage = HandlerData & {
18
- messageId: number;
19
- };
20
- type OutMessage = ({
21
- type: 'result';
22
- result: unknown | null;
23
- error: unknown | null;
24
- } | {
25
- type: 'init';
26
- msg: string;
27
- } | {
28
- type: 'ready';
29
- msg: string;
30
- }) & {
31
- messageId: number;
32
- };
33
-
34
- export type { InMessage, OutMessage };