sol-dbg 0.0.9 → 0.1.2

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.
@@ -0,0 +1,382 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.FoundryCheatcodePrecompile = exports.setFoundryCtx = exports.getFoundryCtx = exports.FoundryContext = exports.FAIL_MSG_DATA = exports.FAIL_LOC = exports.STOP_PRANK_SELECTOR = exports.START_PRANK_SELECTOR02 = exports.START_PRANK_SELECTOR01 = exports.PRANK_SELECTOR02 = exports.PRANK_SELECTOR01 = exports.DEAL_SELECTOR = exports.ADDR_SELECTOR = exports.SIGN_SELECTOR = exports.STORE_SELECTOR = exports.LOAD_SELECTOR = exports.ROLL_SELECTOR = exports.WARP_SELECTOR = exports.FoundryCheatcodesAddress = exports.interpRunListeners = void 0;
7
+ const evm_1 = require("@ethereumjs/vm/dist/evm/evm");
8
+ const ethereumjs_util_1 = require("ethereumjs-util");
9
+ const utils_1 = require("../utils");
10
+ const interpreter_1 = __importDefault(require("@ethereumjs/vm/dist/evm/interpreter"));
11
+ const exceptions_1 = require("@ethereumjs/vm/dist/exceptions");
12
+ /*
13
+ * Hotpatch Interpreter.run so we can keep track of the runtime relationships between EEIs.
14
+ * We use this to track when one call context is a child of another, which helps us scope pranks
15
+ */
16
+ const oldRun = interpreter_1.default.prototype.run;
17
+ /**
18
+ * Each test/cases/debug session is associated with a unique VM. And there are
19
+ * multiple interpreter instances per VM. We keep 1 event emitter per VM, so
20
+ * that after we are done working with some VM, we don't unnecessarily invoke
21
+ * its callbacks.
22
+ */
23
+ exports.interpRunListeners = new Map();
24
+ interpreter_1.default.prototype.run = async function (code, opts) {
25
+ const vm = this._vm;
26
+ const emitter = exports.interpRunListeners.get(vm);
27
+ if (emitter)
28
+ emitter.emit("beforeInterpRun", this);
29
+ const res = oldRun.bind(this)(code, opts);
30
+ const wrappedPromise = res.then((interpRes) => {
31
+ if (emitter)
32
+ emitter.emit("afterInterpRun", this);
33
+ return interpRes;
34
+ });
35
+ return wrappedPromise;
36
+ };
37
+ const { secp256k1 } = require("ethereum-cryptography/secp256k1");
38
+ const ethABI = require("web3-eth-abi");
39
+ exports.FoundryCheatcodesAddress = ethereumjs_util_1.Address.fromString("0x7109709ECfa91a80626fF3989D68f67F5b1DD12D");
40
+ exports.WARP_SELECTOR = (0, ethereumjs_util_1.keccak256)(Buffer.from("warp(uint256)", "utf-8"))
41
+ .slice(0, 4)
42
+ .toString("hex");
43
+ exports.ROLL_SELECTOR = (0, ethereumjs_util_1.keccak256)(Buffer.from("roll(uint256)", "utf-8"))
44
+ .slice(0, 4)
45
+ .toString("hex");
46
+ exports.LOAD_SELECTOR = (0, ethereumjs_util_1.keccak256)(Buffer.from("load(address,bytes32)", "utf-8"))
47
+ .slice(0, 4)
48
+ .toString("hex");
49
+ exports.STORE_SELECTOR = (0, ethereumjs_util_1.keccak256)(Buffer.from("store(address,bytes32,bytes32)", "utf-8"))
50
+ .slice(0, 4)
51
+ .toString("hex");
52
+ exports.SIGN_SELECTOR = (0, ethereumjs_util_1.keccak256)(Buffer.from("sign(uint256,bytes32)", "utf-8"))
53
+ .slice(0, 4)
54
+ .toString("hex");
55
+ exports.ADDR_SELECTOR = (0, ethereumjs_util_1.keccak256)(Buffer.from("addr(uint256)", "utf-8"))
56
+ .slice(0, 4)
57
+ .toString("hex");
58
+ exports.DEAL_SELECTOR = (0, ethereumjs_util_1.keccak256)(Buffer.from("deal(address,uint256)", "utf-8"))
59
+ .slice(0, 4)
60
+ .toString("hex");
61
+ exports.PRANK_SELECTOR01 = (0, ethereumjs_util_1.keccak256)(Buffer.from("prank(address)", "utf-8"))
62
+ .slice(0, 4)
63
+ .toString("hex");
64
+ exports.PRANK_SELECTOR02 = (0, ethereumjs_util_1.keccak256)(Buffer.from("prank(address,address)", "utf-8"))
65
+ .slice(0, 4)
66
+ .toString("hex");
67
+ exports.START_PRANK_SELECTOR01 = (0, ethereumjs_util_1.keccak256)(Buffer.from("startPrank(address)", "utf-8"))
68
+ .slice(0, 4)
69
+ .toString("hex");
70
+ exports.START_PRANK_SELECTOR02 = (0, ethereumjs_util_1.keccak256)(Buffer.from("startPrank(address,address)", "utf-8"))
71
+ .slice(0, 4)
72
+ .toString("hex");
73
+ exports.STOP_PRANK_SELECTOR = (0, ethereumjs_util_1.keccak256)(Buffer.from("stopPrank()", "utf-8"))
74
+ .slice(0, 4)
75
+ .toString("hex");
76
+ exports.FAIL_LOC = (0, ethereumjs_util_1.setLengthRight)(Buffer.from("failed", "utf-8"), 32).toString("hex");
77
+ exports.FAIL_MSG_DATA = Buffer.concat([
78
+ (0, ethereumjs_util_1.keccak256)(Buffer.from("store(address,bytes32,bytes32)", "utf-8")).slice(0, 4),
79
+ (0, ethereumjs_util_1.setLengthLeft)(exports.FoundryCheatcodesAddress.toBuffer(), 32),
80
+ (0, ethereumjs_util_1.setLengthRight)(Buffer.from("failed", "utf-8"), 32),
81
+ (0, ethereumjs_util_1.setLengthLeft)(Buffer.from([1]), 32)
82
+ ]).toString("hex");
83
+ /**
84
+ * Helper class attached to each VM object, that contains state relevant to Foundry cheatcodes.
85
+ */
86
+ class FoundryContext {
87
+ constructor() {
88
+ this.timeWarp = undefined;
89
+ this.rollBockNum = undefined;
90
+ this.failCalled = false;
91
+ /**
92
+ * We keep track of the current stack of EEI objects, in order to keep track
93
+ * of any pranks (pending and current). Its easier to attach pranks to EEI
94
+ * objects, as there is a unique EEI object for each external call in the
95
+ * trace, and pranks are scoped to external calls.
96
+ */
97
+ this.eeiStack = [];
98
+ }
99
+ // Get the current (topmost) EEI object
100
+ getEEI() {
101
+ return this.eeiStack[this.eeiStack.length - 1];
102
+ }
103
+ // Get any pending pranks for the current call frame
104
+ getPendingPrank() {
105
+ if (this.eeiStack.length === 0) {
106
+ return undefined;
107
+ }
108
+ return this.getEEI().pendingPrank;
109
+ }
110
+ // Set the pending prank for the current call frame
111
+ setPendingPrank(prank) {
112
+ if (this.eeiStack.length === 0) {
113
+ return undefined;
114
+ }
115
+ this.getEEI().pendingPrank = prank;
116
+ }
117
+ /**
118
+ * Get the set of pranks attached to the callframe related to eei.
119
+ * Note that for flexibility we allow more than 1 prank, but in practice
120
+ * foundry restricts this to only 1 prank at a time.
121
+ */
122
+ getPranks(eei) {
123
+ const pranks = eei.pranks;
124
+ if (pranks === undefined) {
125
+ return [];
126
+ }
127
+ return pranks;
128
+ }
129
+ /**
130
+ * Add a prank to a call frame identified by `eei`.
131
+ */
132
+ addPrank(eei, prank) {
133
+ const pranks = this.getPranks(eei);
134
+ pranks.push(prank);
135
+ eei.pranks = pranks;
136
+ }
137
+ /**
138
+ * Clear all active and pending pranks.
139
+ */
140
+ clearPranks() {
141
+ for (let i = this.eeiStack.length - 1; i >= 0; i--) {
142
+ this.eeiStack[i].pranks = undefined;
143
+ this.eeiStack[i].pendingPrank = undefined;
144
+ }
145
+ }
146
+ /**
147
+ * Look through the current pranks to see if we should override sender and/or origin.
148
+ * If `recurse` is false, only look at the top most call frame (the behavior for msg.sender pranks).
149
+ * If `recurse` is true, look down the call stack (the behavior for tx.origin pranks)
150
+ */
151
+ matchPrank(recurse) {
152
+ for (let i = this.eeiStack.length - 1; i >= 0; i--) {
153
+ const eei = this.eeiStack[i];
154
+ const isTop = i == this.eeiStack.length - 1;
155
+ const pranks = this.getPranks(eei);
156
+ for (let j = pranks.length - 1; j >= 0; j--) {
157
+ const prank = pranks[j];
158
+ if (prank.once && !isTop) {
159
+ continue;
160
+ }
161
+ return [prank.sender, prank.origin];
162
+ }
163
+ if (!recurse) {
164
+ break;
165
+ }
166
+ }
167
+ return [undefined, undefined];
168
+ }
169
+ /**
170
+ * Callback from the hooks in the interpreter to keep track of the
171
+ * eei stack
172
+ */
173
+ beforeInterpRunCB(interp) {
174
+ const eei = interp._eei;
175
+ const pendingPrank = this.getPendingPrank();
176
+ if (pendingPrank) {
177
+ this.addPrank(eei, pendingPrank);
178
+ if (pendingPrank.once) {
179
+ this.setPendingPrank(undefined);
180
+ }
181
+ }
182
+ this.eeiStack.push(interp._eei);
183
+ }
184
+ /**
185
+ * Callback from the hooks in the interpreter to keep track of the
186
+ * eei stack
187
+ */
188
+ afterInterpRunCB() {
189
+ this.eeiStack.pop();
190
+ }
191
+ }
192
+ exports.FoundryContext = FoundryContext;
193
+ // Get the FoundryContext associated with a VM
194
+ function getFoundryCtx(vm) {
195
+ return vm._foundryCtx;
196
+ }
197
+ exports.getFoundryCtx = getFoundryCtx;
198
+ // Set the FoundryContext associated with a VM
199
+ function setFoundryCtx(vm, ctx) {
200
+ vm._foundryCtx = ctx;
201
+ }
202
+ exports.setFoundryCtx = setFoundryCtx;
203
+ /**
204
+ * Foundry cheatcodes precompile contract deployed at 0x7109709ECfa91a80626fF3989D68f67F5b1DD12D.
205
+ */
206
+ async function FoundryCheatcodePrecompile(input) {
207
+ const selector = input.data.slice(0, 4).toString("hex");
208
+ const ctx = getFoundryCtx(input._VM);
209
+ if (selector === exports.WARP_SELECTOR) {
210
+ const newTime = BigInt(ethABI.decodeParameters(["uint256"], input.data.slice(4).toString("hex"))[0]);
211
+ ctx.timeWarp = newTime;
212
+ return {
213
+ gasUsed: new ethereumjs_util_1.BN(0),
214
+ returnValue: Buffer.from("", "hex")
215
+ };
216
+ }
217
+ if (selector === exports.ROLL_SELECTOR) {
218
+ const newBlockNum = BigInt(ethABI.decodeParameters(["uint256"], input.data.slice(4).toString("hex"))[0]);
219
+ ctx.rollBockNum = newBlockNum;
220
+ return {
221
+ gasUsed: new ethereumjs_util_1.BN(0),
222
+ returnValue: Buffer.from("", "hex")
223
+ };
224
+ }
225
+ if (selector === exports.LOAD_SELECTOR) {
226
+ //console.error(`load(${rawAddr}, ${rawLoc})`);
227
+ let value = await input._VM.stateManager.getContractStorage(new ethereumjs_util_1.Address(input.data.slice(16, 36)), input.data.slice(36, 68));
228
+ value = (0, ethereumjs_util_1.setLengthLeft)(value, 32);
229
+ //console.error(`Result: ${value.toString("hex")}`);
230
+ return {
231
+ gasUsed: new ethereumjs_util_1.BN(0),
232
+ returnValue: value
233
+ };
234
+ }
235
+ if (selector === exports.STORE_SELECTOR) {
236
+ const addr = new ethereumjs_util_1.Address(input.data.slice(16, 36));
237
+ const loc = input.data.slice(36, 68);
238
+ const value = input.data.slice(68, 100);
239
+ /*
240
+ console.error(
241
+ `store(${addr.toString()}, ${loc.toString("hex")}, ${value.toString("hex")})`
242
+ );
243
+ */
244
+ if (addr.equals(exports.FoundryCheatcodesAddress)) {
245
+ const strLoc = loc.toString("hex");
246
+ if (strLoc === exports.FAIL_LOC) {
247
+ ctx.failCalled = BigInt(value.toString("hex")) !== BigInt(0);
248
+ }
249
+ else {
250
+ throw new Error(`NYI store to loc ${strLoc} of foundry precompile contract ${addr.toString()}`);
251
+ }
252
+ }
253
+ else {
254
+ await input._VM.stateManager.putContractStorage(addr, loc, value);
255
+ }
256
+ return {
257
+ gasUsed: new ethereumjs_util_1.BN(0),
258
+ returnValue: Buffer.from("", "hex")
259
+ };
260
+ }
261
+ if (selector === exports.SIGN_SELECTOR) {
262
+ const pk = input.data.slice(4, 36);
263
+ const digest = input.data.slice(36, 68);
264
+ const sig = secp256k1.sign(digest, pk);
265
+ const r = (0, utils_1.bigIntToBuf)(sig.r, 32, "big");
266
+ const s = (0, utils_1.bigIntToBuf)(sig.s, 32, "big");
267
+ const v = (0, ethereumjs_util_1.setLengthLeft)(Buffer.from([sig.recovery + 27]), 32);
268
+ return {
269
+ gasUsed: new ethereumjs_util_1.BN(0),
270
+ returnValue: Buffer.concat([v, r, s])
271
+ };
272
+ }
273
+ if (selector === exports.ADDR_SELECTOR) {
274
+ const pk = input.data.slice(4, 36);
275
+ const addr = (0, ethereumjs_util_1.setLengthLeft)((0, ethereumjs_util_1.privateToAddress)(pk), 32);
276
+ return {
277
+ gasUsed: new ethereumjs_util_1.BN(0),
278
+ returnValue: addr
279
+ };
280
+ }
281
+ if (selector === exports.DEAL_SELECTOR) {
282
+ const addr = new ethereumjs_util_1.Address(input.data.slice(16, 36));
283
+ const newBalance = input.data.slice(36, 68).toString("hex");
284
+ const acct = await input._VM.stateManager.getAccount(addr);
285
+ acct.balance = new ethereumjs_util_1.BN(newBalance, 16);
286
+ await input._VM.stateManager.putAccount(addr, acct);
287
+ return {
288
+ gasUsed: new ethereumjs_util_1.BN(0),
289
+ returnValue: Buffer.from("", "hex")
290
+ };
291
+ }
292
+ if (selector === exports.PRANK_SELECTOR01) {
293
+ // Foundry doesn't allow multiple concurrent pranks
294
+ if (ctx.getPendingPrank() !== undefined) {
295
+ return (0, evm_1.VmErrorResult)(new exceptions_1.VmError(exceptions_1.ERROR.REVERT), new ethereumjs_util_1.BN(0));
296
+ }
297
+ ctx.setPendingPrank({
298
+ sender: new ethereumjs_util_1.Address(input.data.slice(16, 36)),
299
+ origin: undefined,
300
+ once: true
301
+ });
302
+ //console.error(`prank(${input.data.slice(16, 36).toString("hex")})`);
303
+ return {
304
+ gasUsed: new ethereumjs_util_1.BN(0),
305
+ returnValue: Buffer.from("", "hex")
306
+ };
307
+ }
308
+ if (selector === exports.PRANK_SELECTOR02) {
309
+ // Foundry doesn't allow multiple concurrent pranks
310
+ if (ctx.getPendingPrank() !== undefined) {
311
+ return (0, evm_1.VmErrorResult)(new exceptions_1.VmError(exceptions_1.ERROR.REVERT), new ethereumjs_util_1.BN(0));
312
+ }
313
+ ctx.setPendingPrank({
314
+ sender: new ethereumjs_util_1.Address(input.data.slice(16, 36)),
315
+ origin: new ethereumjs_util_1.Address(input.data.slice(36, 68)),
316
+ once: true
317
+ });
318
+ /*
319
+ console.error(
320
+ `prank(${input.data.slice(16, 36).toString("hex")}, ${input.data
321
+ .slice(36, 68)
322
+ .toString("hex")})`
323
+ );
324
+ */
325
+ return {
326
+ gasUsed: new ethereumjs_util_1.BN(0),
327
+ returnValue: Buffer.from("", "hex")
328
+ };
329
+ }
330
+ if (selector === exports.START_PRANK_SELECTOR01) {
331
+ // Foundry doesn't allow multiple concurrent pranks
332
+ if (ctx.getPendingPrank() !== undefined) {
333
+ return (0, evm_1.VmErrorResult)(new exceptions_1.VmError(exceptions_1.ERROR.REVERT), new ethereumjs_util_1.BN(0));
334
+ }
335
+ ctx.setPendingPrank({
336
+ sender: new ethereumjs_util_1.Address(input.data.slice(16, 36)),
337
+ origin: undefined,
338
+ once: false
339
+ });
340
+ //console.error(`startPrank(${input.data.slice(16, 36).toString("hex")})`);
341
+ return {
342
+ gasUsed: new ethereumjs_util_1.BN(0),
343
+ returnValue: Buffer.from("", "hex")
344
+ };
345
+ }
346
+ if (selector === exports.START_PRANK_SELECTOR02) {
347
+ // Foundry doesn't allow multiple concurrent pranks
348
+ if (ctx.getPendingPrank() !== undefined) {
349
+ return (0, evm_1.VmErrorResult)(new exceptions_1.VmError(exceptions_1.ERROR.REVERT), new ethereumjs_util_1.BN(0));
350
+ }
351
+ ctx.setPendingPrank({
352
+ sender: new ethereumjs_util_1.Address(input.data.slice(16, 36)),
353
+ origin: new ethereumjs_util_1.Address(input.data.slice(48, 68)),
354
+ once: false
355
+ });
356
+ /*
357
+ console.error(
358
+ `startPrank(${input.data.slice(16, 36).toString("hex")}, ${new Address(
359
+ input.data.slice(48, 68)
360
+ )})`
361
+ );
362
+ */
363
+ return {
364
+ gasUsed: new ethereumjs_util_1.BN(0),
365
+ returnValue: Buffer.from("", "hex")
366
+ };
367
+ }
368
+ if (selector === exports.STOP_PRANK_SELECTOR) {
369
+ ctx.clearPranks();
370
+ //console.error(`stopPrank()`);
371
+ return {
372
+ gasUsed: new ethereumjs_util_1.BN(0),
373
+ returnValue: Buffer.from("", "hex")
374
+ };
375
+ }
376
+ return {
377
+ gasUsed: new ethereumjs_util_1.BN(0),
378
+ returnValue: Buffer.from("", "hex")
379
+ };
380
+ }
381
+ exports.FoundryCheatcodePrecompile = FoundryCheatcodePrecompile;
382
+ //# sourceMappingURL=foundry_cheatcodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"foundry_cheatcodes.js","sourceRoot":"","sources":["../../src/debug/foundry_cheatcodes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { AddOpcode } from "@ethereumjs/vm/dist/evm/types";
2
+ import { FoundryContext } from "./foundry_cheatcodes";
3
+ export declare function foundryInterposedOps(opcodes: any, foundryCtx: FoundryContext): AddOpcode[];
4
+ //# sourceMappingURL=opcode_interposing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opcode_interposing.d.ts","sourceRoot":"","sources":["../../src/debug/opcode_interposing.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAmBtD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,cAAc,GAAG,SAAS,EAAE,CA0D1F"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.foundryInterposedOps = void 0;
4
+ const ethereumjs_util_1 = require("ethereumjs-util");
5
+ function interopseOnOp(code, opcodes, handler) {
6
+ const originalOp = opcodes.opcodes.get(code);
7
+ const gasFunction = originalOp.dynamicGas ? opcodes.dynamicGasHandlers.get(code) : undefined;
8
+ return {
9
+ opcode: code,
10
+ opcodeName: originalOp.name,
11
+ baseFee: originalOp.fee,
12
+ gasFunction: gasFunction,
13
+ logicFunction: handler
14
+ };
15
+ }
16
+ function foundryInterposedOps(opcodes, foundryCtx) {
17
+ const res = [];
18
+ const foundryOpInterposing = new Map([
19
+ [
20
+ 0x42,
21
+ (runState, common) => {
22
+ const time = foundryCtx.timeWarp === undefined
23
+ ? runState.eei.getBlockTimestamp()
24
+ : new ethereumjs_util_1.BN(foundryCtx.timeWarp.toString());
25
+ runState.stack.push(time);
26
+ }
27
+ ],
28
+ [
29
+ 0x43,
30
+ (runState, common) => {
31
+ const number = foundryCtx.rollBockNum === undefined
32
+ ? runState.eei.getBlockNumber()
33
+ : new ethereumjs_util_1.BN(foundryCtx.rollBockNum.toString());
34
+ runState.stack.push(number);
35
+ }
36
+ ],
37
+ [
38
+ 0x32,
39
+ (runState, common) => {
40
+ const [, prankOrigin] = foundryCtx.matchPrank(true);
41
+ const origin = prankOrigin instanceof ethereumjs_util_1.Address
42
+ ? new ethereumjs_util_1.BN(prankOrigin.buf)
43
+ : runState.eei.getTxOrigin();
44
+ runState.stack.push(origin);
45
+ }
46
+ ],
47
+ [
48
+ 0x33,
49
+ (runState, common) => {
50
+ const [prankSender] = foundryCtx.matchPrank(false);
51
+ const caller = prankSender instanceof ethereumjs_util_1.Address
52
+ ? new ethereumjs_util_1.BN(prankSender.buf)
53
+ : runState.eei.getCaller();
54
+ runState.stack.push(caller);
55
+ }
56
+ ]
57
+ ]);
58
+ for (const [code, handler] of foundryOpInterposing) {
59
+ res.push(interopseOnOp(code, opcodes, handler));
60
+ }
61
+ return res;
62
+ }
63
+ exports.foundryInterposedOps = foundryInterposedOps;
64
+ //# sourceMappingURL=opcode_interposing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opcode_interposing.js","sourceRoot":"","sources":["../../src/debug/opcode_interposing.ts"],"names":[],"mappings":";;;AAMA,qDAA8C;AAE9C,SAAS,aAAa,CAAC,IAAY,EAAE,OAAY,EAAE,OAAkB;IACjE,MAAM,UAAU,GAAW,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,WAAW,GACb,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAE7E,OAAO;QACH,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,UAAU,CAAC,IAAI;QAC3B,OAAO,EAAE,UAAU,CAAC,GAAG;QACvB,WAAW,EAAE,WAAW;QACxB,aAAa,EAAE,OAAO;KACzB,CAAC;AACN,CAAC;AAED,SAAgB,oBAAoB,CAAC,OAAY,EAAE,UAA0B;IACzE,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAoB;QACpD;YACI,IAAI;YACJ,CAAC,QAAkB,EAAE,MAAc,EAAQ,EAAE;gBACzC,MAAM,IAAI,GACN,UAAU,CAAC,QAAQ,KAAK,SAAS;oBAC7B,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE;oBAClC,CAAC,CAAC,IAAI,oBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAEjD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;SACJ;QACD;YACI,IAAI;YACJ,CAAC,QAAkB,EAAE,MAAc,EAAQ,EAAE;gBACzC,MAAM,MAAM,GACR,UAAU,CAAC,WAAW,KAAK,SAAS;oBAChC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE;oBAC/B,CAAC,CAAC,IAAI,oBAAE,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAEpD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;SACJ;QACD;YACI,IAAI;YACJ,CAAC,QAAkB,EAAE,MAAc,EAAQ,EAAE;gBACzC,MAAM,CAAC,EAAE,WAAW,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;gBAEpD,MAAM,MAAM,GACR,WAAW,YAAY,yBAAO;oBAC1B,CAAC,CAAC,IAAI,oBAAE,CAAC,WAAW,CAAC,GAAG,CAAC;oBACzB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBAErC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;SACJ;QACD;YACI,IAAI;YACJ,CAAC,QAAkB,EAAE,MAAc,EAAQ,EAAE;gBACzC,MAAM,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAEnD,MAAM,MAAM,GACR,WAAW,YAAY,yBAAO;oBAC1B,CAAC,CAAC,IAAI,oBAAE,CAAC,WAAW,CAAC,GAAG,CAAC;oBACzB,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBAEnC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;SACJ;KACJ,CAAC,CAAC;IAEH,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,oBAAoB,EAAE;QAChD,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;KACnD;IAED,OAAO,GAAG,CAAC;AACf,CAAC;AA1DD,oDA0DC"}
@@ -1 +1 @@
1
- {"version":3,"file":"opcodes.d.ts","sourceRoot":"","sources":["../../src/debug/opcodes.ts"],"names":[],"mappings":"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A;IACN,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,MAAM,MAAA;IACN,MAAM,MAAA;IACN,MAAM,MAAA;IACN,MAAM,MAAA;IACN,MAAM,MAAA;IACN,MAAM,MAAA;IACN,MAAM,MAAA;IACN,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,MAAM,MAAA;IACN,IAAI,MAAA;IACJ,QAAQ,MAAA;IACR,MAAM,MAAA;IACN,YAAY,MAAA;IACZ,OAAO,MAAA;IACP,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,MAAM,MAAA;IACN,UAAU,MAAA;IACV,YAAY,MAAA;CACf;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,EAigFjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,qBAO/B,CAAC;AAKF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAezD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAanD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAUrD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAapD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAGtD"}
1
+ {"version":3,"file":"opcodes.d.ts","sourceRoot":"","sources":["../../src/debug/opcodes.ts"],"names":[],"mappings":"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A;IACN,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,KAAK,MAAA;IACL,MAAM,MAAA;IACN,MAAM,MAAA;IACN,MAAM,MAAA;IACN,MAAM,MAAA;IACN,MAAM,MAAA;IACN,MAAM,MAAA;IACN,MAAM,MAAA;IACN,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,IAAI,MAAA;IACJ,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,MAAM,MAAA;IACN,IAAI,MAAA;IACJ,QAAQ,MAAA;IACR,MAAM,MAAA;IACN,YAAY,MAAA;IACZ,OAAO,MAAA;IACP,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,UAAU,MAAA;IACV,MAAM,MAAA;IACN,UAAU,MAAA;IACV,YAAY,MAAA;CACf;AAED,eAAO,MAAM,UAAU,EAAE,SAAS,EAigFjC,CAAC;AAEF,eAAO,MAAM,mBAAmB,qBAO/B,CAAC;AAKF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgBzD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAanD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAUrD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAapD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,SAAS,GAAG,OAAO,CAGtD"}
@@ -2845,12 +2845,10 @@ function getOpInfo(arg) {
2845
2845
  (0, solc_typed_ast_1.assert)(arg >= 0 && arg < 256, `Invalid EVM opcode ${arg}`);
2846
2846
  return exports.OpcodeInfo[arg];
2847
2847
  }
2848
- else {
2849
- const opcode = exports.MnemonicToOpcodeMap.get(arg);
2850
- (0, solc_typed_ast_1.assert)(opcode !== undefined, `Unknown opcode mnemonic ${arg}`);
2851
- (0, solc_typed_ast_1.assert)(opcode >= 0 && opcode < 256, `Internal error: invalid opcode ${opcode} for mnemonic ${arg}`);
2852
- return exports.OpcodeInfo[opcode];
2853
- }
2848
+ const opcode = exports.MnemonicToOpcodeMap.get(arg);
2849
+ (0, solc_typed_ast_1.assert)(opcode !== undefined, `Unknown opcode mnemonic ${arg}`);
2850
+ (0, solc_typed_ast_1.assert)(opcode >= 0 && opcode < 256, `Internal error: invalid opcode ${opcode} for mnemonic ${arg}`);
2851
+ return exports.OpcodeInfo[opcode];
2854
2852
  }
2855
2853
  exports.getOpInfo = getOpInfo;
2856
2854
  /**