From f65b3915c990aa8e548ffcbf3eb791040743db57 Mon Sep 17 00:00:00 2001 From: Dimitar Bounov Date: Fri, 4 Oct 2024 13:53:56 -1000 Subject: [PATCH] Add support for decoding contract state in the middle of a TX --- src/debug/layout.ts | 41 +- src/debug/tracers/base_tracer.ts | 49 +- src/debug/tracers/sol_debugger.ts | 8 +- src/debug/tracers/storage_decode_tracer.ts | 104 + src/debug/tracers/support_tracer.ts | 8 +- src/utils/test_runner.ts | 58 +- .../layout_maps_fail/artifacts/main.json | 14686 ++++++++++++++++ .../contracts/contracts/layout_maps.sol | 38 + .../local/layout_maps_fail/txs/tx00.json | 93 + test/unit/debug.spec.ts | 57 +- 10 files changed, 15114 insertions(+), 28 deletions(-) create mode 100644 src/debug/tracers/storage_decode_tracer.ts create mode 100644 test/samples/local/layout_maps_fail/artifacts/main.json create mode 100644 test/samples/local/layout_maps_fail/contracts/contracts/layout_maps.sol create mode 100644 test/samples/local/layout_maps_fail/txs/tx00.json diff --git a/src/debug/layout.ts b/src/debug/layout.ts index ce5bb1d..dcf4df2 100644 --- a/src/debug/layout.ts +++ b/src/debug/layout.ts @@ -1,3 +1,5 @@ +import { EVMStateManagerInterface } from "@ethereumjs/common"; +import { Address } from "@ethereumjs/util"; import { ArrayType, ContractDefinition, @@ -7,9 +9,10 @@ import { PointerType, TypeNode } from "solc-typed-ast"; +import { ContractStates } from "../utils"; import { IArtifactManager } from "./artifact_manager"; import { nextWord, roundLocToType, stor_decodeValue } from "./decoding"; -import { MapKeys } from "./tracers"; +import { getMapKeys, getStorage, KeccakPreimageMap, MapKeys } from "./tracers"; import { DataLocationKind, Storage, StorageLocation } from "./types"; export interface ContractSolidityState { @@ -20,6 +23,42 @@ function isTypeStringStatic32Bytes(t: string): boolean { return t.endsWith("[]") || t.includes("mapping("); } +export async function decodeContractStates( + artifactManager: IArtifactManager, + contracts: Iterable
, + state: EVMStateManagerInterface, + preimages: KeccakPreimageMap +): Promise { + const res: ContractStates = {}; + const mapKeys = getMapKeys(preimages); + + for (const addr of contracts) { + const code = await state.getContractCode(addr); + const info = artifactManager.getContractFromDeployedBytecode(code); + + if (!info || !info.ast) { + continue; + } + + const infer = artifactManager.infer(info.artifact.compilerVersion); + const storage = await getStorage(state, addr); + + const contractState = decodeContractState( + artifactManager, + infer, + info.ast, + storage, + mapKeys + ); + + if (contractState) { + res[addr.toString()] = contractState; + } + } + + return res; +} + export function decodeContractState( artifactManager: IArtifactManager, infer: InferType, diff --git a/src/debug/tracers/base_tracer.ts b/src/debug/tracers/base_tracer.ts index 296b38b..d612dc5 100644 --- a/src/debug/tracers/base_tracer.ts +++ b/src/debug/tracers/base_tracer.ts @@ -31,7 +31,16 @@ export interface FoundryTxResult extends RunTxResult { */ const vmToEVMMap = new Map(); -export abstract class BaseSolTxTracer { +/** + * Base class for all trace processors. You can think of trace processing as a combination + * of a map operation from `InterpreterStep` -> `TraceT`, along with a reduce operation + * from `(TraceT, CtxT) -> CtxT`. All the map functions are stored in `transformers/` to allow + * for reusability between different tracers. + * + * There is yet no formal place for reducers to go to. Check out `storage_decode_tracer.ts` for an example + * of a reducer that accumulates live contracts and keccak preimages at each step. + */ +export abstract class BaseSolTxTracer { artifactManager!: IArtifactManager; protected readonly strict: boolean; protected readonly foundryCheatcodes: boolean; @@ -131,26 +140,37 @@ export abstract class BaseSolTxTracer { abstract processRawTraceStep( vm: VM, step: InterpreterStep, - trace: State[], - tx: TypedTransaction - ): Promise; + trace: TraceT[], + tx: TypedTransaction, + ctx: CtxT + ): Promise<[TraceT, CtxT]>; + /** + * Run a TX with the specified "transformers" returning a quadruple including: + * + * 1. An enriched trace + * 2. The TX result (with added info for Foundry TX) + * 3. The StateManager at the end of the TX + * 4. The final (reduced) context `CtxT` + */ async debugTx( tx: TypedTransaction, block: Block | undefined, // TODO: Make block required and add to processRawTraceStep - stateBefore: EVMStateManagerInterface - ): Promise<[State[], FoundryTxResult, EVMStateManagerInterface]> { + stateBefore: EVMStateManagerInterface, + ctx: CtxT + ): Promise<[TraceT[], FoundryTxResult, EVMStateManagerInterface, CtxT]> { const vm = await BaseSolTxTracer.createVm( stateBefore.shallowCopy(true), this.foundryCheatcodes ); - const trace: State[] = []; + const trace: TraceT[] = []; assert(vm.evm.events !== undefined, "Unable to access EVM events at this point"); vm.evm.events.on("step", async (step: InterpreterStep, next: any) => { - const curStep = await this.processRawTraceStep(vm, step, trace, tx); + const [curStep, newCtx] = await this.processRawTraceStep(vm, step, trace, tx, ctx); + ctx = newCtx; trace.push(curStep); @@ -177,7 +197,18 @@ export abstract class BaseSolTxTracer { ...txRes, failCalled: foundryFailCalled }, - stateAfter + stateAfter, + ctx ]; } } + +export abstract class MapOnlyTracer extends BaseSolTxTracer { + async debugTx( + tx: TypedTransaction, + block: Block | undefined, + stateBefore: EVMStateManagerInterface + ): Promise<[TraceT[], FoundryTxResult, EVMStateManagerInterface, null]> { + return super.debugTx(tx, block, stateBefore, null); + } +} diff --git a/src/debug/tracers/sol_debugger.ts b/src/debug/tracers/sol_debugger.ts index efaba54..f559536 100644 --- a/src/debug/tracers/sol_debugger.ts +++ b/src/debug/tracers/sol_debugger.ts @@ -2,7 +2,7 @@ import { InterpreterStep } from "@ethereumjs/evm"; import { TypedTransaction } from "@ethereumjs/tx"; import { VM } from "@ethereumjs/vm"; import { StepState } from "../types"; -import { BaseSolTxTracer } from "./base_tracer"; +import { MapOnlyTracer } from "./base_tracer"; import { addBasicInfo, addContractLifetimeInfo, @@ -14,13 +14,13 @@ import { addExternalFrame } from "./transformers/ext_stack"; import { addInternalFrame } from "./transformers/int_stack"; import { addSource } from "./transformers/source"; -export class SolTxDebugger extends BaseSolTxTracer { +export class SolTxDebugger extends MapOnlyTracer { async processRawTraceStep( vm: VM, step: InterpreterStep, trace: StepState[], tx: TypedTransaction - ): Promise { + ): Promise<[StepState, null]> { const opInfo = addOpInfo(vm, step, {}); const basicInfo = await addBasicInfo(vm, step, opInfo, trace); const extFrameInfo = await addExternalFrame( @@ -47,6 +47,6 @@ export class SolTxDebugger extends BaseSolTxTracer { const keccakPreimages = await addKeccakInvertInfo(vm, step, contractLifetime, trace); - return keccakPreimages; + return [keccakPreimages, null]; } } diff --git a/src/debug/tracers/storage_decode_tracer.ts b/src/debug/tracers/storage_decode_tracer.ts new file mode 100644 index 0000000..ab78983 --- /dev/null +++ b/src/debug/tracers/storage_decode_tracer.ts @@ -0,0 +1,104 @@ +import { InterpreterStep } from "@ethereumjs/evm"; +import { TypedTransaction } from "@ethereumjs/tx"; +import { Address } from "@ethereumjs/util"; +import { VM } from "@ethereumjs/vm"; +import { ContractStates } from "../../utils"; +import { decodeContractStates } from "../layout"; +import { BaseSolTxTracer } from "./base_tracer"; +import { + addBasicInfo, + addContractLifetimeInfo, + addExternalFrame, + addKeccakInvertInfo, + addOpInfo, + BasicStepInfo, + ContractLifeTimeInfo, + ExternalFrameInfo, + Keccak256InvertInfo, + KeccakPreimageMap +} from "./transformers"; + +export interface DecodedStorageInfo { + decodedStorage?: ContractStates; +} + +export type StorageDecodeTracerInfo = BasicStepInfo & + ExternalFrameInfo & + ContractLifeTimeInfo & + Keccak256InvertInfo & + DecodedStorageInfo; + +export interface StorageDecodeTracerCtx { + liveContracts: Set; + preimages: KeccakPreimageMap; + targetSteps: Set; +} + +function reducer( + state: ContractLifeTimeInfo & Keccak256InvertInfo, + ctx: StorageDecodeTracerCtx +): void { + if (state.contractCreated) { + ctx.liveContracts.add(state.contractCreated.toString()); + } + + if (state.contractKilled) { + ctx.liveContracts.delete(state.contractKilled.toString()); + } + + if (state.keccak) { + ctx.preimages.set(state.keccak.to, state.keccak.from); + } +} +/** + * This tracer computes contract lifetime information and keccak256 pre-images for a TX. + * The information it collects supports the debugging for the main SolTxDebugger tracer. + * It is more-light weight and is ran by the TestRunner for all TXs, even if we are not going to debug them. + */ +export class StorageDecodeTracer extends BaseSolTxTracer< + StorageDecodeTracerInfo, + StorageDecodeTracerCtx +> { + async processRawTraceStep( + vm: VM, + step: InterpreterStep, + trace: StorageDecodeTracerInfo[], + tx: TypedTransaction, + ctx: StorageDecodeTracerCtx + ): Promise<[StorageDecodeTracerInfo, StorageDecodeTracerCtx]> { + const opInfo = addOpInfo(vm, step, {}); + const basicInfo = await addBasicInfo(vm, step, opInfo, trace); + const extFrameInfo = await addExternalFrame( + vm, + step, + basicInfo, + trace, + this.artifactManager, + tx + ); + const contracLifetimeInfo = addContractLifetimeInfo(vm, step, extFrameInfo, trace); + const keccakInfo = addKeccakInvertInfo(vm, step, contracLifetimeInfo, trace); + + reducer(keccakInfo, ctx); + + if (!ctx.targetSteps.has(trace.length)) { + return [keccakInfo, ctx]; + } + + const state = vm.stateManager; + const decodedStorage: ContractStates = await decodeContractStates( + this.artifactManager, + [...ctx.liveContracts].map(Address.fromString), + state, + ctx.preimages + ); + + return [ + { + ...keccakInfo, + decodedStorage + }, + ctx + ]; + } +} diff --git a/src/debug/tracers/support_tracer.ts b/src/debug/tracers/support_tracer.ts index 971e203..9726f5b 100644 --- a/src/debug/tracers/support_tracer.ts +++ b/src/debug/tracers/support_tracer.ts @@ -1,7 +1,7 @@ import { InterpreterStep } from "@ethereumjs/evm"; import { TypedTransaction } from "@ethereumjs/tx"; import { VM } from "@ethereumjs/vm"; -import { BaseSolTxTracer } from "./base_tracer"; +import { MapOnlyTracer } from "./base_tracer"; import { addBasicInfo, addContractLifetimeInfo, @@ -23,13 +23,13 @@ export type SupportTracerStepInfo = BasicStepInfo & * The information it collects supports the debugging for the main SolTxDebugger tracer. * It is more-light weight and is ran by the TestRunner for all TXs, even if we are not going to debug them. */ -export class SupportTracer extends BaseSolTxTracer { +export class SupportTracer extends MapOnlyTracer { async processRawTraceStep( vm: VM, step: InterpreterStep, trace: SupportTracerStepInfo[], tx: TypedTransaction - ): Promise { + ): Promise<[SupportTracerStepInfo, null]> { const opInfo = addOpInfo(vm, step, {}); const basicInfo = await addBasicInfo(vm, step, opInfo, trace); const extFrameInfo = await addExternalFrame( @@ -43,6 +43,6 @@ export class SupportTracer extends BaseSolTxTracer { const contracLifetimeInfo = addContractLifetimeInfo(vm, step, extFrameInfo, trace); const keccakInfo = addKeccakInvertInfo(vm, step, contracLifetimeInfo, trace); - return keccakInfo; + return [keccakInfo, null]; } } diff --git a/src/utils/test_runner.ts b/src/utils/test_runner.ts index 9727634..1c9e0fa 100644 --- a/src/utils/test_runner.ts +++ b/src/utils/test_runner.ts @@ -9,16 +9,16 @@ import { HexString } from "../artifacts"; import { BaseSolTxTracer, ContractSolidityState, + decodeContractStates, FoundryTxResult, - getContractGenKillSet, getKeccakPreimages, IArtifactManager, KeccakPreimageMap, SupportTracer } from "../debug"; +import { StorageDecodeTracer } from "../debug/tracers/storage_decode_tracer"; import { map_add } from "./map"; import { hexStrToBuf32, makeFakeTransaction, ZERO_ADDRESS_STRING } from "./misc"; -import { set_add, set_subtract } from "./set"; export interface BaseTestStep { address: HexString; @@ -84,6 +84,8 @@ interface ResultFoundryFail { kind: ResultKind.FoundryFail; } +// @todo: Test-relevant parts of this should be separated from BaseTestStep and moved under test/ +// BaseTestStep should be renamed to something more generic - e.g. TxDesc export interface TestStep extends BaseTestStep { // Expected result of the transaction result: @@ -98,13 +100,16 @@ export interface TestStep extends BaseTestStep { errorString?: string; // Optional prefix to append to file path to find the files errorPathPrefix?: string; - layoutBefore?: ContractSolidityState; + layoutBefore?: ContractStates; + layoutAtFailure?: ContractStates; } export interface TestCase extends BaseTestCase { steps: TestStep[]; } +export type ContractStates = { [addres: string]: ContractSolidityState }; + /** * Helper class to run a set of TX and record info to allow debuggin any of the TXs independently. This includes: * @@ -179,16 +184,14 @@ export class VMTestRunner { await (stateManager as DefaultStateManager).flush(); - // Update the set of live contracts - const [gen, kill] = getContractGenKillSet(trace, res); - set_add(contractsBefore, gen); - set_subtract(contractsBefore, kill); + if (res.createdAddress) { + contractsBefore.add(res.createdAddress.toString()); + } + // Update the keccak map const txKeccakPreimages = getKeccakPreimages(trace); map_add(keccakPreimages, txKeccakPreimages); - // Update the keccak map - // Add results this._results.push(res); @@ -321,4 +324,41 @@ export class VMTestRunner { return res; } + + async getDecodedContractStatesBeforeTx( + tx: TypedTransaction, + contracts?: Iterable
+ ): Promise { + const state = this.getStateBeforeTx(tx); + const preimages = this.getKeccakPreimagesBefore(tx); + + if (contracts === undefined) { + contracts = [...this.getContractsBefore(tx)].map(Address.fromString); + } + + return await decodeContractStates(this.artifactManager, contracts, state, preimages); + } + + async getDecodedContractStatesOnTxStep( + tx: TypedTransaction, + stepNum: number + ): Promise { + const tracer = new StorageDecodeTracer(this.artifactManager); + + const liveContracts = new Set(this.getContractsBefore(tx)); + const preimages = new Map(this.getKeccakPreimagesBefore(tx)); + const [trace, ,] = await tracer.debugTx(tx, this.getBlock(tx), this.getStateBeforeTx(tx), { + liveContracts, + preimages, + targetSteps: new Set([stepNum]) + }); + + if (trace.length < stepNum) { + return undefined; + } + + assert(trace[stepNum].decodedStorage !== undefined, ``); + + return trace[stepNum].decodedStorage; + } } diff --git a/test/samples/local/layout_maps_fail/artifacts/main.json b/test/samples/local/layout_maps_fail/artifacts/main.json new file mode 100644 index 0000000..36153a8 --- /dev/null +++ b/test/samples/local/layout_maps_fail/artifacts/main.json @@ -0,0 +1,14686 @@ +{ + "contracts": { + "contracts/layout_maps.sol": { + "Layout_map": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "ping", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": {}, + "version": 1 + }, + "evm": { + "assembly": " /* \"contracts/layout_maps.sol\":166:630 contract Layout_map {... */\n mstore(0x40, 0x80)\n /* \"contracts/layout_maps.sol\":285:454 constructor() public {... */\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\ntag_1:\n pop\n /* \"contracts/layout_maps.sol\":320:321 1 */\n 0x01\n /* \"contracts/layout_maps.sol\":316:317 a */\n 0x00\n dup1\n /* \"contracts/layout_maps.sol\":316:321 a = 1 */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n 0xff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"contracts/layout_maps.sol\":335:336 2 */\n 0x02\n /* \"contracts/layout_maps.sol\":331:332 b */\n dup1\n 0x00\n /* \"contracts/layout_maps.sol\":331:336 b = 2 */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n 0xff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"contracts/layout_maps.sol\":354:356 42 */\n 0x2a\n /* \"contracts/layout_maps.sol\":346:348 m1 */\n 0x01\n /* \"contracts/layout_maps.sol\":346:351 m1[1] */\n 0x00\n /* \"contracts/layout_maps.sol\":349:350 1 */\n 0x01\n /* \"contracts/layout_maps.sol\":346:351 m1[1] */\n dup1\n signextend\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n /* \"contracts/layout_maps.sol\":346:356 m1[1] = 42 */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"contracts/layout_maps.sol\":381:414 Foo(-1, 1000, \"dy\", new int[](1)) */\n mload(0x40)\n dup1\n 0x80\n add\n 0x40\n mstore\n dup1\n /* \"contracts/layout_maps.sol\":385:387 -1 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"contracts/layout_maps.sol\":381:414 Foo(-1, 1000, \"dy\", new int[](1)) */\n 0x00\n signextend\n dup2\n mstore\n 0x20\n add\n /* \"contracts/layout_maps.sol\":389:393 1000 */\n 0x03e8\n /* \"contracts/layout_maps.sol\":381:414 Foo(-1, 1000, \"dy\", new int[](1)) */\n 0x01\n signextend\n dup2\n mstore\n 0x20\n add\n mload(0x40)\n dup1\n 0x40\n add\n 0x40\n mstore\n dup1\n 0x02\n dup2\n mstore\n 0x20\n add\n 0x6479000000000000000000000000000000000000000000000000000000000000\n dup2\n mstore\n pop\n dup2\n mstore\n 0x20\n add\n /* \"contracts/layout_maps.sol\":411:412 1 */\n 0x01\n /* \"contracts/layout_maps.sol\":401:413 new int[](1) */\n 0xffffffffffffffff\n dup2\n gt\n iszero\n tag_4\n jumpi\n tag_5\n tag_6\n jump\t// in\ntag_5:\ntag_4:\n mload(0x40)\n swap1\n dup1\n dup3\n mstore\n dup1\n 0x20\n mul\n 0x20\n add\n dup3\n add\n 0x40\n mstore\n dup1\n iszero\n tag_7\n jumpi\n dup2\n 0x20\n add\n 0x20\n dup3\n mul\n dup1\n calldatasize\n dup4\n calldatacopy\n dup1\n dup3\n add\n swap2\n pop\n pop\n swap1\n pop\ntag_7:\n pop\n /* \"contracts/layout_maps.sol\":381:414 Foo(-1, 1000, \"dy\", new int[](1)) */\n dup2\n mstore\n pop\n /* \"contracts/layout_maps.sol\":367:371 fMap */\n 0x03\n /* \"contracts/layout_maps.sol\":367:378 fMap[\"goo\"] */\n mload(0x40)\n tag_8\n swap1\n tag_9\n jump\t// in\ntag_8:\n swap1\n dup2\n mstore\n 0x20\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n keccak256\n /* \"contracts/layout_maps.sol\":367:414 fMap[\"goo\"] = Foo(-1, 1000, \"dy\", new int[](1)) */\n 0x00\n dup3\n add\n mload\n dup2\n 0x00\n add\n exp(0x0100, 0x00)\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n 0x00\n signextend\n 0xff\n and\n mul\n or\n swap1\n sstore\n pop\n 0x20\n dup3\n add\n mload\n dup2\n 0x00\n add\n exp(0x0100, 0x01)\n dup2\n sload\n dup2\n 0xffff\n mul\n not\n and\n swap1\n dup4\n 0x01\n signextend\n 0xffff\n and\n mul\n or\n swap1\n sstore\n pop\n 0x40\n dup3\n add\n mload\n dup2\n 0x01\n add\n swap1\n dup2\n tag_10\n swap2\n swap1\n tag_11\n jump\t// in\ntag_10:\n pop\n 0x60\n dup3\n add\n mload\n dup2\n 0x02\n add\n swap1\n dup1\n mload\n swap1\n 0x20\n add\n swap1\n tag_12\n swap3\n swap2\n swap1\n tag_13\n jump\t// in\ntag_12:\n pop\n swap1\n pop\n pop\n /* \"contracts/layout_maps.sol\":444:447 100 */\n 0x64\n /* \"contracts/layout_maps.sol\":424:428 fMap */\n 0x03\n /* \"contracts/layout_maps.sol\":424:435 fMap[\"goo\"] */\n mload(0x40)\n tag_14\n swap1\n tag_9\n jump\t// in\ntag_14:\n swap1\n dup2\n mstore\n 0x20\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n keccak256\n /* \"contracts/layout_maps.sol\":424:438 fMap[\"goo\"].fd */\n 0x02\n add\n /* \"contracts/layout_maps.sol\":439:440 0 */\n 0x00\n /* \"contracts/layout_maps.sol\":424:441 fMap[\"goo\"].fd[0] */\n dup2\n sload\n dup2\n lt\n tag_15\n jumpi\n tag_16\n tag_17\n jump\t// in\ntag_16:\ntag_15:\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n add\n /* \"contracts/layout_maps.sol\":424:447 fMap[\"goo\"].fd[0] = 100 */\n dup2\n swap1\n sstore\n pop\n /* \"contracts/layout_maps.sol\":166:630 contract Layout_map {... */\n jump(tag_19)\ntag_13:\n dup3\n dup1\n sload\n dup3\n dup3\n sstore\n swap1\n 0x00\n mstore\n keccak256(0x00, 0x20)\n swap1\n dup2\n add\n swap3\n dup3\n iszero\n tag_20\n jumpi\n swap2\n 0x20\n mul\n dup3\n add\ntag_21:\n dup3\n dup2\n gt\n iszero\n tag_22\n jumpi\n dup3\n mload\n dup3\n sstore\n swap2\n 0x20\n add\n swap2\n swap1\n 0x01\n add\n swap1\n jump(tag_21)\ntag_22:\ntag_20:\n pop\n swap1\n pop\n tag_23\n swap2\n swap1\n tag_24\n jump\t// in\ntag_23:\n pop\n swap1\n jump\t// out\ntag_24:\ntag_25:\n dup1\n dup3\n gt\n iszero\n tag_26\n jumpi\n 0x00\n dup2\n 0x00\n swap1\n sstore\n pop\n 0x01\n add\n jump(tag_25)\ntag_26:\n pop\n swap1\n jump\t// out\n /* \"#utility.yul\":7:187 */\ntag_6:\n /* \"#utility.yul\":55:132 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":52:53 */\n 0x00\n /* \"#utility.yul\":45:133 */\n mstore\n /* \"#utility.yul\":152:156 */\n 0x41\n /* \"#utility.yul\":149:150 */\n 0x04\n /* \"#utility.yul\":142:157 */\n mstore\n /* \"#utility.yul\":176:180 */\n 0x24\n /* \"#utility.yul\":173:174 */\n 0x00\n /* \"#utility.yul\":166:181 */\n revert\n /* \"#utility.yul\":193:341 */\ntag_27:\n /* \"#utility.yul\":295:306 */\n 0x00\n /* \"#utility.yul\":332:335 */\n dup2\n /* \"#utility.yul\":317:335 */\n swap1\n pop\n /* \"#utility.yul\":193:341 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":347:500 */\ntag_28:\n /* \"#utility.yul\":487:492 */\n 0x676f6f0000000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":483:484 */\n 0x00\n /* \"#utility.yul\":475:481 */\n dup3\n /* \"#utility.yul\":471:485 */\n add\n /* \"#utility.yul\":464:493 */\n mstore\n /* \"#utility.yul\":347:500 */\n pop\n jump\t// out\n /* \"#utility.yul\":506:906 */\ntag_29:\n /* \"#utility.yul\":666:669 */\n 0x00\n /* \"#utility.yul\":687:771 */\n tag_54\n /* \"#utility.yul\":769:770 */\n 0x03\n /* \"#utility.yul\":764:767 */\n dup4\n /* \"#utility.yul\":687:771 */\n tag_27\n jump\t// in\ntag_54:\n /* \"#utility.yul\":680:771 */\n swap2\n pop\n /* \"#utility.yul\":780:873 */\n tag_55\n /* \"#utility.yul\":869:872 */\n dup3\n /* \"#utility.yul\":780:873 */\n tag_28\n jump\t// in\ntag_55:\n /* \"#utility.yul\":898:899 */\n 0x03\n /* \"#utility.yul\":893:896 */\n dup3\n /* \"#utility.yul\":889:900 */\n add\n /* \"#utility.yul\":882:900 */\n swap1\n pop\n /* \"#utility.yul\":506:906 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":912:1293 */\ntag_9:\n /* \"#utility.yul\":1097:1100 */\n 0x00\n /* \"#utility.yul\":1119:1267 */\n tag_57\n /* \"#utility.yul\":1263:1266 */\n dup3\n /* \"#utility.yul\":1119:1267 */\n tag_29\n jump\t// in\ntag_57:\n /* \"#utility.yul\":1112:1267 */\n swap2\n pop\n /* \"#utility.yul\":1284:1287 */\n dup2\n /* \"#utility.yul\":1277:1287 */\n swap1\n pop\n /* \"#utility.yul\":912:1293 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1299:1398 */\ntag_30:\n /* \"#utility.yul\":1351:1357 */\n 0x00\n /* \"#utility.yul\":1385:1390 */\n dup2\n /* \"#utility.yul\":1379:1391 */\n mload\n /* \"#utility.yul\":1369:1391 */\n swap1\n pop\n /* \"#utility.yul\":1299:1398 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1404:1584 */\ntag_31:\n /* \"#utility.yul\":1452:1529 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":1449:1450 */\n 0x00\n /* \"#utility.yul\":1442:1530 */\n mstore\n /* \"#utility.yul\":1549:1553 */\n 0x22\n /* \"#utility.yul\":1546:1547 */\n 0x04\n /* \"#utility.yul\":1539:1554 */\n mstore\n /* \"#utility.yul\":1573:1577 */\n 0x24\n /* \"#utility.yul\":1570:1571 */\n 0x00\n /* \"#utility.yul\":1563:1578 */\n revert\n /* \"#utility.yul\":1590:1910 */\ntag_32:\n /* \"#utility.yul\":1634:1640 */\n 0x00\n /* \"#utility.yul\":1671:1672 */\n 0x02\n /* \"#utility.yul\":1665:1669 */\n dup3\n /* \"#utility.yul\":1661:1673 */\n div\n /* \"#utility.yul\":1651:1673 */\n swap1\n pop\n /* \"#utility.yul\":1718:1719 */\n 0x01\n /* \"#utility.yul\":1712:1716 */\n dup3\n /* \"#utility.yul\":1708:1720 */\n and\n /* \"#utility.yul\":1739:1757 */\n dup1\n /* \"#utility.yul\":1729:1810 */\n tag_61\n jumpi\n /* \"#utility.yul\":1795:1799 */\n 0x7f\n /* \"#utility.yul\":1787:1793 */\n dup3\n /* \"#utility.yul\":1783:1800 */\n and\n /* \"#utility.yul\":1773:1800 */\n swap2\n pop\n /* \"#utility.yul\":1729:1810 */\ntag_61:\n /* \"#utility.yul\":1857:1859 */\n 0x20\n /* \"#utility.yul\":1849:1855 */\n dup3\n /* \"#utility.yul\":1846:1860 */\n lt\n /* \"#utility.yul\":1826:1844 */\n dup2\n /* \"#utility.yul\":1823:1861 */\n sub\n /* \"#utility.yul\":1820:1904 */\n tag_62\n jumpi\n /* \"#utility.yul\":1876:1894 */\n tag_63\n tag_31\n jump\t// in\ntag_63:\n /* \"#utility.yul\":1820:1904 */\ntag_62:\n /* \"#utility.yul\":1641:1910 */\n pop\n /* \"#utility.yul\":1590:1910 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":1916:2057 */\ntag_33:\n /* \"#utility.yul\":1965:1969 */\n 0x00\n /* \"#utility.yul\":1988:1991 */\n dup2\n /* \"#utility.yul\":1980:1991 */\n swap1\n pop\n /* \"#utility.yul\":2011:2014 */\n dup2\n /* \"#utility.yul\":2008:2009 */\n 0x00\n /* \"#utility.yul\":2001:2015 */\n mstore\n /* \"#utility.yul\":2045:2049 */\n 0x20\n /* \"#utility.yul\":2042:2043 */\n 0x00\n /* \"#utility.yul\":2032:2050 */\n keccak256\n /* \"#utility.yul\":2024:2050 */\n swap1\n pop\n /* \"#utility.yul\":1916:2057 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2063:2156 */\ntag_34:\n /* \"#utility.yul\":2100:2106 */\n 0x00\n /* \"#utility.yul\":2147:2149 */\n 0x20\n /* \"#utility.yul\":2142:2144 */\n 0x1f\n /* \"#utility.yul\":2135:2140 */\n dup4\n /* \"#utility.yul\":2131:2145 */\n add\n /* \"#utility.yul\":2127:2150 */\n div\n /* \"#utility.yul\":2117:2150 */\n swap1\n pop\n /* \"#utility.yul\":2063:2156 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2162:2269 */\ntag_35:\n /* \"#utility.yul\":2206:2214 */\n 0x00\n /* \"#utility.yul\":2256:2261 */\n dup3\n /* \"#utility.yul\":2250:2254 */\n dup3\n /* \"#utility.yul\":2246:2262 */\n shl\n /* \"#utility.yul\":2225:2262 */\n swap1\n pop\n /* \"#utility.yul\":2162:2269 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2275:2668 */\ntag_36:\n /* \"#utility.yul\":2344:2350 */\n 0x00\n /* \"#utility.yul\":2394:2395 */\n 0x08\n /* \"#utility.yul\":2382:2392 */\n dup4\n /* \"#utility.yul\":2378:2396 */\n mul\n /* \"#utility.yul\":2417:2514 */\n tag_68\n /* \"#utility.yul\":2447:2513 */\n 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\n /* \"#utility.yul\":2436:2445 */\n dup3\n /* \"#utility.yul\":2417:2514 */\n tag_35\n jump\t// in\ntag_68:\n /* \"#utility.yul\":2535:2574 */\n tag_69\n /* \"#utility.yul\":2565:2573 */\n dup7\n /* \"#utility.yul\":2554:2563 */\n dup4\n /* \"#utility.yul\":2535:2574 */\n tag_35\n jump\t// in\ntag_69:\n /* \"#utility.yul\":2523:2574 */\n swap6\n pop\n /* \"#utility.yul\":2607:2611 */\n dup1\n /* \"#utility.yul\":2603:2612 */\n not\n /* \"#utility.yul\":2596:2601 */\n dup5\n /* \"#utility.yul\":2592:2613 */\n and\n /* \"#utility.yul\":2583:2613 */\n swap4\n pop\n /* \"#utility.yul\":2656:2660 */\n dup1\n /* \"#utility.yul\":2646:2654 */\n dup7\n /* \"#utility.yul\":2642:2661 */\n and\n /* \"#utility.yul\":2635:2640 */\n dup5\n /* \"#utility.yul\":2632:2662 */\n or\n /* \"#utility.yul\":2622:2662 */\n swap3\n pop\n /* \"#utility.yul\":2351:2668 */\n pop\n pop\n /* \"#utility.yul\":2275:2668 */\n swap4\n swap3\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":2674:2751 */\ntag_37:\n /* \"#utility.yul\":2711:2718 */\n 0x00\n /* \"#utility.yul\":2740:2745 */\n dup2\n /* \"#utility.yul\":2729:2745 */\n swap1\n pop\n /* \"#utility.yul\":2674:2751 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2757:2817 */\ntag_38:\n /* \"#utility.yul\":2785:2788 */\n 0x00\n /* \"#utility.yul\":2806:2811 */\n dup2\n /* \"#utility.yul\":2799:2811 */\n swap1\n pop\n /* \"#utility.yul\":2757:2817 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2823:2965 */\ntag_39:\n /* \"#utility.yul\":2873:2882 */\n 0x00\n /* \"#utility.yul\":2906:2959 */\n tag_73\n /* \"#utility.yul\":2924:2958 */\n tag_74\n /* \"#utility.yul\":2933:2957 */\n tag_75\n /* \"#utility.yul\":2951:2956 */\n dup5\n /* \"#utility.yul\":2933:2957 */\n tag_37\n jump\t// in\ntag_75:\n /* \"#utility.yul\":2924:2958 */\n tag_38\n jump\t// in\ntag_74:\n /* \"#utility.yul\":2906:2959 */\n tag_37\n jump\t// in\ntag_73:\n /* \"#utility.yul\":2893:2959 */\n swap1\n pop\n /* \"#utility.yul\":2823:2965 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":2971:3046 */\ntag_40:\n /* \"#utility.yul\":3014:3017 */\n 0x00\n /* \"#utility.yul\":3035:3040 */\n dup2\n /* \"#utility.yul\":3028:3040 */\n swap1\n pop\n /* \"#utility.yul\":2971:3046 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":3052:3321 */\ntag_41:\n /* \"#utility.yul\":3162:3201 */\n tag_78\n /* \"#utility.yul\":3193:3200 */\n dup4\n /* \"#utility.yul\":3162:3201 */\n tag_39\n jump\t// in\ntag_78:\n /* \"#utility.yul\":3223:3314 */\n tag_79\n /* \"#utility.yul\":3272:3313 */\n tag_80\n /* \"#utility.yul\":3296:3312 */\n dup3\n /* \"#utility.yul\":3272:3313 */\n tag_40\n jump\t// in\ntag_80:\n /* \"#utility.yul\":3264:3270 */\n dup5\n /* \"#utility.yul\":3257:3261 */\n dup5\n /* \"#utility.yul\":3251:3262 */\n sload\n /* \"#utility.yul\":3223:3314 */\n tag_36\n jump\t// in\ntag_79:\n /* \"#utility.yul\":3217:3221 */\n dup3\n /* \"#utility.yul\":3210:3315 */\n sstore\n /* \"#utility.yul\":3128:3321 */\n pop\n /* \"#utility.yul\":3052:3321 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3327:3400 */\ntag_42:\n /* \"#utility.yul\":3372:3375 */\n 0x00\n /* \"#utility.yul\":3327:3400 */\n swap1\n jump\t// out\n /* \"#utility.yul\":3406:3595 */\ntag_43:\n /* \"#utility.yul\":3483:3515 */\n tag_83\n tag_42\n jump\t// in\ntag_83:\n /* \"#utility.yul\":3524:3589 */\n tag_84\n /* \"#utility.yul\":3582:3588 */\n dup2\n /* \"#utility.yul\":3574:3580 */\n dup5\n /* \"#utility.yul\":3568:3572 */\n dup5\n /* \"#utility.yul\":3524:3589 */\n tag_41\n jump\t// in\ntag_84:\n /* \"#utility.yul\":3459:3595 */\n pop\n /* \"#utility.yul\":3406:3595 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3601:3787 */\ntag_44:\n /* \"#utility.yul\":3661:3781 */\ntag_86:\n /* \"#utility.yul\":3678:3681 */\n dup2\n /* \"#utility.yul\":3671:3676 */\n dup2\n /* \"#utility.yul\":3668:3682 */\n lt\n /* \"#utility.yul\":3661:3781 */\n iszero\n tag_88\n jumpi\n /* \"#utility.yul\":3732:3771 */\n tag_89\n /* \"#utility.yul\":3769:3770 */\n 0x00\n /* \"#utility.yul\":3762:3767 */\n dup3\n /* \"#utility.yul\":3732:3771 */\n tag_43\n jump\t// in\ntag_89:\n /* \"#utility.yul\":3705:3706 */\n 0x01\n /* \"#utility.yul\":3698:3703 */\n dup2\n /* \"#utility.yul\":3694:3707 */\n add\n /* \"#utility.yul\":3685:3707 */\n swap1\n pop\n /* \"#utility.yul\":3661:3781 */\n jump(tag_86)\ntag_88:\n /* \"#utility.yul\":3601:3787 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":3793:4336 */\ntag_45:\n /* \"#utility.yul\":3894:3896 */\n 0x1f\n /* \"#utility.yul\":3889:3892 */\n dup3\n /* \"#utility.yul\":3886:3897 */\n gt\n /* \"#utility.yul\":3883:4329 */\n iszero\n tag_91\n jumpi\n /* \"#utility.yul\":3928:3966 */\n tag_92\n /* \"#utility.yul\":3960:3965 */\n dup2\n /* \"#utility.yul\":3928:3966 */\n tag_33\n jump\t// in\ntag_92:\n /* \"#utility.yul\":4012:4041 */\n tag_93\n /* \"#utility.yul\":4030:4040 */\n dup5\n /* \"#utility.yul\":4012:4041 */\n tag_34\n jump\t// in\ntag_93:\n /* \"#utility.yul\":4002:4010 */\n dup2\n /* \"#utility.yul\":3998:4042 */\n add\n /* \"#utility.yul\":4195:4197 */\n 0x20\n /* \"#utility.yul\":4183:4193 */\n dup6\n /* \"#utility.yul\":4180:4198 */\n lt\n /* \"#utility.yul\":4177:4226 */\n iszero\n tag_94\n jumpi\n /* \"#utility.yul\":4216:4224 */\n dup2\n /* \"#utility.yul\":4201:4224 */\n swap1\n pop\n /* \"#utility.yul\":4177:4226 */\ntag_94:\n /* \"#utility.yul\":4239:4319 */\n tag_95\n /* \"#utility.yul\":4295:4317 */\n tag_96\n /* \"#utility.yul\":4313:4316 */\n dup6\n /* \"#utility.yul\":4295:4317 */\n tag_34\n jump\t// in\ntag_96:\n /* \"#utility.yul\":4285:4293 */\n dup4\n /* \"#utility.yul\":4281:4318 */\n add\n /* \"#utility.yul\":4268:4279 */\n dup3\n /* \"#utility.yul\":4239:4319 */\n tag_44\n jump\t// in\ntag_95:\n /* \"#utility.yul\":3898:4329 */\n pop\n pop\n /* \"#utility.yul\":3883:4329 */\ntag_91:\n /* \"#utility.yul\":3793:4336 */\n pop\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4342:4459 */\ntag_46:\n /* \"#utility.yul\":4396:4404 */\n 0x00\n /* \"#utility.yul\":4446:4451 */\n dup3\n /* \"#utility.yul\":4440:4444 */\n dup3\n /* \"#utility.yul\":4436:4452 */\n shr\n /* \"#utility.yul\":4415:4452 */\n swap1\n pop\n /* \"#utility.yul\":4342:4459 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4465:4634 */\ntag_47:\n /* \"#utility.yul\":4509:4515 */\n 0x00\n /* \"#utility.yul\":4542:4593 */\n tag_99\n /* \"#utility.yul\":4590:4591 */\n 0x00\n /* \"#utility.yul\":4586:4592 */\n not\n /* \"#utility.yul\":4578:4583 */\n dup5\n /* \"#utility.yul\":4575:4576 */\n 0x08\n /* \"#utility.yul\":4571:4584 */\n mul\n /* \"#utility.yul\":4542:4593 */\n tag_46\n jump\t// in\ntag_99:\n /* \"#utility.yul\":4538:4594 */\n not\n /* \"#utility.yul\":4623:4627 */\n dup1\n /* \"#utility.yul\":4617:4621 */\n dup4\n /* \"#utility.yul\":4613:4628 */\n and\n /* \"#utility.yul\":4603:4628 */\n swap2\n pop\n /* \"#utility.yul\":4516:4634 */\n pop\n /* \"#utility.yul\":4465:4634 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4639:4934 */\ntag_48:\n /* \"#utility.yul\":4715:4719 */\n 0x00\n /* \"#utility.yul\":4861:4890 */\n tag_101\n /* \"#utility.yul\":4886:4889 */\n dup4\n /* \"#utility.yul\":4880:4884 */\n dup4\n /* \"#utility.yul\":4861:4890 */\n tag_47\n jump\t// in\ntag_101:\n /* \"#utility.yul\":4853:4890 */\n swap2\n pop\n /* \"#utility.yul\":4923:4926 */\n dup3\n /* \"#utility.yul\":4920:4921 */\n 0x02\n /* \"#utility.yul\":4916:4927 */\n mul\n /* \"#utility.yul\":4910:4914 */\n dup3\n /* \"#utility.yul\":4907:4928 */\n or\n /* \"#utility.yul\":4899:4928 */\n swap1\n pop\n /* \"#utility.yul\":4639:4934 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":4939:6334 */\ntag_11:\n /* \"#utility.yul\":5056:5093 */\n tag_103\n /* \"#utility.yul\":5089:5092 */\n dup3\n /* \"#utility.yul\":5056:5093 */\n tag_30\n jump\t// in\ntag_103:\n /* \"#utility.yul\":5158:5176 */\n 0xffffffffffffffff\n /* \"#utility.yul\":5150:5156 */\n dup2\n /* \"#utility.yul\":5147:5177 */\n gt\n /* \"#utility.yul\":5144:5200 */\n iszero\n tag_104\n jumpi\n /* \"#utility.yul\":5180:5198 */\n tag_105\n tag_6\n jump\t// in\ntag_105:\n /* \"#utility.yul\":5144:5200 */\ntag_104:\n /* \"#utility.yul\":5224:5262 */\n tag_106\n /* \"#utility.yul\":5256:5260 */\n dup3\n /* \"#utility.yul\":5250:5261 */\n sload\n /* \"#utility.yul\":5224:5262 */\n tag_32\n jump\t// in\ntag_106:\n /* \"#utility.yul\":5309:5376 */\n tag_107\n /* \"#utility.yul\":5369:5375 */\n dup3\n /* \"#utility.yul\":5361:5367 */\n dup3\n /* \"#utility.yul\":5355:5359 */\n dup6\n /* \"#utility.yul\":5309:5376 */\n tag_45\n jump\t// in\ntag_107:\n /* \"#utility.yul\":5403:5404 */\n 0x00\n /* \"#utility.yul\":5427:5431 */\n 0x20\n /* \"#utility.yul\":5414:5431 */\n swap1\n pop\n /* \"#utility.yul\":5459:5461 */\n 0x1f\n /* \"#utility.yul\":5451:5457 */\n dup4\n /* \"#utility.yul\":5448:5462 */\n gt\n /* \"#utility.yul\":5476:5477 */\n 0x01\n /* \"#utility.yul\":5471:6089 */\n dup2\n eq\n tag_109\n jumpi\n /* \"#utility.yul\":6133:6134 */\n 0x00\n /* \"#utility.yul\":6150:6156 */\n dup5\n /* \"#utility.yul\":6147:6224 */\n iszero\n tag_110\n jumpi\n /* \"#utility.yul\":6199:6208 */\n dup3\n /* \"#utility.yul\":6194:6197 */\n dup8\n /* \"#utility.yul\":6190:6209 */\n add\n /* \"#utility.yul\":6184:6210 */\n mload\n /* \"#utility.yul\":6175:6210 */\n swap1\n pop\n /* \"#utility.yul\":6147:6224 */\ntag_110:\n /* \"#utility.yul\":6250:6317 */\n tag_111\n /* \"#utility.yul\":6310:6316 */\n dup6\n /* \"#utility.yul\":6303:6308 */\n dup3\n /* \"#utility.yul\":6250:6317 */\n tag_48\n jump\t// in\ntag_111:\n /* \"#utility.yul\":6244:6248 */\n dup7\n /* \"#utility.yul\":6237:6318 */\n sstore\n /* \"#utility.yul\":6106:6328 */\n pop\n /* \"#utility.yul\":5441:6328 */\n jump(tag_108)\n /* \"#utility.yul\":5471:6089 */\ntag_109:\n /* \"#utility.yul\":5523:5527 */\n 0x1f\n /* \"#utility.yul\":5519:5528 */\n not\n /* \"#utility.yul\":5511:5517 */\n dup5\n /* \"#utility.yul\":5507:5529 */\n and\n /* \"#utility.yul\":5557:5594 */\n tag_112\n /* \"#utility.yul\":5589:5593 */\n dup7\n /* \"#utility.yul\":5557:5594 */\n tag_33\n jump\t// in\ntag_112:\n /* \"#utility.yul\":5616:5617 */\n 0x00\n /* \"#utility.yul\":5630:5838 */\ntag_113:\n /* \"#utility.yul\":5644:5651 */\n dup3\n /* \"#utility.yul\":5641:5642 */\n dup2\n /* \"#utility.yul\":5638:5652 */\n lt\n /* \"#utility.yul\":5630:5838 */\n iszero\n tag_115\n jumpi\n /* \"#utility.yul\":5723:5732 */\n dup5\n /* \"#utility.yul\":5718:5721 */\n dup10\n /* \"#utility.yul\":5714:5733 */\n add\n /* \"#utility.yul\":5708:5734 */\n mload\n /* \"#utility.yul\":5700:5706 */\n dup3\n /* \"#utility.yul\":5693:5735 */\n sstore\n /* \"#utility.yul\":5774:5775 */\n 0x01\n /* \"#utility.yul\":5766:5772 */\n dup3\n /* \"#utility.yul\":5762:5776 */\n add\n /* \"#utility.yul\":5752:5776 */\n swap2\n pop\n /* \"#utility.yul\":5821:5823 */\n 0x20\n /* \"#utility.yul\":5810:5819 */\n dup6\n /* \"#utility.yul\":5806:5824 */\n add\n /* \"#utility.yul\":5793:5824 */\n swap5\n pop\n /* \"#utility.yul\":5667:5671 */\n 0x20\n /* \"#utility.yul\":5664:5665 */\n dup2\n /* \"#utility.yul\":5660:5672 */\n add\n /* \"#utility.yul\":5655:5672 */\n swap1\n pop\n /* \"#utility.yul\":5630:5838 */\n jump(tag_113)\ntag_115:\n /* \"#utility.yul\":5866:5872 */\n dup7\n /* \"#utility.yul\":5857:5864 */\n dup4\n /* \"#utility.yul\":5854:5873 */\n lt\n /* \"#utility.yul\":5851:6030 */\n iszero\n tag_116\n jumpi\n /* \"#utility.yul\":5924:5933 */\n dup5\n /* \"#utility.yul\":5919:5922 */\n dup10\n /* \"#utility.yul\":5915:5934 */\n add\n /* \"#utility.yul\":5909:5935 */\n mload\n /* \"#utility.yul\":5967:6015 */\n tag_117\n /* \"#utility.yul\":6009:6013 */\n 0x1f\n /* \"#utility.yul\":6001:6007 */\n dup10\n /* \"#utility.yul\":5997:6014 */\n and\n /* \"#utility.yul\":5986:5995 */\n dup3\n /* \"#utility.yul\":5967:6015 */\n tag_47\n jump\t// in\ntag_117:\n /* \"#utility.yul\":5959:5965 */\n dup4\n /* \"#utility.yul\":5952:6016 */\n sstore\n /* \"#utility.yul\":5874:6030 */\n pop\n /* \"#utility.yul\":5851:6030 */\ntag_116:\n /* \"#utility.yul\":6076:6077 */\n 0x01\n /* \"#utility.yul\":6072:6073 */\n 0x02\n /* \"#utility.yul\":6064:6070 */\n dup9\n /* \"#utility.yul\":6060:6074 */\n mul\n /* \"#utility.yul\":6056:6078 */\n add\n /* \"#utility.yul\":6050:6054 */\n dup9\n /* \"#utility.yul\":6043:6079 */\n sstore\n /* \"#utility.yul\":5478:6089 */\n pop\n pop\n pop\n /* \"#utility.yul\":5441:6328 */\ntag_108:\n pop\n /* \"#utility.yul\":5031:6334 */\n pop\n pop\n pop\n /* \"#utility.yul\":4939:6334 */\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":6340:6520 */\ntag_17:\n /* \"#utility.yul\":6388:6465 */\n 0x4e487b7100000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":6385:6386 */\n 0x00\n /* \"#utility.yul\":6378:6466 */\n mstore\n /* \"#utility.yul\":6485:6489 */\n 0x32\n /* \"#utility.yul\":6482:6483 */\n 0x04\n /* \"#utility.yul\":6475:6490 */\n mstore\n /* \"#utility.yul\":6509:6513 */\n 0x24\n /* \"#utility.yul\":6506:6507 */\n 0x00\n /* \"#utility.yul\":6499:6514 */\n revert\n /* \"contracts/layout_maps.sol\":166:630 contract Layout_map {... */\ntag_19:\n dataSize(sub_0)\n dup1\n dataOffset(sub_0)\n 0x00\n codecopy\n 0x00\n return\nstop\n\nsub_0: assembly {\n /* \"contracts/layout_maps.sol\":166:630 contract Layout_map {... */\n mstore(0x40, 0x80)\n callvalue\n dup1\n iszero\n tag_1\n jumpi\n 0x00\n dup1\n revert\n tag_1:\n pop\n jumpi(tag_2, lt(calldatasize, 0x04))\n shr(0xe0, calldataload(0x00))\n dup1\n 0x5c36b186\n eq\n tag_3\n jumpi\n tag_2:\n 0x00\n dup1\n revert\n /* \"contracts/layout_maps.sol\":460:628 function ping() public {... */\n tag_3:\n tag_4\n tag_5\n jump\t// in\n tag_4:\n stop\n tag_5:\n /* \"contracts/layout_maps.sol\":497:500 101 */\n 0x65\n /* \"contracts/layout_maps.sol\":493:494 a */\n 0x00\n dup1\n /* \"contracts/layout_maps.sol\":493:500 a = 101 */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xff\n mul\n not\n and\n swap1\n dup4\n 0xff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"contracts/layout_maps.sol\":518:520 43 */\n 0x2b\n /* \"contracts/layout_maps.sol\":510:512 m1 */\n 0x01\n /* \"contracts/layout_maps.sol\":510:515 m1[2] */\n 0x00\n /* \"contracts/layout_maps.sol\":513:514 2 */\n 0x02\n /* \"contracts/layout_maps.sol\":510:515 m1[2] */\n 0x01\n signextend\n dup2\n mstore\n 0x20\n add\n swap1\n dup2\n mstore\n 0x20\n add\n 0x00\n keccak256\n 0x00\n /* \"contracts/layout_maps.sol\":510:520 m1[2] = 43 */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffffffff\n mul\n not\n and\n swap1\n dup4\n 0xffffffff\n and\n mul\n or\n swap1\n sstore\n pop\n /* \"contracts/layout_maps.sol\":547:552 -1002 */\n 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc16\n /* \"contracts/layout_maps.sol\":530:534 fMap */\n 0x03\n /* \"contracts/layout_maps.sol\":530:541 fMap[\"goo\"] */\n mload(0x40)\n tag_7\n swap1\n tag_8\n jump\t// in\n tag_7:\n swap1\n dup2\n mstore\n 0x20\n add\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n keccak256\n /* \"contracts/layout_maps.sol\":530:544 fMap[\"goo\"].fb */\n 0x00\n add\n 0x01\n /* \"contracts/layout_maps.sol\":530:552 fMap[\"goo\"].fb = -1002 */\n 0x0100\n exp\n dup2\n sload\n dup2\n 0xffff\n mul\n not\n and\n swap1\n dup4\n 0x01\n signextend\n 0xffff\n and\n mul\n or\n swap1\n sstore\n /* \"contracts/layout_maps.sol\":563:571 revert() */\n 0x00\n dup1\n revert\n /* \"#utility.yul\":7:155 */\n tag_10:\n /* \"#utility.yul\":109:120 */\n 0x00\n /* \"#utility.yul\":146:149 */\n dup2\n /* \"#utility.yul\":131:149 */\n swap1\n pop\n /* \"#utility.yul\":7:155 */\n swap3\n swap2\n pop\n pop\n jump\t// out\n /* \"#utility.yul\":161:314 */\n tag_11:\n /* \"#utility.yul\":301:306 */\n 0x676f6f0000000000000000000000000000000000000000000000000000000000\n /* \"#utility.yul\":297:298 */\n 0x00\n /* \"#utility.yul\":289:295 */\n dup3\n /* \"#utility.yul\":285:299 */\n add\n /* \"#utility.yul\":278:307 */\n mstore\n /* \"#utility.yul\":161:314 */\n pop\n jump\t// out\n /* \"#utility.yul\":320:720 */\n tag_12:\n /* \"#utility.yul\":480:483 */\n 0x00\n /* \"#utility.yul\":501:585 */\n tag_17\n /* \"#utility.yul\":583:584 */\n 0x03\n /* \"#utility.yul\":578:581 */\n dup4\n /* \"#utility.yul\":501:585 */\n tag_10\n jump\t// in\n tag_17:\n /* \"#utility.yul\":494:585 */\n swap2\n pop\n /* \"#utility.yul\":594:687 */\n tag_18\n /* \"#utility.yul\":683:686 */\n dup3\n /* \"#utility.yul\":594:687 */\n tag_11\n jump\t// in\n tag_18:\n /* \"#utility.yul\":712:713 */\n 0x03\n /* \"#utility.yul\":707:710 */\n dup3\n /* \"#utility.yul\":703:714 */\n add\n /* \"#utility.yul\":696:714 */\n swap1\n pop\n /* \"#utility.yul\":320:720 */\n swap2\n swap1\n pop\n jump\t// out\n /* \"#utility.yul\":726:1107 */\n tag_8:\n /* \"#utility.yul\":911:914 */\n 0x00\n /* \"#utility.yul\":933:1081 */\n tag_20\n /* \"#utility.yul\":1077:1080 */\n dup3\n /* \"#utility.yul\":933:1081 */\n tag_12\n jump\t// in\n tag_20:\n /* \"#utility.yul\":926:1081 */\n swap2\n pop\n /* \"#utility.yul\":1098:1101 */\n dup2\n /* \"#utility.yul\":1091:1101 */\n swap1\n pop\n /* \"#utility.yul\":726:1107 */\n swap2\n swap1\n pop\n jump\t// out\n\n auxdata: 0xa26469706673582212209afc85b0006e5ba9fd94d0aa763eec28613e731ddcd180afdcb3bb6b9a10903364736f6c63430008150033\n}\n", + "bytecode": { + "functionDebugData": { + "@_74": { + "entryPoint": null, + "id": 74, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_encode_t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d_to_t_string_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 733, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 767, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_dataslot_t_string_storage": { + "entryPoint": 890, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_length_t_string_memory_ptr": { + "entryPoint": 787, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 683, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "clean_up_bytearray_end_slots_t_string_storage": { + "entryPoint": 1175, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "cleanup_t_uint256": { + "entryPoint": 1016, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "clear_storage_range_t_bytes1": { + "entryPoint": 1141, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "convert_t_uint256_to_t_uint256": { + "entryPoint": 1034, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage": { + "entryPoint": 1312, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "divide_by_32_ceil": { + "entryPoint": 908, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_byte_array_length": { + "entryPoint": 842, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "extract_used_part_and_set_length_of_short_byte_array": { + "entryPoint": 1285, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "identity": { + "entryPoint": 1025, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "mask_bytes_dynamic": { + "entryPoint": 1257, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "panic_error_0x22": { + "entryPoint": 797, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x32": { + "entryPoint": 1519, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "panic_error_0x41": { + "entryPoint": 638, + "id": null, + "parameterSlots": 0, + "returnSlots": 0 + }, + "prepare_store_t_uint256": { + "entryPoint": 1067, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "shift_left_dynamic": { + "entryPoint": 923, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "shift_right_unsigned_dynamic": { + "entryPoint": 1245, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "storage_set_to_zero_t_uint256": { + "entryPoint": 1117, + "id": null, + "parameterSlots": 2, + "returnSlots": 0 + }, + "store_literal_in_memory_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d": { + "entryPoint": 693, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + }, + "update_byte_slice_dynamic32": { + "entryPoint": 935, + "id": null, + "parameterSlots": 3, + "returnSlots": 1 + }, + "update_storage_value_t_uint256_to_t_uint256": { + "entryPoint": 1076, + "id": null, + "parameterSlots": 3, + "returnSlots": 0 + }, + "zero_value_for_split_t_uint256": { + "entryPoint": 1113, + "id": null, + "parameterSlots": 0, + "returnSlots": 1 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:6523:1", + "nodeType": "YulBlock", + "src": "0:6523:1", + "statements": [ + { + "body": { + "nativeSrc": "35:152:1", + "nodeType": "YulBlock", + "src": "35:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "52:1:1", + "nodeType": "YulLiteral", + "src": "52:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "55:77:1", + "nodeType": "YulLiteral", + "src": "55:77:1", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "45:6:1", + "nodeType": "YulIdentifier", + "src": "45:6:1" + }, + "nativeSrc": "45:88:1", + "nodeType": "YulFunctionCall", + "src": "45:88:1" + }, + "nativeSrc": "45:88:1", + "nodeType": "YulExpressionStatement", + "src": "45:88:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "149:1:1", + "nodeType": "YulLiteral", + "src": "149:1:1", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "152:4:1", + "nodeType": "YulLiteral", + "src": "152:4:1", + "type": "", + "value": "0x41" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "142:6:1", + "nodeType": "YulIdentifier", + "src": "142:6:1" + }, + "nativeSrc": "142:15:1", + "nodeType": "YulFunctionCall", + "src": "142:15:1" + }, + "nativeSrc": "142:15:1", + "nodeType": "YulExpressionStatement", + "src": "142:15:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "173:1:1", + "nodeType": "YulLiteral", + "src": "173:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "176:4:1", + "nodeType": "YulLiteral", + "src": "176:4:1", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "166:6:1", + "nodeType": "YulIdentifier", + "src": "166:6:1" + }, + "nativeSrc": "166:15:1", + "nodeType": "YulFunctionCall", + "src": "166:15:1" + }, + "nativeSrc": "166:15:1", + "nodeType": "YulExpressionStatement", + "src": "166:15:1" + } + ] + }, + "name": "panic_error_0x41", + "nativeSrc": "7:180:1", + "nodeType": "YulFunctionDefinition", + "src": "7:180:1" + }, + { + "body": { + "nativeSrc": "307:34:1", + "nodeType": "YulBlock", + "src": "307:34:1", + "statements": [ + { + "nativeSrc": "317:18:1", + "nodeType": "YulAssignment", + "src": "317:18:1", + "value": { + "name": "pos", + "nativeSrc": "332:3:1", + "nodeType": "YulIdentifier", + "src": "332:3:1" + }, + "variableNames": [ + { + "name": "updated_pos", + "nativeSrc": "317:11:1", + "nodeType": "YulIdentifier", + "src": "317:11:1" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nativeSrc": "193:148:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "279:3:1", + "nodeType": "YulTypedName", + "src": "279:3:1", + "type": "" + }, + { + "name": "length", + "nativeSrc": "284:6:1", + "nodeType": "YulTypedName", + "src": "284:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nativeSrc": "295:11:1", + "nodeType": "YulTypedName", + "src": "295:11:1", + "type": "" + } + ], + "src": "193:148:1" + }, + { + "body": { + "nativeSrc": "453:47:1", + "nodeType": "YulBlock", + "src": "453:47:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "475:6:1", + "nodeType": "YulIdentifier", + "src": "475:6:1" + }, + { + "kind": "number", + "nativeSrc": "483:1:1", + "nodeType": "YulLiteral", + "src": "483:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "471:3:1", + "nodeType": "YulIdentifier", + "src": "471:3:1" + }, + "nativeSrc": "471:14:1", + "nodeType": "YulFunctionCall", + "src": "471:14:1" + }, + { + "hexValue": "676f6f", + "kind": "string", + "nativeSrc": "487:5:1", + "nodeType": "YulLiteral", + "src": "487:5:1", + "type": "", + "value": "goo" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "464:6:1", + "nodeType": "YulIdentifier", + "src": "464:6:1" + }, + "nativeSrc": "464:29:1", + "nodeType": "YulFunctionCall", + "src": "464:29:1" + }, + "nativeSrc": "464:29:1", + "nodeType": "YulExpressionStatement", + "src": "464:29:1" + } + ] + }, + "name": "store_literal_in_memory_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d", + "nativeSrc": "347:153:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nativeSrc": "445:6:1", + "nodeType": "YulTypedName", + "src": "445:6:1", + "type": "" + } + ], + "src": "347:153:1" + }, + { + "body": { + "nativeSrc": "670:236:1", + "nodeType": "YulBlock", + "src": "670:236:1", + "statements": [ + { + "nativeSrc": "680:91:1", + "nodeType": "YulAssignment", + "src": "680:91:1", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "764:3:1", + "nodeType": "YulIdentifier", + "src": "764:3:1" + }, + { + "kind": "number", + "nativeSrc": "769:1:1", + "nodeType": "YulLiteral", + "src": "769:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nativeSrc": "687:76:1", + "nodeType": "YulIdentifier", + "src": "687:76:1" + }, + "nativeSrc": "687:84:1", + "nodeType": "YulFunctionCall", + "src": "687:84:1" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "680:3:1", + "nodeType": "YulIdentifier", + "src": "680:3:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "869:3:1", + "nodeType": "YulIdentifier", + "src": "869:3:1" + } + ], + "functionName": { + "name": "store_literal_in_memory_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d", + "nativeSrc": "780:88:1", + "nodeType": "YulIdentifier", + "src": "780:88:1" + }, + "nativeSrc": "780:93:1", + "nodeType": "YulFunctionCall", + "src": "780:93:1" + }, + "nativeSrc": "780:93:1", + "nodeType": "YulExpressionStatement", + "src": "780:93:1" + }, + { + "nativeSrc": "882:18:1", + "nodeType": "YulAssignment", + "src": "882:18:1", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "893:3:1", + "nodeType": "YulIdentifier", + "src": "893:3:1" + }, + { + "kind": "number", + "nativeSrc": "898:1:1", + "nodeType": "YulLiteral", + "src": "898:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "889:3:1", + "nodeType": "YulIdentifier", + "src": "889:3:1" + }, + "nativeSrc": "889:11:1", + "nodeType": "YulFunctionCall", + "src": "889:11:1" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "882:3:1", + "nodeType": "YulIdentifier", + "src": "882:3:1" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nativeSrc": "506:400:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "658:3:1", + "nodeType": "YulTypedName", + "src": "658:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "666:3:1", + "nodeType": "YulTypedName", + "src": "666:3:1", + "type": "" + } + ], + "src": "506:400:1" + }, + { + "body": { + "nativeSrc": "1101:192:1", + "nodeType": "YulBlock", + "src": "1101:192:1", + "statements": [ + { + "nativeSrc": "1112:155:1", + "nodeType": "YulAssignment", + "src": "1112:155:1", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1263:3:1", + "nodeType": "YulIdentifier", + "src": "1263:3:1" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nativeSrc": "1119:142:1", + "nodeType": "YulIdentifier", + "src": "1119:142:1" + }, + "nativeSrc": "1119:148:1", + "nodeType": "YulFunctionCall", + "src": "1119:148:1" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "1112:3:1", + "nodeType": "YulIdentifier", + "src": "1112:3:1" + } + ] + }, + { + "nativeSrc": "1277:10:1", + "nodeType": "YulAssignment", + "src": "1277:10:1", + "value": { + "name": "pos", + "nativeSrc": "1284:3:1", + "nodeType": "YulIdentifier", + "src": "1284:3:1" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "1277:3:1", + "nodeType": "YulIdentifier", + "src": "1277:3:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "912:381:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "1088:3:1", + "nodeType": "YulTypedName", + "src": "1088:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "1097:3:1", + "nodeType": "YulTypedName", + "src": "1097:3:1", + "type": "" + } + ], + "src": "912:381:1" + }, + { + "body": { + "nativeSrc": "1358:40:1", + "nodeType": "YulBlock", + "src": "1358:40:1", + "statements": [ + { + "nativeSrc": "1369:22:1", + "nodeType": "YulAssignment", + "src": "1369:22:1", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "1385:5:1", + "nodeType": "YulIdentifier", + "src": "1385:5:1" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "1379:5:1", + "nodeType": "YulIdentifier", + "src": "1379:5:1" + }, + "nativeSrc": "1379:12:1", + "nodeType": "YulFunctionCall", + "src": "1379:12:1" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "1369:6:1", + "nodeType": "YulIdentifier", + "src": "1369:6:1" + } + ] + } + ] + }, + "name": "array_length_t_string_memory_ptr", + "nativeSrc": "1299:99:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "1341:5:1", + "nodeType": "YulTypedName", + "src": "1341:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "1351:6:1", + "nodeType": "YulTypedName", + "src": "1351:6:1", + "type": "" + } + ], + "src": "1299:99:1" + }, + { + "body": { + "nativeSrc": "1432:152:1", + "nodeType": "YulBlock", + "src": "1432:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1449:1:1", + "nodeType": "YulLiteral", + "src": "1449:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1452:77:1", + "nodeType": "YulLiteral", + "src": "1452:77:1", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1442:6:1", + "nodeType": "YulIdentifier", + "src": "1442:6:1" + }, + "nativeSrc": "1442:88:1", + "nodeType": "YulFunctionCall", + "src": "1442:88:1" + }, + "nativeSrc": "1442:88:1", + "nodeType": "YulExpressionStatement", + "src": "1442:88:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1546:1:1", + "nodeType": "YulLiteral", + "src": "1546:1:1", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "1549:4:1", + "nodeType": "YulLiteral", + "src": "1549:4:1", + "type": "", + "value": "0x22" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "1539:6:1", + "nodeType": "YulIdentifier", + "src": "1539:6:1" + }, + "nativeSrc": "1539:15:1", + "nodeType": "YulFunctionCall", + "src": "1539:15:1" + }, + "nativeSrc": "1539:15:1", + "nodeType": "YulExpressionStatement", + "src": "1539:15:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "1570:1:1", + "nodeType": "YulLiteral", + "src": "1570:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "1573:4:1", + "nodeType": "YulLiteral", + "src": "1573:4:1", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "1563:6:1", + "nodeType": "YulIdentifier", + "src": "1563:6:1" + }, + "nativeSrc": "1563:15:1", + "nodeType": "YulFunctionCall", + "src": "1563:15:1" + }, + "nativeSrc": "1563:15:1", + "nodeType": "YulExpressionStatement", + "src": "1563:15:1" + } + ] + }, + "name": "panic_error_0x22", + "nativeSrc": "1404:180:1", + "nodeType": "YulFunctionDefinition", + "src": "1404:180:1" + }, + { + "body": { + "nativeSrc": "1641:269:1", + "nodeType": "YulBlock", + "src": "1641:269:1", + "statements": [ + { + "nativeSrc": "1651:22:1", + "nodeType": "YulAssignment", + "src": "1651:22:1", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "1665:4:1", + "nodeType": "YulIdentifier", + "src": "1665:4:1" + }, + { + "kind": "number", + "nativeSrc": "1671:1:1", + "nodeType": "YulLiteral", + "src": "1671:1:1", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "1661:3:1", + "nodeType": "YulIdentifier", + "src": "1661:3:1" + }, + "nativeSrc": "1661:12:1", + "nodeType": "YulFunctionCall", + "src": "1661:12:1" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "1651:6:1", + "nodeType": "YulIdentifier", + "src": "1651:6:1" + } + ] + }, + { + "nativeSrc": "1682:38:1", + "nodeType": "YulVariableDeclaration", + "src": "1682:38:1", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "1712:4:1", + "nodeType": "YulIdentifier", + "src": "1712:4:1" + }, + { + "kind": "number", + "nativeSrc": "1718:1:1", + "nodeType": "YulLiteral", + "src": "1718:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1708:3:1", + "nodeType": "YulIdentifier", + "src": "1708:3:1" + }, + "nativeSrc": "1708:12:1", + "nodeType": "YulFunctionCall", + "src": "1708:12:1" + }, + "variables": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "1686:18:1", + "nodeType": "YulTypedName", + "src": "1686:18:1", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "1759:51:1", + "nodeType": "YulBlock", + "src": "1759:51:1", + "statements": [ + { + "nativeSrc": "1773:27:1", + "nodeType": "YulAssignment", + "src": "1773:27:1", + "value": { + "arguments": [ + { + "name": "length", + "nativeSrc": "1787:6:1", + "nodeType": "YulIdentifier", + "src": "1787:6:1" + }, + { + "kind": "number", + "nativeSrc": "1795:4:1", + "nodeType": "YulLiteral", + "src": "1795:4:1", + "type": "", + "value": "0x7f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "1783:3:1", + "nodeType": "YulIdentifier", + "src": "1783:3:1" + }, + "nativeSrc": "1783:17:1", + "nodeType": "YulFunctionCall", + "src": "1783:17:1" + }, + "variableNames": [ + { + "name": "length", + "nativeSrc": "1773:6:1", + "nodeType": "YulIdentifier", + "src": "1773:6:1" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "1739:18:1", + "nodeType": "YulIdentifier", + "src": "1739:18:1" + } + ], + "functionName": { + "name": "iszero", + "nativeSrc": "1732:6:1", + "nodeType": "YulIdentifier", + "src": "1732:6:1" + }, + "nativeSrc": "1732:26:1", + "nodeType": "YulFunctionCall", + "src": "1732:26:1" + }, + "nativeSrc": "1729:81:1", + "nodeType": "YulIf", + "src": "1729:81:1" + }, + { + "body": { + "nativeSrc": "1862:42:1", + "nodeType": "YulBlock", + "src": "1862:42:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x22", + "nativeSrc": "1876:16:1", + "nodeType": "YulIdentifier", + "src": "1876:16:1" + }, + "nativeSrc": "1876:18:1", + "nodeType": "YulFunctionCall", + "src": "1876:18:1" + }, + "nativeSrc": "1876:18:1", + "nodeType": "YulExpressionStatement", + "src": "1876:18:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "outOfPlaceEncoding", + "nativeSrc": "1826:18:1", + "nodeType": "YulIdentifier", + "src": "1826:18:1" + }, + { + "arguments": [ + { + "name": "length", + "nativeSrc": "1849:6:1", + "nodeType": "YulIdentifier", + "src": "1849:6:1" + }, + { + "kind": "number", + "nativeSrc": "1857:2:1", + "nodeType": "YulLiteral", + "src": "1857:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "1846:2:1", + "nodeType": "YulIdentifier", + "src": "1846:2:1" + }, + "nativeSrc": "1846:14:1", + "nodeType": "YulFunctionCall", + "src": "1846:14:1" + } + ], + "functionName": { + "name": "eq", + "nativeSrc": "1823:2:1", + "nodeType": "YulIdentifier", + "src": "1823:2:1" + }, + "nativeSrc": "1823:38:1", + "nodeType": "YulFunctionCall", + "src": "1823:38:1" + }, + "nativeSrc": "1820:84:1", + "nodeType": "YulIf", + "src": "1820:84:1" + } + ] + }, + "name": "extract_byte_array_length", + "nativeSrc": "1590:320:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "1625:4:1", + "nodeType": "YulTypedName", + "src": "1625:4:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "length", + "nativeSrc": "1634:6:1", + "nodeType": "YulTypedName", + "src": "1634:6:1", + "type": "" + } + ], + "src": "1590:320:1" + }, + { + "body": { + "nativeSrc": "1970:87:1", + "nodeType": "YulBlock", + "src": "1970:87:1", + "statements": [ + { + "nativeSrc": "1980:11:1", + "nodeType": "YulAssignment", + "src": "1980:11:1", + "value": { + "name": "ptr", + "nativeSrc": "1988:3:1", + "nodeType": "YulIdentifier", + "src": "1988:3:1" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "1980:4:1", + "nodeType": "YulIdentifier", + "src": "1980:4:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2008:1:1", + "nodeType": "YulLiteral", + "src": "2008:1:1", + "type": "", + "value": "0" + }, + { + "name": "ptr", + "nativeSrc": "2011:3:1", + "nodeType": "YulIdentifier", + "src": "2011:3:1" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "2001:6:1", + "nodeType": "YulIdentifier", + "src": "2001:6:1" + }, + "nativeSrc": "2001:14:1", + "nodeType": "YulFunctionCall", + "src": "2001:14:1" + }, + "nativeSrc": "2001:14:1", + "nodeType": "YulExpressionStatement", + "src": "2001:14:1" + }, + { + "nativeSrc": "2024:26:1", + "nodeType": "YulAssignment", + "src": "2024:26:1", + "value": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "2042:1:1", + "nodeType": "YulLiteral", + "src": "2042:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "2045:4:1", + "nodeType": "YulLiteral", + "src": "2045:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "keccak256", + "nativeSrc": "2032:9:1", + "nodeType": "YulIdentifier", + "src": "2032:9:1" + }, + "nativeSrc": "2032:18:1", + "nodeType": "YulFunctionCall", + "src": "2032:18:1" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "2024:4:1", + "nodeType": "YulIdentifier", + "src": "2024:4:1" + } + ] + } + ] + }, + "name": "array_dataslot_t_string_storage", + "nativeSrc": "1916:141:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "ptr", + "nativeSrc": "1957:3:1", + "nodeType": "YulTypedName", + "src": "1957:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "data", + "nativeSrc": "1965:4:1", + "nodeType": "YulTypedName", + "src": "1965:4:1", + "type": "" + } + ], + "src": "1916:141:1" + }, + { + "body": { + "nativeSrc": "2107:49:1", + "nodeType": "YulBlock", + "src": "2107:49:1", + "statements": [ + { + "nativeSrc": "2117:33:1", + "nodeType": "YulAssignment", + "src": "2117:33:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2135:5:1", + "nodeType": "YulIdentifier", + "src": "2135:5:1" + }, + { + "kind": "number", + "nativeSrc": "2142:2:1", + "nodeType": "YulLiteral", + "src": "2142:2:1", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "2131:3:1", + "nodeType": "YulIdentifier", + "src": "2131:3:1" + }, + "nativeSrc": "2131:14:1", + "nodeType": "YulFunctionCall", + "src": "2131:14:1" + }, + { + "kind": "number", + "nativeSrc": "2147:2:1", + "nodeType": "YulLiteral", + "src": "2147:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "div", + "nativeSrc": "2127:3:1", + "nodeType": "YulIdentifier", + "src": "2127:3:1" + }, + "nativeSrc": "2127:23:1", + "nodeType": "YulFunctionCall", + "src": "2127:23:1" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "2117:6:1", + "nodeType": "YulIdentifier", + "src": "2117:6:1" + } + ] + } + ] + }, + "name": "divide_by_32_ceil", + "nativeSrc": "2063:93:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2090:5:1", + "nodeType": "YulTypedName", + "src": "2090:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nativeSrc": "2100:6:1", + "nodeType": "YulTypedName", + "src": "2100:6:1", + "type": "" + } + ], + "src": "2063:93:1" + }, + { + "body": { + "nativeSrc": "2215:54:1", + "nodeType": "YulBlock", + "src": "2215:54:1", + "statements": [ + { + "nativeSrc": "2225:37:1", + "nodeType": "YulAssignment", + "src": "2225:37:1", + "value": { + "arguments": [ + { + "name": "bits", + "nativeSrc": "2250:4:1", + "nodeType": "YulIdentifier", + "src": "2250:4:1" + }, + { + "name": "value", + "nativeSrc": "2256:5:1", + "nodeType": "YulIdentifier", + "src": "2256:5:1" + } + ], + "functionName": { + "name": "shl", + "nativeSrc": "2246:3:1", + "nodeType": "YulIdentifier", + "src": "2246:3:1" + }, + "nativeSrc": "2246:16:1", + "nodeType": "YulFunctionCall", + "src": "2246:16:1" + }, + "variableNames": [ + { + "name": "newValue", + "nativeSrc": "2225:8:1", + "nodeType": "YulIdentifier", + "src": "2225:8:1" + } + ] + } + ] + }, + "name": "shift_left_dynamic", + "nativeSrc": "2162:107:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nativeSrc": "2190:4:1", + "nodeType": "YulTypedName", + "src": "2190:4:1", + "type": "" + }, + { + "name": "value", + "nativeSrc": "2196:5:1", + "nodeType": "YulTypedName", + "src": "2196:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nativeSrc": "2206:8:1", + "nodeType": "YulTypedName", + "src": "2206:8:1", + "type": "" + } + ], + "src": "2162:107:1" + }, + { + "body": { + "nativeSrc": "2351:317:1", + "nodeType": "YulBlock", + "src": "2351:317:1", + "statements": [ + { + "nativeSrc": "2361:35:1", + "nodeType": "YulVariableDeclaration", + "src": "2361:35:1", + "value": { + "arguments": [ + { + "name": "shiftBytes", + "nativeSrc": "2382:10:1", + "nodeType": "YulIdentifier", + "src": "2382:10:1" + }, + { + "kind": "number", + "nativeSrc": "2394:1:1", + "nodeType": "YulLiteral", + "src": "2394:1:1", + "type": "", + "value": "8" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "2378:3:1", + "nodeType": "YulIdentifier", + "src": "2378:3:1" + }, + "nativeSrc": "2378:18:1", + "nodeType": "YulFunctionCall", + "src": "2378:18:1" + }, + "variables": [ + { + "name": "shiftBits", + "nativeSrc": "2365:9:1", + "nodeType": "YulTypedName", + "src": "2365:9:1", + "type": "" + } + ] + }, + { + "nativeSrc": "2405:109:1", + "nodeType": "YulVariableDeclaration", + "src": "2405:109:1", + "value": { + "arguments": [ + { + "name": "shiftBits", + "nativeSrc": "2436:9:1", + "nodeType": "YulIdentifier", + "src": "2436:9:1" + }, + { + "kind": "number", + "nativeSrc": "2447:66:1", + "nodeType": "YulLiteral", + "src": "2447:66:1", + "type": "", + "value": "0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nativeSrc": "2417:18:1", + "nodeType": "YulIdentifier", + "src": "2417:18:1" + }, + "nativeSrc": "2417:97:1", + "nodeType": "YulFunctionCall", + "src": "2417:97:1" + }, + "variables": [ + { + "name": "mask", + "nativeSrc": "2409:4:1", + "nodeType": "YulTypedName", + "src": "2409:4:1", + "type": "" + } + ] + }, + { + "nativeSrc": "2523:51:1", + "nodeType": "YulAssignment", + "src": "2523:51:1", + "value": { + "arguments": [ + { + "name": "shiftBits", + "nativeSrc": "2554:9:1", + "nodeType": "YulIdentifier", + "src": "2554:9:1" + }, + { + "name": "toInsert", + "nativeSrc": "2565:8:1", + "nodeType": "YulIdentifier", + "src": "2565:8:1" + } + ], + "functionName": { + "name": "shift_left_dynamic", + "nativeSrc": "2535:18:1", + "nodeType": "YulIdentifier", + "src": "2535:18:1" + }, + "nativeSrc": "2535:39:1", + "nodeType": "YulFunctionCall", + "src": "2535:39:1" + }, + "variableNames": [ + { + "name": "toInsert", + "nativeSrc": "2523:8:1", + "nodeType": "YulIdentifier", + "src": "2523:8:1" + } + ] + }, + { + "nativeSrc": "2583:30:1", + "nodeType": "YulAssignment", + "src": "2583:30:1", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "2596:5:1", + "nodeType": "YulIdentifier", + "src": "2596:5:1" + }, + { + "arguments": [ + { + "name": "mask", + "nativeSrc": "2607:4:1", + "nodeType": "YulIdentifier", + "src": "2607:4:1" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "2603:3:1", + "nodeType": "YulIdentifier", + "src": "2603:3:1" + }, + "nativeSrc": "2603:9:1", + "nodeType": "YulFunctionCall", + "src": "2603:9:1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2592:3:1", + "nodeType": "YulIdentifier", + "src": "2592:3:1" + }, + "nativeSrc": "2592:21:1", + "nodeType": "YulFunctionCall", + "src": "2592:21:1" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "2583:5:1", + "nodeType": "YulIdentifier", + "src": "2583:5:1" + } + ] + }, + { + "nativeSrc": "2622:40:1", + "nodeType": "YulAssignment", + "src": "2622:40:1", + "value": { + "arguments": [ + { + "name": "value", + "nativeSrc": "2635:5:1", + "nodeType": "YulIdentifier", + "src": "2635:5:1" + }, + { + "arguments": [ + { + "name": "toInsert", + "nativeSrc": "2646:8:1", + "nodeType": "YulIdentifier", + "src": "2646:8:1" + }, + { + "name": "mask", + "nativeSrc": "2656:4:1", + "nodeType": "YulIdentifier", + "src": "2656:4:1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "2642:3:1", + "nodeType": "YulIdentifier", + "src": "2642:3:1" + }, + "nativeSrc": "2642:19:1", + "nodeType": "YulFunctionCall", + "src": "2642:19:1" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "2632:2:1", + "nodeType": "YulIdentifier", + "src": "2632:2:1" + }, + "nativeSrc": "2632:30:1", + "nodeType": "YulFunctionCall", + "src": "2632:30:1" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "2622:6:1", + "nodeType": "YulIdentifier", + "src": "2622:6:1" + } + ] + } + ] + }, + "name": "update_byte_slice_dynamic32", + "nativeSrc": "2275:393:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2312:5:1", + "nodeType": "YulTypedName", + "src": "2312:5:1", + "type": "" + }, + { + "name": "shiftBytes", + "nativeSrc": "2319:10:1", + "nodeType": "YulTypedName", + "src": "2319:10:1", + "type": "" + }, + { + "name": "toInsert", + "nativeSrc": "2331:8:1", + "nodeType": "YulTypedName", + "src": "2331:8:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nativeSrc": "2344:6:1", + "nodeType": "YulTypedName", + "src": "2344:6:1", + "type": "" + } + ], + "src": "2275:393:1" + }, + { + "body": { + "nativeSrc": "2719:32:1", + "nodeType": "YulBlock", + "src": "2719:32:1", + "statements": [ + { + "nativeSrc": "2729:16:1", + "nodeType": "YulAssignment", + "src": "2729:16:1", + "value": { + "name": "value", + "nativeSrc": "2740:5:1", + "nodeType": "YulIdentifier", + "src": "2740:5:1" + }, + "variableNames": [ + { + "name": "cleaned", + "nativeSrc": "2729:7:1", + "nodeType": "YulIdentifier", + "src": "2729:7:1" + } + ] + } + ] + }, + "name": "cleanup_t_uint256", + "nativeSrc": "2674:77:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2701:5:1", + "nodeType": "YulTypedName", + "src": "2701:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "cleaned", + "nativeSrc": "2711:7:1", + "nodeType": "YulTypedName", + "src": "2711:7:1", + "type": "" + } + ], + "src": "2674:77:1" + }, + { + "body": { + "nativeSrc": "2789:28:1", + "nodeType": "YulBlock", + "src": "2789:28:1", + "statements": [ + { + "nativeSrc": "2799:12:1", + "nodeType": "YulAssignment", + "src": "2799:12:1", + "value": { + "name": "value", + "nativeSrc": "2806:5:1", + "nodeType": "YulIdentifier", + "src": "2806:5:1" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "2799:3:1", + "nodeType": "YulIdentifier", + "src": "2799:3:1" + } + ] + } + ] + }, + "name": "identity", + "nativeSrc": "2757:60:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2775:5:1", + "nodeType": "YulTypedName", + "src": "2775:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nativeSrc": "2785:3:1", + "nodeType": "YulTypedName", + "src": "2785:3:1", + "type": "" + } + ], + "src": "2757:60:1" + }, + { + "body": { + "nativeSrc": "2883:82:1", + "nodeType": "YulBlock", + "src": "2883:82:1", + "statements": [ + { + "nativeSrc": "2893:66:1", + "nodeType": "YulAssignment", + "src": "2893:66:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "name": "value", + "nativeSrc": "2951:5:1", + "nodeType": "YulIdentifier", + "src": "2951:5:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "2933:17:1", + "nodeType": "YulIdentifier", + "src": "2933:17:1" + }, + "nativeSrc": "2933:24:1", + "nodeType": "YulFunctionCall", + "src": "2933:24:1" + } + ], + "functionName": { + "name": "identity", + "nativeSrc": "2924:8:1", + "nodeType": "YulIdentifier", + "src": "2924:8:1" + }, + "nativeSrc": "2924:34:1", + "nodeType": "YulFunctionCall", + "src": "2924:34:1" + } + ], + "functionName": { + "name": "cleanup_t_uint256", + "nativeSrc": "2906:17:1", + "nodeType": "YulIdentifier", + "src": "2906:17:1" + }, + "nativeSrc": "2906:53:1", + "nodeType": "YulFunctionCall", + "src": "2906:53:1" + }, + "variableNames": [ + { + "name": "converted", + "nativeSrc": "2893:9:1", + "nodeType": "YulIdentifier", + "src": "2893:9:1" + } + ] + } + ] + }, + "name": "convert_t_uint256_to_t_uint256", + "nativeSrc": "2823:142:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "2863:5:1", + "nodeType": "YulTypedName", + "src": "2863:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "converted", + "nativeSrc": "2873:9:1", + "nodeType": "YulTypedName", + "src": "2873:9:1", + "type": "" + } + ], + "src": "2823:142:1" + }, + { + "body": { + "nativeSrc": "3018:28:1", + "nodeType": "YulBlock", + "src": "3018:28:1", + "statements": [ + { + "nativeSrc": "3028:12:1", + "nodeType": "YulAssignment", + "src": "3028:12:1", + "value": { + "name": "value", + "nativeSrc": "3035:5:1", + "nodeType": "YulIdentifier", + "src": "3035:5:1" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "3028:3:1", + "nodeType": "YulIdentifier", + "src": "3028:3:1" + } + ] + } + ] + }, + "name": "prepare_store_t_uint256", + "nativeSrc": "2971:75:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "value", + "nativeSrc": "3004:5:1", + "nodeType": "YulTypedName", + "src": "3004:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "ret", + "nativeSrc": "3014:3:1", + "nodeType": "YulTypedName", + "src": "3014:3:1", + "type": "" + } + ], + "src": "2971:75:1" + }, + { + "body": { + "nativeSrc": "3128:193:1", + "nodeType": "YulBlock", + "src": "3128:193:1", + "statements": [ + { + "nativeSrc": "3138:63:1", + "nodeType": "YulVariableDeclaration", + "src": "3138:63:1", + "value": { + "arguments": [ + { + "name": "value_0", + "nativeSrc": "3193:7:1", + "nodeType": "YulIdentifier", + "src": "3193:7:1" + } + ], + "functionName": { + "name": "convert_t_uint256_to_t_uint256", + "nativeSrc": "3162:30:1", + "nodeType": "YulIdentifier", + "src": "3162:30:1" + }, + "nativeSrc": "3162:39:1", + "nodeType": "YulFunctionCall", + "src": "3162:39:1" + }, + "variables": [ + { + "name": "convertedValue_0", + "nativeSrc": "3142:16:1", + "nodeType": "YulTypedName", + "src": "3142:16:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "3217:4:1", + "nodeType": "YulIdentifier", + "src": "3217:4:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "3257:4:1", + "nodeType": "YulIdentifier", + "src": "3257:4:1" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "3251:5:1", + "nodeType": "YulIdentifier", + "src": "3251:5:1" + }, + "nativeSrc": "3251:11:1", + "nodeType": "YulFunctionCall", + "src": "3251:11:1" + }, + { + "name": "offset", + "nativeSrc": "3264:6:1", + "nodeType": "YulIdentifier", + "src": "3264:6:1" + }, + { + "arguments": [ + { + "name": "convertedValue_0", + "nativeSrc": "3296:16:1", + "nodeType": "YulIdentifier", + "src": "3296:16:1" + } + ], + "functionName": { + "name": "prepare_store_t_uint256", + "nativeSrc": "3272:23:1", + "nodeType": "YulIdentifier", + "src": "3272:23:1" + }, + "nativeSrc": "3272:41:1", + "nodeType": "YulFunctionCall", + "src": "3272:41:1" + } + ], + "functionName": { + "name": "update_byte_slice_dynamic32", + "nativeSrc": "3223:27:1", + "nodeType": "YulIdentifier", + "src": "3223:27:1" + }, + "nativeSrc": "3223:91:1", + "nodeType": "YulFunctionCall", + "src": "3223:91:1" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "3210:6:1", + "nodeType": "YulIdentifier", + "src": "3210:6:1" + }, + "nativeSrc": "3210:105:1", + "nodeType": "YulFunctionCall", + "src": "3210:105:1" + }, + "nativeSrc": "3210:105:1", + "nodeType": "YulExpressionStatement", + "src": "3210:105:1" + } + ] + }, + "name": "update_storage_value_t_uint256_to_t_uint256", + "nativeSrc": "3052:269:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "3105:4:1", + "nodeType": "YulTypedName", + "src": "3105:4:1", + "type": "" + }, + { + "name": "offset", + "nativeSrc": "3111:6:1", + "nodeType": "YulTypedName", + "src": "3111:6:1", + "type": "" + }, + { + "name": "value_0", + "nativeSrc": "3119:7:1", + "nodeType": "YulTypedName", + "src": "3119:7:1", + "type": "" + } + ], + "src": "3052:269:1" + }, + { + "body": { + "nativeSrc": "3376:24:1", + "nodeType": "YulBlock", + "src": "3376:24:1", + "statements": [ + { + "nativeSrc": "3386:8:1", + "nodeType": "YulAssignment", + "src": "3386:8:1", + "value": { + "kind": "number", + "nativeSrc": "3393:1:1", + "nodeType": "YulLiteral", + "src": "3393:1:1", + "type": "", + "value": "0" + }, + "variableNames": [ + { + "name": "ret", + "nativeSrc": "3386:3:1", + "nodeType": "YulIdentifier", + "src": "3386:3:1" + } + ] + } + ] + }, + "name": "zero_value_for_split_t_uint256", + "nativeSrc": "3327:73:1", + "nodeType": "YulFunctionDefinition", + "returnVariables": [ + { + "name": "ret", + "nativeSrc": "3372:3:1", + "nodeType": "YulTypedName", + "src": "3372:3:1", + "type": "" + } + ], + "src": "3327:73:1" + }, + { + "body": { + "nativeSrc": "3459:136:1", + "nodeType": "YulBlock", + "src": "3459:136:1", + "statements": [ + { + "nativeSrc": "3469:46:1", + "nodeType": "YulVariableDeclaration", + "src": "3469:46:1", + "value": { + "arguments": [], + "functionName": { + "name": "zero_value_for_split_t_uint256", + "nativeSrc": "3483:30:1", + "nodeType": "YulIdentifier", + "src": "3483:30:1" + }, + "nativeSrc": "3483:32:1", + "nodeType": "YulFunctionCall", + "src": "3483:32:1" + }, + "variables": [ + { + "name": "zero_0", + "nativeSrc": "3473:6:1", + "nodeType": "YulTypedName", + "src": "3473:6:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "3568:4:1", + "nodeType": "YulIdentifier", + "src": "3568:4:1" + }, + { + "name": "offset", + "nativeSrc": "3574:6:1", + "nodeType": "YulIdentifier", + "src": "3574:6:1" + }, + { + "name": "zero_0", + "nativeSrc": "3582:6:1", + "nodeType": "YulIdentifier", + "src": "3582:6:1" + } + ], + "functionName": { + "name": "update_storage_value_t_uint256_to_t_uint256", + "nativeSrc": "3524:43:1", + "nodeType": "YulIdentifier", + "src": "3524:43:1" + }, + "nativeSrc": "3524:65:1", + "nodeType": "YulFunctionCall", + "src": "3524:65:1" + }, + "nativeSrc": "3524:65:1", + "nodeType": "YulExpressionStatement", + "src": "3524:65:1" + } + ] + }, + "name": "storage_set_to_zero_t_uint256", + "nativeSrc": "3406:189:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "3445:4:1", + "nodeType": "YulTypedName", + "src": "3445:4:1", + "type": "" + }, + { + "name": "offset", + "nativeSrc": "3451:6:1", + "nodeType": "YulTypedName", + "src": "3451:6:1", + "type": "" + } + ], + "src": "3406:189:1" + }, + { + "body": { + "nativeSrc": "3651:136:1", + "nodeType": "YulBlock", + "src": "3651:136:1", + "statements": [ + { + "body": { + "nativeSrc": "3718:63:1", + "nodeType": "YulBlock", + "src": "3718:63:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "start", + "nativeSrc": "3762:5:1", + "nodeType": "YulIdentifier", + "src": "3762:5:1" + }, + { + "kind": "number", + "nativeSrc": "3769:1:1", + "nodeType": "YulLiteral", + "src": "3769:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "storage_set_to_zero_t_uint256", + "nativeSrc": "3732:29:1", + "nodeType": "YulIdentifier", + "src": "3732:29:1" + }, + "nativeSrc": "3732:39:1", + "nodeType": "YulFunctionCall", + "src": "3732:39:1" + }, + "nativeSrc": "3732:39:1", + "nodeType": "YulExpressionStatement", + "src": "3732:39:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "start", + "nativeSrc": "3671:5:1", + "nodeType": "YulIdentifier", + "src": "3671:5:1" + }, + { + "name": "end", + "nativeSrc": "3678:3:1", + "nodeType": "YulIdentifier", + "src": "3678:3:1" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "3668:2:1", + "nodeType": "YulIdentifier", + "src": "3668:2:1" + }, + "nativeSrc": "3668:14:1", + "nodeType": "YulFunctionCall", + "src": "3668:14:1" + }, + "nativeSrc": "3661:120:1", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "3683:26:1", + "nodeType": "YulBlock", + "src": "3683:26:1", + "statements": [ + { + "nativeSrc": "3685:22:1", + "nodeType": "YulAssignment", + "src": "3685:22:1", + "value": { + "arguments": [ + { + "name": "start", + "nativeSrc": "3698:5:1", + "nodeType": "YulIdentifier", + "src": "3698:5:1" + }, + { + "kind": "number", + "nativeSrc": "3705:1:1", + "nodeType": "YulLiteral", + "src": "3705:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3694:3:1", + "nodeType": "YulIdentifier", + "src": "3694:3:1" + }, + "nativeSrc": "3694:13:1", + "nodeType": "YulFunctionCall", + "src": "3694:13:1" + }, + "variableNames": [ + { + "name": "start", + "nativeSrc": "3685:5:1", + "nodeType": "YulIdentifier", + "src": "3685:5:1" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "3665:2:1", + "nodeType": "YulBlock", + "src": "3665:2:1", + "statements": [] + }, + "src": "3661:120:1" + } + ] + }, + "name": "clear_storage_range_t_bytes1", + "nativeSrc": "3601:186:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "start", + "nativeSrc": "3639:5:1", + "nodeType": "YulTypedName", + "src": "3639:5:1", + "type": "" + }, + { + "name": "end", + "nativeSrc": "3646:3:1", + "nodeType": "YulTypedName", + "src": "3646:3:1", + "type": "" + } + ], + "src": "3601:186:1" + }, + { + "body": { + "nativeSrc": "3872:464:1", + "nodeType": "YulBlock", + "src": "3872:464:1", + "statements": [ + { + "body": { + "nativeSrc": "3898:431:1", + "nodeType": "YulBlock", + "src": "3898:431:1", + "statements": [ + { + "nativeSrc": "3912:54:1", + "nodeType": "YulVariableDeclaration", + "src": "3912:54:1", + "value": { + "arguments": [ + { + "name": "array", + "nativeSrc": "3960:5:1", + "nodeType": "YulIdentifier", + "src": "3960:5:1" + } + ], + "functionName": { + "name": "array_dataslot_t_string_storage", + "nativeSrc": "3928:31:1", + "nodeType": "YulIdentifier", + "src": "3928:31:1" + }, + "nativeSrc": "3928:38:1", + "nodeType": "YulFunctionCall", + "src": "3928:38:1" + }, + "variables": [ + { + "name": "dataArea", + "nativeSrc": "3916:8:1", + "nodeType": "YulTypedName", + "src": "3916:8:1", + "type": "" + } + ] + }, + { + "nativeSrc": "3979:63:1", + "nodeType": "YulVariableDeclaration", + "src": "3979:63:1", + "value": { + "arguments": [ + { + "name": "dataArea", + "nativeSrc": "4002:8:1", + "nodeType": "YulIdentifier", + "src": "4002:8:1" + }, + { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "4030:10:1", + "nodeType": "YulIdentifier", + "src": "4030:10:1" + } + ], + "functionName": { + "name": "divide_by_32_ceil", + "nativeSrc": "4012:17:1", + "nodeType": "YulIdentifier", + "src": "4012:17:1" + }, + "nativeSrc": "4012:29:1", + "nodeType": "YulFunctionCall", + "src": "4012:29:1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "3998:3:1", + "nodeType": "YulIdentifier", + "src": "3998:3:1" + }, + "nativeSrc": "3998:44:1", + "nodeType": "YulFunctionCall", + "src": "3998:44:1" + }, + "variables": [ + { + "name": "deleteStart", + "nativeSrc": "3983:11:1", + "nodeType": "YulTypedName", + "src": "3983:11:1", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "4199:27:1", + "nodeType": "YulBlock", + "src": "4199:27:1", + "statements": [ + { + "nativeSrc": "4201:23:1", + "nodeType": "YulAssignment", + "src": "4201:23:1", + "value": { + "name": "dataArea", + "nativeSrc": "4216:8:1", + "nodeType": "YulIdentifier", + "src": "4216:8:1" + }, + "variableNames": [ + { + "name": "deleteStart", + "nativeSrc": "4201:11:1", + "nodeType": "YulIdentifier", + "src": "4201:11:1" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "startIndex", + "nativeSrc": "4183:10:1", + "nodeType": "YulIdentifier", + "src": "4183:10:1" + }, + { + "kind": "number", + "nativeSrc": "4195:2:1", + "nodeType": "YulLiteral", + "src": "4195:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "4180:2:1", + "nodeType": "YulIdentifier", + "src": "4180:2:1" + }, + "nativeSrc": "4180:18:1", + "nodeType": "YulFunctionCall", + "src": "4180:18:1" + }, + "nativeSrc": "4177:49:1", + "nodeType": "YulIf", + "src": "4177:49:1" + }, + { + "expression": { + "arguments": [ + { + "name": "deleteStart", + "nativeSrc": "4268:11:1", + "nodeType": "YulIdentifier", + "src": "4268:11:1" + }, + { + "arguments": [ + { + "name": "dataArea", + "nativeSrc": "4285:8:1", + "nodeType": "YulIdentifier", + "src": "4285:8:1" + }, + { + "arguments": [ + { + "name": "len", + "nativeSrc": "4313:3:1", + "nodeType": "YulIdentifier", + "src": "4313:3:1" + } + ], + "functionName": { + "name": "divide_by_32_ceil", + "nativeSrc": "4295:17:1", + "nodeType": "YulIdentifier", + "src": "4295:17:1" + }, + "nativeSrc": "4295:22:1", + "nodeType": "YulFunctionCall", + "src": "4295:22:1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "4281:3:1", + "nodeType": "YulIdentifier", + "src": "4281:3:1" + }, + "nativeSrc": "4281:37:1", + "nodeType": "YulFunctionCall", + "src": "4281:37:1" + } + ], + "functionName": { + "name": "clear_storage_range_t_bytes1", + "nativeSrc": "4239:28:1", + "nodeType": "YulIdentifier", + "src": "4239:28:1" + }, + "nativeSrc": "4239:80:1", + "nodeType": "YulFunctionCall", + "src": "4239:80:1" + }, + "nativeSrc": "4239:80:1", + "nodeType": "YulExpressionStatement", + "src": "4239:80:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "len", + "nativeSrc": "3889:3:1", + "nodeType": "YulIdentifier", + "src": "3889:3:1" + }, + { + "kind": "number", + "nativeSrc": "3894:2:1", + "nodeType": "YulLiteral", + "src": "3894:2:1", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "3886:2:1", + "nodeType": "YulIdentifier", + "src": "3886:2:1" + }, + "nativeSrc": "3886:11:1", + "nodeType": "YulFunctionCall", + "src": "3886:11:1" + }, + "nativeSrc": "3883:446:1", + "nodeType": "YulIf", + "src": "3883:446:1" + } + ] + }, + "name": "clean_up_bytearray_end_slots_t_string_storage", + "nativeSrc": "3793:543:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "array", + "nativeSrc": "3848:5:1", + "nodeType": "YulTypedName", + "src": "3848:5:1", + "type": "" + }, + { + "name": "len", + "nativeSrc": "3855:3:1", + "nodeType": "YulTypedName", + "src": "3855:3:1", + "type": "" + }, + { + "name": "startIndex", + "nativeSrc": "3860:10:1", + "nodeType": "YulTypedName", + "src": "3860:10:1", + "type": "" + } + ], + "src": "3793:543:1" + }, + { + "body": { + "nativeSrc": "4405:54:1", + "nodeType": "YulBlock", + "src": "4405:54:1", + "statements": [ + { + "nativeSrc": "4415:37:1", + "nodeType": "YulAssignment", + "src": "4415:37:1", + "value": { + "arguments": [ + { + "name": "bits", + "nativeSrc": "4440:4:1", + "nodeType": "YulIdentifier", + "src": "4440:4:1" + }, + { + "name": "value", + "nativeSrc": "4446:5:1", + "nodeType": "YulIdentifier", + "src": "4446:5:1" + } + ], + "functionName": { + "name": "shr", + "nativeSrc": "4436:3:1", + "nodeType": "YulIdentifier", + "src": "4436:3:1" + }, + "nativeSrc": "4436:16:1", + "nodeType": "YulFunctionCall", + "src": "4436:16:1" + }, + "variableNames": [ + { + "name": "newValue", + "nativeSrc": "4415:8:1", + "nodeType": "YulIdentifier", + "src": "4415:8:1" + } + ] + } + ] + }, + "name": "shift_right_unsigned_dynamic", + "nativeSrc": "4342:117:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "bits", + "nativeSrc": "4380:4:1", + "nodeType": "YulTypedName", + "src": "4380:4:1", + "type": "" + }, + { + "name": "value", + "nativeSrc": "4386:5:1", + "nodeType": "YulTypedName", + "src": "4386:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "newValue", + "nativeSrc": "4396:8:1", + "nodeType": "YulTypedName", + "src": "4396:8:1", + "type": "" + } + ], + "src": "4342:117:1" + }, + { + "body": { + "nativeSrc": "4516:118:1", + "nodeType": "YulBlock", + "src": "4516:118:1", + "statements": [ + { + "nativeSrc": "4526:68:1", + "nodeType": "YulVariableDeclaration", + "src": "4526:68:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4575:1:1", + "nodeType": "YulLiteral", + "src": "4575:1:1", + "type": "", + "value": "8" + }, + { + "name": "bytes", + "nativeSrc": "4578:5:1", + "nodeType": "YulIdentifier", + "src": "4578:5:1" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "4571:3:1", + "nodeType": "YulIdentifier", + "src": "4571:3:1" + }, + "nativeSrc": "4571:13:1", + "nodeType": "YulFunctionCall", + "src": "4571:13:1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4590:1:1", + "nodeType": "YulLiteral", + "src": "4590:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "4586:3:1", + "nodeType": "YulIdentifier", + "src": "4586:3:1" + }, + "nativeSrc": "4586:6:1", + "nodeType": "YulFunctionCall", + "src": "4586:6:1" + } + ], + "functionName": { + "name": "shift_right_unsigned_dynamic", + "nativeSrc": "4542:28:1", + "nodeType": "YulIdentifier", + "src": "4542:28:1" + }, + "nativeSrc": "4542:51:1", + "nodeType": "YulFunctionCall", + "src": "4542:51:1" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "4538:3:1", + "nodeType": "YulIdentifier", + "src": "4538:3:1" + }, + "nativeSrc": "4538:56:1", + "nodeType": "YulFunctionCall", + "src": "4538:56:1" + }, + "variables": [ + { + "name": "mask", + "nativeSrc": "4530:4:1", + "nodeType": "YulTypedName", + "src": "4530:4:1", + "type": "" + } + ] + }, + { + "nativeSrc": "4603:25:1", + "nodeType": "YulAssignment", + "src": "4603:25:1", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "4617:4:1", + "nodeType": "YulIdentifier", + "src": "4617:4:1" + }, + { + "name": "mask", + "nativeSrc": "4623:4:1", + "nodeType": "YulIdentifier", + "src": "4623:4:1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "4613:3:1", + "nodeType": "YulIdentifier", + "src": "4613:3:1" + }, + "nativeSrc": "4613:15:1", + "nodeType": "YulFunctionCall", + "src": "4613:15:1" + }, + "variableNames": [ + { + "name": "result", + "nativeSrc": "4603:6:1", + "nodeType": "YulIdentifier", + "src": "4603:6:1" + } + ] + } + ] + }, + "name": "mask_bytes_dynamic", + "nativeSrc": "4465:169:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "4493:4:1", + "nodeType": "YulTypedName", + "src": "4493:4:1", + "type": "" + }, + { + "name": "bytes", + "nativeSrc": "4499:5:1", + "nodeType": "YulTypedName", + "src": "4499:5:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "result", + "nativeSrc": "4509:6:1", + "nodeType": "YulTypedName", + "src": "4509:6:1", + "type": "" + } + ], + "src": "4465:169:1" + }, + { + "body": { + "nativeSrc": "4720:214:1", + "nodeType": "YulBlock", + "src": "4720:214:1", + "statements": [ + { + "nativeSrc": "4853:37:1", + "nodeType": "YulAssignment", + "src": "4853:37:1", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "4880:4:1", + "nodeType": "YulIdentifier", + "src": "4880:4:1" + }, + { + "name": "len", + "nativeSrc": "4886:3:1", + "nodeType": "YulIdentifier", + "src": "4886:3:1" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nativeSrc": "4861:18:1", + "nodeType": "YulIdentifier", + "src": "4861:18:1" + }, + "nativeSrc": "4861:29:1", + "nodeType": "YulFunctionCall", + "src": "4861:29:1" + }, + "variableNames": [ + { + "name": "data", + "nativeSrc": "4853:4:1", + "nodeType": "YulIdentifier", + "src": "4853:4:1" + } + ] + }, + { + "nativeSrc": "4899:29:1", + "nodeType": "YulAssignment", + "src": "4899:29:1", + "value": { + "arguments": [ + { + "name": "data", + "nativeSrc": "4910:4:1", + "nodeType": "YulIdentifier", + "src": "4910:4:1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "4920:1:1", + "nodeType": "YulLiteral", + "src": "4920:1:1", + "type": "", + "value": "2" + }, + { + "name": "len", + "nativeSrc": "4923:3:1", + "nodeType": "YulIdentifier", + "src": "4923:3:1" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "4916:3:1", + "nodeType": "YulIdentifier", + "src": "4916:3:1" + }, + "nativeSrc": "4916:11:1", + "nodeType": "YulFunctionCall", + "src": "4916:11:1" + } + ], + "functionName": { + "name": "or", + "nativeSrc": "4907:2:1", + "nodeType": "YulIdentifier", + "src": "4907:2:1" + }, + "nativeSrc": "4907:21:1", + "nodeType": "YulFunctionCall", + "src": "4907:21:1" + }, + "variableNames": [ + { + "name": "used", + "nativeSrc": "4899:4:1", + "nodeType": "YulIdentifier", + "src": "4899:4:1" + } + ] + } + ] + }, + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "4639:295:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "data", + "nativeSrc": "4701:4:1", + "nodeType": "YulTypedName", + "src": "4701:4:1", + "type": "" + }, + { + "name": "len", + "nativeSrc": "4707:3:1", + "nodeType": "YulTypedName", + "src": "4707:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "used", + "nativeSrc": "4715:4:1", + "nodeType": "YulTypedName", + "src": "4715:4:1", + "type": "" + } + ], + "src": "4639:295:1" + }, + { + "body": { + "nativeSrc": "5031:1303:1", + "nodeType": "YulBlock", + "src": "5031:1303:1", + "statements": [ + { + "nativeSrc": "5042:51:1", + "nodeType": "YulVariableDeclaration", + "src": "5042:51:1", + "value": { + "arguments": [ + { + "name": "src", + "nativeSrc": "5089:3:1", + "nodeType": "YulIdentifier", + "src": "5089:3:1" + } + ], + "functionName": { + "name": "array_length_t_string_memory_ptr", + "nativeSrc": "5056:32:1", + "nodeType": "YulIdentifier", + "src": "5056:32:1" + }, + "nativeSrc": "5056:37:1", + "nodeType": "YulFunctionCall", + "src": "5056:37:1" + }, + "variables": [ + { + "name": "newLen", + "nativeSrc": "5046:6:1", + "nodeType": "YulTypedName", + "src": "5046:6:1", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5178:22:1", + "nodeType": "YulBlock", + "src": "5178:22:1", + "statements": [ + { + "expression": { + "arguments": [], + "functionName": { + "name": "panic_error_0x41", + "nativeSrc": "5180:16:1", + "nodeType": "YulIdentifier", + "src": "5180:16:1" + }, + "nativeSrc": "5180:18:1", + "nodeType": "YulFunctionCall", + "src": "5180:18:1" + }, + "nativeSrc": "5180:18:1", + "nodeType": "YulExpressionStatement", + "src": "5180:18:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "5150:6:1", + "nodeType": "YulIdentifier", + "src": "5150:6:1" + }, + { + "kind": "number", + "nativeSrc": "5158:18:1", + "nodeType": "YulLiteral", + "src": "5158:18:1", + "type": "", + "value": "0xffffffffffffffff" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5147:2:1", + "nodeType": "YulIdentifier", + "src": "5147:2:1" + }, + "nativeSrc": "5147:30:1", + "nodeType": "YulFunctionCall", + "src": "5147:30:1" + }, + "nativeSrc": "5144:56:1", + "nodeType": "YulIf", + "src": "5144:56:1" + }, + { + "nativeSrc": "5210:52:1", + "nodeType": "YulVariableDeclaration", + "src": "5210:52:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "slot", + "nativeSrc": "5256:4:1", + "nodeType": "YulIdentifier", + "src": "5256:4:1" + } + ], + "functionName": { + "name": "sload", + "nativeSrc": "5250:5:1", + "nodeType": "YulIdentifier", + "src": "5250:5:1" + }, + "nativeSrc": "5250:11:1", + "nodeType": "YulFunctionCall", + "src": "5250:11:1" + } + ], + "functionName": { + "name": "extract_byte_array_length", + "nativeSrc": "5224:25:1", + "nodeType": "YulIdentifier", + "src": "5224:25:1" + }, + "nativeSrc": "5224:38:1", + "nodeType": "YulFunctionCall", + "src": "5224:38:1" + }, + "variables": [ + { + "name": "oldLen", + "nativeSrc": "5214:6:1", + "nodeType": "YulTypedName", + "src": "5214:6:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "5355:4:1", + "nodeType": "YulIdentifier", + "src": "5355:4:1" + }, + { + "name": "oldLen", + "nativeSrc": "5361:6:1", + "nodeType": "YulIdentifier", + "src": "5361:6:1" + }, + { + "name": "newLen", + "nativeSrc": "5369:6:1", + "nodeType": "YulIdentifier", + "src": "5369:6:1" + } + ], + "functionName": { + "name": "clean_up_bytearray_end_slots_t_string_storage", + "nativeSrc": "5309:45:1", + "nodeType": "YulIdentifier", + "src": "5309:45:1" + }, + "nativeSrc": "5309:67:1", + "nodeType": "YulFunctionCall", + "src": "5309:67:1" + }, + "nativeSrc": "5309:67:1", + "nodeType": "YulExpressionStatement", + "src": "5309:67:1" + }, + { + "nativeSrc": "5386:18:1", + "nodeType": "YulVariableDeclaration", + "src": "5386:18:1", + "value": { + "kind": "number", + "nativeSrc": "5403:1:1", + "nodeType": "YulLiteral", + "src": "5403:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "srcOffset", + "nativeSrc": "5390:9:1", + "nodeType": "YulTypedName", + "src": "5390:9:1", + "type": "" + } + ] + }, + { + "nativeSrc": "5414:17:1", + "nodeType": "YulAssignment", + "src": "5414:17:1", + "value": { + "kind": "number", + "nativeSrc": "5427:4:1", + "nodeType": "YulLiteral", + "src": "5427:4:1", + "type": "", + "value": "0x20" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "5414:9:1", + "nodeType": "YulIdentifier", + "src": "5414:9:1" + } + ] + }, + { + "cases": [ + { + "body": { + "nativeSrc": "5478:611:1", + "nodeType": "YulBlock", + "src": "5478:611:1", + "statements": [ + { + "nativeSrc": "5492:37:1", + "nodeType": "YulVariableDeclaration", + "src": "5492:37:1", + "value": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "5511:6:1", + "nodeType": "YulIdentifier", + "src": "5511:6:1" + }, + { + "arguments": [ + { + "kind": "number", + "nativeSrc": "5523:4:1", + "nodeType": "YulLiteral", + "src": "5523:4:1", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "not", + "nativeSrc": "5519:3:1", + "nodeType": "YulIdentifier", + "src": "5519:3:1" + }, + "nativeSrc": "5519:9:1", + "nodeType": "YulFunctionCall", + "src": "5519:9:1" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "5507:3:1", + "nodeType": "YulIdentifier", + "src": "5507:3:1" + }, + "nativeSrc": "5507:22:1", + "nodeType": "YulFunctionCall", + "src": "5507:22:1" + }, + "variables": [ + { + "name": "loopEnd", + "nativeSrc": "5496:7:1", + "nodeType": "YulTypedName", + "src": "5496:7:1", + "type": "" + } + ] + }, + { + "nativeSrc": "5543:51:1", + "nodeType": "YulVariableDeclaration", + "src": "5543:51:1", + "value": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "5589:4:1", + "nodeType": "YulIdentifier", + "src": "5589:4:1" + } + ], + "functionName": { + "name": "array_dataslot_t_string_storage", + "nativeSrc": "5557:31:1", + "nodeType": "YulIdentifier", + "src": "5557:31:1" + }, + "nativeSrc": "5557:37:1", + "nodeType": "YulFunctionCall", + "src": "5557:37:1" + }, + "variables": [ + { + "name": "dstPtr", + "nativeSrc": "5547:6:1", + "nodeType": "YulTypedName", + "src": "5547:6:1", + "type": "" + } + ] + }, + { + "nativeSrc": "5607:10:1", + "nodeType": "YulVariableDeclaration", + "src": "5607:10:1", + "value": { + "kind": "number", + "nativeSrc": "5616:1:1", + "nodeType": "YulLiteral", + "src": "5616:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "i", + "nativeSrc": "5611:1:1", + "nodeType": "YulTypedName", + "src": "5611:1:1", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "5675:163:1", + "nodeType": "YulBlock", + "src": "5675:163:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "5700:6:1", + "nodeType": "YulIdentifier", + "src": "5700:6:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "5718:3:1", + "nodeType": "YulIdentifier", + "src": "5718:3:1" + }, + { + "name": "srcOffset", + "nativeSrc": "5723:9:1", + "nodeType": "YulIdentifier", + "src": "5723:9:1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5714:3:1", + "nodeType": "YulIdentifier", + "src": "5714:3:1" + }, + "nativeSrc": "5714:19:1", + "nodeType": "YulFunctionCall", + "src": "5714:19:1" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "5708:5:1", + "nodeType": "YulIdentifier", + "src": "5708:5:1" + }, + "nativeSrc": "5708:26:1", + "nodeType": "YulFunctionCall", + "src": "5708:26:1" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "5693:6:1", + "nodeType": "YulIdentifier", + "src": "5693:6:1" + }, + "nativeSrc": "5693:42:1", + "nodeType": "YulFunctionCall", + "src": "5693:42:1" + }, + "nativeSrc": "5693:42:1", + "nodeType": "YulExpressionStatement", + "src": "5693:42:1" + }, + { + "nativeSrc": "5752:24:1", + "nodeType": "YulAssignment", + "src": "5752:24:1", + "value": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "5766:6:1", + "nodeType": "YulIdentifier", + "src": "5766:6:1" + }, + { + "kind": "number", + "nativeSrc": "5774:1:1", + "nodeType": "YulLiteral", + "src": "5774:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5762:3:1", + "nodeType": "YulIdentifier", + "src": "5762:3:1" + }, + "nativeSrc": "5762:14:1", + "nodeType": "YulFunctionCall", + "src": "5762:14:1" + }, + "variableNames": [ + { + "name": "dstPtr", + "nativeSrc": "5752:6:1", + "nodeType": "YulIdentifier", + "src": "5752:6:1" + } + ] + }, + { + "nativeSrc": "5793:31:1", + "nodeType": "YulAssignment", + "src": "5793:31:1", + "value": { + "arguments": [ + { + "name": "srcOffset", + "nativeSrc": "5810:9:1", + "nodeType": "YulIdentifier", + "src": "5810:9:1" + }, + { + "kind": "number", + "nativeSrc": "5821:2:1", + "nodeType": "YulLiteral", + "src": "5821:2:1", + "type": "", + "value": "32" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5806:3:1", + "nodeType": "YulIdentifier", + "src": "5806:3:1" + }, + "nativeSrc": "5806:18:1", + "nodeType": "YulFunctionCall", + "src": "5806:18:1" + }, + "variableNames": [ + { + "name": "srcOffset", + "nativeSrc": "5793:9:1", + "nodeType": "YulIdentifier", + "src": "5793:9:1" + } + ] + } + ] + }, + "condition": { + "arguments": [ + { + "name": "i", + "nativeSrc": "5641:1:1", + "nodeType": "YulIdentifier", + "src": "5641:1:1" + }, + { + "name": "loopEnd", + "nativeSrc": "5644:7:1", + "nodeType": "YulIdentifier", + "src": "5644:7:1" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "5638:2:1", + "nodeType": "YulIdentifier", + "src": "5638:2:1" + }, + "nativeSrc": "5638:14:1", + "nodeType": "YulFunctionCall", + "src": "5638:14:1" + }, + "nativeSrc": "5630:208:1", + "nodeType": "YulForLoop", + "post": { + "nativeSrc": "5653:21:1", + "nodeType": "YulBlock", + "src": "5653:21:1", + "statements": [ + { + "nativeSrc": "5655:17:1", + "nodeType": "YulAssignment", + "src": "5655:17:1", + "value": { + "arguments": [ + { + "name": "i", + "nativeSrc": "5664:1:1", + "nodeType": "YulIdentifier", + "src": "5664:1:1" + }, + { + "kind": "number", + "nativeSrc": "5667:4:1", + "nodeType": "YulLiteral", + "src": "5667:4:1", + "type": "", + "value": "0x20" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5660:3:1", + "nodeType": "YulIdentifier", + "src": "5660:3:1" + }, + "nativeSrc": "5660:12:1", + "nodeType": "YulFunctionCall", + "src": "5660:12:1" + }, + "variableNames": [ + { + "name": "i", + "nativeSrc": "5655:1:1", + "nodeType": "YulIdentifier", + "src": "5655:1:1" + } + ] + } + ] + }, + "pre": { + "nativeSrc": "5634:3:1", + "nodeType": "YulBlock", + "src": "5634:3:1", + "statements": [] + }, + "src": "5630:208:1" + }, + { + "body": { + "nativeSrc": "5874:156:1", + "nodeType": "YulBlock", + "src": "5874:156:1", + "statements": [ + { + "nativeSrc": "5892:43:1", + "nodeType": "YulVariableDeclaration", + "src": "5892:43:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "5919:3:1", + "nodeType": "YulIdentifier", + "src": "5919:3:1" + }, + { + "name": "srcOffset", + "nativeSrc": "5924:9:1", + "nodeType": "YulIdentifier", + "src": "5924:9:1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "5915:3:1", + "nodeType": "YulIdentifier", + "src": "5915:3:1" + }, + "nativeSrc": "5915:19:1", + "nodeType": "YulFunctionCall", + "src": "5915:19:1" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "5909:5:1", + "nodeType": "YulIdentifier", + "src": "5909:5:1" + }, + "nativeSrc": "5909:26:1", + "nodeType": "YulFunctionCall", + "src": "5909:26:1" + }, + "variables": [ + { + "name": "lastValue", + "nativeSrc": "5896:9:1", + "nodeType": "YulTypedName", + "src": "5896:9:1", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "dstPtr", + "nativeSrc": "5959:6:1", + "nodeType": "YulIdentifier", + "src": "5959:6:1" + }, + { + "arguments": [ + { + "name": "lastValue", + "nativeSrc": "5986:9:1", + "nodeType": "YulIdentifier", + "src": "5986:9:1" + }, + { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "6001:6:1", + "nodeType": "YulIdentifier", + "src": "6001:6:1" + }, + { + "kind": "number", + "nativeSrc": "6009:4:1", + "nodeType": "YulLiteral", + "src": "6009:4:1", + "type": "", + "value": "0x1f" + } + ], + "functionName": { + "name": "and", + "nativeSrc": "5997:3:1", + "nodeType": "YulIdentifier", + "src": "5997:3:1" + }, + "nativeSrc": "5997:17:1", + "nodeType": "YulFunctionCall", + "src": "5997:17:1" + } + ], + "functionName": { + "name": "mask_bytes_dynamic", + "nativeSrc": "5967:18:1", + "nodeType": "YulIdentifier", + "src": "5967:18:1" + }, + "nativeSrc": "5967:48:1", + "nodeType": "YulFunctionCall", + "src": "5967:48:1" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "5952:6:1", + "nodeType": "YulIdentifier", + "src": "5952:6:1" + }, + "nativeSrc": "5952:64:1", + "nodeType": "YulFunctionCall", + "src": "5952:64:1" + }, + "nativeSrc": "5952:64:1", + "nodeType": "YulExpressionStatement", + "src": "5952:64:1" + } + ] + }, + "condition": { + "arguments": [ + { + "name": "loopEnd", + "nativeSrc": "5857:7:1", + "nodeType": "YulIdentifier", + "src": "5857:7:1" + }, + { + "name": "newLen", + "nativeSrc": "5866:6:1", + "nodeType": "YulIdentifier", + "src": "5866:6:1" + } + ], + "functionName": { + "name": "lt", + "nativeSrc": "5854:2:1", + "nodeType": "YulIdentifier", + "src": "5854:2:1" + }, + "nativeSrc": "5854:19:1", + "nodeType": "YulFunctionCall", + "src": "5854:19:1" + }, + "nativeSrc": "5851:179:1", + "nodeType": "YulIf", + "src": "5851:179:1" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "6050:4:1", + "nodeType": "YulIdentifier", + "src": "6050:4:1" + }, + { + "arguments": [ + { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "6064:6:1", + "nodeType": "YulIdentifier", + "src": "6064:6:1" + }, + { + "kind": "number", + "nativeSrc": "6072:1:1", + "nodeType": "YulLiteral", + "src": "6072:1:1", + "type": "", + "value": "2" + } + ], + "functionName": { + "name": "mul", + "nativeSrc": "6060:3:1", + "nodeType": "YulIdentifier", + "src": "6060:3:1" + }, + "nativeSrc": "6060:14:1", + "nodeType": "YulFunctionCall", + "src": "6060:14:1" + }, + { + "kind": "number", + "nativeSrc": "6076:1:1", + "nodeType": "YulLiteral", + "src": "6076:1:1", + "type": "", + "value": "1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6056:3:1", + "nodeType": "YulIdentifier", + "src": "6056:3:1" + }, + "nativeSrc": "6056:22:1", + "nodeType": "YulFunctionCall", + "src": "6056:22:1" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "6043:6:1", + "nodeType": "YulIdentifier", + "src": "6043:6:1" + }, + "nativeSrc": "6043:36:1", + "nodeType": "YulFunctionCall", + "src": "6043:36:1" + }, + "nativeSrc": "6043:36:1", + "nodeType": "YulExpressionStatement", + "src": "6043:36:1" + } + ] + }, + "nativeSrc": "5471:618:1", + "nodeType": "YulCase", + "src": "5471:618:1", + "value": { + "kind": "number", + "nativeSrc": "5476:1:1", + "nodeType": "YulLiteral", + "src": "5476:1:1", + "type": "", + "value": "1" + } + }, + { + "body": { + "nativeSrc": "6106:222:1", + "nodeType": "YulBlock", + "src": "6106:222:1", + "statements": [ + { + "nativeSrc": "6120:14:1", + "nodeType": "YulVariableDeclaration", + "src": "6120:14:1", + "value": { + "kind": "number", + "nativeSrc": "6133:1:1", + "nodeType": "YulLiteral", + "src": "6133:1:1", + "type": "", + "value": "0" + }, + "variables": [ + { + "name": "value", + "nativeSrc": "6124:5:1", + "nodeType": "YulTypedName", + "src": "6124:5:1", + "type": "" + } + ] + }, + { + "body": { + "nativeSrc": "6157:67:1", + "nodeType": "YulBlock", + "src": "6157:67:1", + "statements": [ + { + "nativeSrc": "6175:35:1", + "nodeType": "YulAssignment", + "src": "6175:35:1", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "src", + "nativeSrc": "6194:3:1", + "nodeType": "YulIdentifier", + "src": "6194:3:1" + }, + { + "name": "srcOffset", + "nativeSrc": "6199:9:1", + "nodeType": "YulIdentifier", + "src": "6199:9:1" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "6190:3:1", + "nodeType": "YulIdentifier", + "src": "6190:3:1" + }, + "nativeSrc": "6190:19:1", + "nodeType": "YulFunctionCall", + "src": "6190:19:1" + } + ], + "functionName": { + "name": "mload", + "nativeSrc": "6184:5:1", + "nodeType": "YulIdentifier", + "src": "6184:5:1" + }, + "nativeSrc": "6184:26:1", + "nodeType": "YulFunctionCall", + "src": "6184:26:1" + }, + "variableNames": [ + { + "name": "value", + "nativeSrc": "6175:5:1", + "nodeType": "YulIdentifier", + "src": "6175:5:1" + } + ] + } + ] + }, + "condition": { + "name": "newLen", + "nativeSrc": "6150:6:1", + "nodeType": "YulIdentifier", + "src": "6150:6:1" + }, + "nativeSrc": "6147:77:1", + "nodeType": "YulIf", + "src": "6147:77:1" + }, + { + "expression": { + "arguments": [ + { + "name": "slot", + "nativeSrc": "6244:4:1", + "nodeType": "YulIdentifier", + "src": "6244:4:1" + }, + { + "arguments": [ + { + "name": "value", + "nativeSrc": "6303:5:1", + "nodeType": "YulIdentifier", + "src": "6303:5:1" + }, + { + "name": "newLen", + "nativeSrc": "6310:6:1", + "nodeType": "YulIdentifier", + "src": "6310:6:1" + } + ], + "functionName": { + "name": "extract_used_part_and_set_length_of_short_byte_array", + "nativeSrc": "6250:52:1", + "nodeType": "YulIdentifier", + "src": "6250:52:1" + }, + "nativeSrc": "6250:67:1", + "nodeType": "YulFunctionCall", + "src": "6250:67:1" + } + ], + "functionName": { + "name": "sstore", + "nativeSrc": "6237:6:1", + "nodeType": "YulIdentifier", + "src": "6237:6:1" + }, + "nativeSrc": "6237:81:1", + "nodeType": "YulFunctionCall", + "src": "6237:81:1" + }, + "nativeSrc": "6237:81:1", + "nodeType": "YulExpressionStatement", + "src": "6237:81:1" + } + ] + }, + "nativeSrc": "6098:230:1", + "nodeType": "YulCase", + "src": "6098:230:1", + "value": "default" + } + ], + "expression": { + "arguments": [ + { + "name": "newLen", + "nativeSrc": "5451:6:1", + "nodeType": "YulIdentifier", + "src": "5451:6:1" + }, + { + "kind": "number", + "nativeSrc": "5459:2:1", + "nodeType": "YulLiteral", + "src": "5459:2:1", + "type": "", + "value": "31" + } + ], + "functionName": { + "name": "gt", + "nativeSrc": "5448:2:1", + "nodeType": "YulIdentifier", + "src": "5448:2:1" + }, + "nativeSrc": "5448:14:1", + "nodeType": "YulFunctionCall", + "src": "5448:14:1" + }, + "nativeSrc": "5441:887:1", + "nodeType": "YulSwitch", + "src": "5441:887:1" + } + ] + }, + "name": "copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage", + "nativeSrc": "4939:1395:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "slot", + "nativeSrc": "5020:4:1", + "nodeType": "YulTypedName", + "src": "5020:4:1", + "type": "" + }, + { + "name": "src", + "nativeSrc": "5026:3:1", + "nodeType": "YulTypedName", + "src": "5026:3:1", + "type": "" + } + ], + "src": "4939:1395:1" + }, + { + "body": { + "nativeSrc": "6368:152:1", + "nodeType": "YulBlock", + "src": "6368:152:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6385:1:1", + "nodeType": "YulLiteral", + "src": "6385:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6388:77:1", + "nodeType": "YulLiteral", + "src": "6388:77:1", + "type": "", + "value": "35408467139433450592217433187231851964531694900788300625387963629091585785856" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6378:6:1", + "nodeType": "YulIdentifier", + "src": "6378:6:1" + }, + "nativeSrc": "6378:88:1", + "nodeType": "YulFunctionCall", + "src": "6378:88:1" + }, + "nativeSrc": "6378:88:1", + "nodeType": "YulExpressionStatement", + "src": "6378:88:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6482:1:1", + "nodeType": "YulLiteral", + "src": "6482:1:1", + "type": "", + "value": "4" + }, + { + "kind": "number", + "nativeSrc": "6485:4:1", + "nodeType": "YulLiteral", + "src": "6485:4:1", + "type": "", + "value": "0x32" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "6475:6:1", + "nodeType": "YulIdentifier", + "src": "6475:6:1" + }, + "nativeSrc": "6475:15:1", + "nodeType": "YulFunctionCall", + "src": "6475:15:1" + }, + "nativeSrc": "6475:15:1", + "nodeType": "YulExpressionStatement", + "src": "6475:15:1" + }, + { + "expression": { + "arguments": [ + { + "kind": "number", + "nativeSrc": "6506:1:1", + "nodeType": "YulLiteral", + "src": "6506:1:1", + "type": "", + "value": "0" + }, + { + "kind": "number", + "nativeSrc": "6509:4:1", + "nodeType": "YulLiteral", + "src": "6509:4:1", + "type": "", + "value": "0x24" + } + ], + "functionName": { + "name": "revert", + "nativeSrc": "6499:6:1", + "nodeType": "YulIdentifier", + "src": "6499:6:1" + }, + "nativeSrc": "6499:15:1", + "nodeType": "YulFunctionCall", + "src": "6499:15:1" + }, + "nativeSrc": "6499:15:1", + "nodeType": "YulExpressionStatement", + "src": "6499:15:1" + } + ] + }, + "name": "panic_error_0x32", + "nativeSrc": "6340:180:1", + "nodeType": "YulFunctionDefinition", + "src": "6340:180:1" + } + ] + }, + "contents": "{\n\n function panic_error_0x41() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x41)\n revert(0, 0x24)\n }\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d(memPtr) {\n\n mstore(add(memPtr, 0), \"goo\")\n\n }\n\n function abi_encode_t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 3)\n store_literal_in_memory_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d(pos)\n end := add(pos, 3)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos ) -> end {\n\n pos := abi_encode_t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n end := pos\n }\n\n function array_length_t_string_memory_ptr(value) -> length {\n\n length := mload(value)\n\n }\n\n function panic_error_0x22() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x22)\n revert(0, 0x24)\n }\n\n function extract_byte_array_length(data) -> length {\n length := div(data, 2)\n let outOfPlaceEncoding := and(data, 1)\n if iszero(outOfPlaceEncoding) {\n length := and(length, 0x7f)\n }\n\n if eq(outOfPlaceEncoding, lt(length, 32)) {\n panic_error_0x22()\n }\n }\n\n function array_dataslot_t_string_storage(ptr) -> data {\n data := ptr\n\n mstore(0, ptr)\n data := keccak256(0, 0x20)\n\n }\n\n function divide_by_32_ceil(value) -> result {\n result := div(add(value, 31), 32)\n }\n\n function shift_left_dynamic(bits, value) -> newValue {\n newValue :=\n\n shl(bits, value)\n\n }\n\n function update_byte_slice_dynamic32(value, shiftBytes, toInsert) -> result {\n let shiftBits := mul(shiftBytes, 8)\n let mask := shift_left_dynamic(shiftBits, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)\n toInsert := shift_left_dynamic(shiftBits, toInsert)\n value := and(value, not(mask))\n result := or(value, and(toInsert, mask))\n }\n\n function cleanup_t_uint256(value) -> cleaned {\n cleaned := value\n }\n\n function identity(value) -> ret {\n ret := value\n }\n\n function convert_t_uint256_to_t_uint256(value) -> converted {\n converted := cleanup_t_uint256(identity(cleanup_t_uint256(value)))\n }\n\n function prepare_store_t_uint256(value) -> ret {\n ret := value\n }\n\n function update_storage_value_t_uint256_to_t_uint256(slot, offset, value_0) {\n let convertedValue_0 := convert_t_uint256_to_t_uint256(value_0)\n sstore(slot, update_byte_slice_dynamic32(sload(slot), offset, prepare_store_t_uint256(convertedValue_0)))\n }\n\n function zero_value_for_split_t_uint256() -> ret {\n ret := 0\n }\n\n function storage_set_to_zero_t_uint256(slot, offset) {\n let zero_0 := zero_value_for_split_t_uint256()\n update_storage_value_t_uint256_to_t_uint256(slot, offset, zero_0)\n }\n\n function clear_storage_range_t_bytes1(start, end) {\n for {} lt(start, end) { start := add(start, 1) }\n {\n storage_set_to_zero_t_uint256(start, 0)\n }\n }\n\n function clean_up_bytearray_end_slots_t_string_storage(array, len, startIndex) {\n\n if gt(len, 31) {\n let dataArea := array_dataslot_t_string_storage(array)\n let deleteStart := add(dataArea, divide_by_32_ceil(startIndex))\n // If we are clearing array to be short byte array, we want to clear only data starting from array data area.\n if lt(startIndex, 32) { deleteStart := dataArea }\n clear_storage_range_t_bytes1(deleteStart, add(dataArea, divide_by_32_ceil(len)))\n }\n\n }\n\n function shift_right_unsigned_dynamic(bits, value) -> newValue {\n newValue :=\n\n shr(bits, value)\n\n }\n\n function mask_bytes_dynamic(data, bytes) -> result {\n let mask := not(shift_right_unsigned_dynamic(mul(8, bytes), not(0)))\n result := and(data, mask)\n }\n function extract_used_part_and_set_length_of_short_byte_array(data, len) -> used {\n // we want to save only elements that are part of the array after resizing\n // others should be set to zero\n data := mask_bytes_dynamic(data, len)\n used := or(data, mul(2, len))\n }\n function copy_byte_array_to_storage_from_t_string_memory_ptr_to_t_string_storage(slot, src) {\n\n let newLen := array_length_t_string_memory_ptr(src)\n // Make sure array length is sane\n if gt(newLen, 0xffffffffffffffff) { panic_error_0x41() }\n\n let oldLen := extract_byte_array_length(sload(slot))\n\n // potentially truncate data\n clean_up_bytearray_end_slots_t_string_storage(slot, oldLen, newLen)\n\n let srcOffset := 0\n\n srcOffset := 0x20\n\n switch gt(newLen, 31)\n case 1 {\n let loopEnd := and(newLen, not(0x1f))\n\n let dstPtr := array_dataslot_t_string_storage(slot)\n let i := 0\n for { } lt(i, loopEnd) { i := add(i, 0x20) } {\n sstore(dstPtr, mload(add(src, srcOffset)))\n dstPtr := add(dstPtr, 1)\n srcOffset := add(srcOffset, 32)\n }\n if lt(loopEnd, newLen) {\n let lastValue := mload(add(src, srcOffset))\n sstore(dstPtr, mask_bytes_dynamic(lastValue, and(newLen, 0x1f)))\n }\n sstore(slot, add(mul(newLen, 2), 1))\n }\n default {\n let value := 0\n if newLen {\n value := mload(add(src, srcOffset))\n }\n sstore(slot, extract_used_part_and_set_length_of_short_byte_array(value, newLen))\n }\n }\n\n function panic_error_0x32() {\n mstore(0, 35408467139433450592217433187231851964531694900788300625387963629091585785856)\n mstore(4, 0x32)\n revert(0, 0x24)\n }\n\n}\n", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "linkReferences": {}, + "object": "608060405234801561000f575f80fd5b5060015f806101000a81548160ff021916908360ff1602179055506002805f6101000a81548160ff021916908360ff160217905550602a60015f6001800b81526020019081526020015f205f6101000a81548163ffffffff021916908363ffffffff16021790555060405180608001604052807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5f0b81526020016103e860010b81526020016040518060400160405280600281526020017f64790000000000000000000000000000000000000000000000000000000000008152508152602001600167ffffffffffffffff81111561010b5761010a61027e565b5b6040519080825280602002602001820160405280156101395781602001602082028036833780820191505090505b50815250600360405161014b906102ff565b90815260200160405180910390205f820151815f015f6101000a81548160ff02191690835f0b60ff1602179055506020820151815f0160016101000a81548161ffff021916908360010b61ffff16021790555060408201518160010190816101b39190610520565b5060608201518160020190805190602001906101d0929190610218565b50905050606460036040516101e4906102ff565b90815260200160405180910390206002015f81548110610207576102066105ef565b5b905f5260205f20018190555061061c565b828054828255905f5260205f20908101928215610252579160200282015b82811115610251578251825591602001919060010190610236565b5b50905061025f9190610263565b5090565b5b8082111561027a575f815f905550600101610264565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81905092915050565b7f676f6f00000000000000000000000000000000000000000000000000000000005f82015250565b5f6102e96003836102ab565b91506102f4826102b5565b600382019050919050565b5f610309826102dd565b9150819050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061036157607f821691505b6020821081036103745761037361031d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103d67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261039b565b6103e0868361039b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61042461041f61041a846103f8565b610401565b6103f8565b9050919050565b5f819050919050565b61043d8361040a565b6104516104498261042b565b8484546103a7565b825550505050565b5f90565b610465610459565b610470818484610434565b505050565b5b81811015610493576104885f8261045d565b600181019050610476565b5050565b601f8211156104d8576104a98161037a565b6104b28461038c565b810160208510156104c1578190505b6104d56104cd8561038c565b830182610475565b50505b505050565b5f82821c905092915050565b5f6104f85f19846008026104dd565b1980831691505092915050565b5f61051083836104e9565b9150826002028217905092915050565b61052982610313565b67ffffffffffffffff8111156105425761054161027e565b5b61054c825461034a565b610557828285610497565b5f60209050601f831160018114610588575f8415610576578287015190505b6105808582610505565b8655506105e7565b601f1984166105968661037a565b5f5b828110156105bd57848901518255600182019150602085019450602081019050610598565b868310156105da57848901516105d6601f8916826104e9565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b610182806106295f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c80635c36b1861461002d575b5f80fd5b610035610037565b005b60655f806101000a81548160ff021916908360ff160217905550602b60015f600260010b81526020019081526020015f205f6101000a81548163ffffffff021916908363ffffffff1602179055507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1660036040516100b490610138565b90815260200160405180910390205f0160016101000a81548161ffff021916908360010b61ffff16021790555f80fd5b5f81905092915050565b7f676f6f00000000000000000000000000000000000000000000000000000000005f82015250565b5f6101226003836100e4565b915061012d826100ee565b600382019050919050565b5f61014282610116565b915081905091905056fea26469706673582212209afc85b0006e5ba9fd94d0aa763eec28613e731ddcd180afdcb3bb6b9a10903364736f6c63430008150033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x2 DUP1 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x2A PUSH1 0x1 PUSH0 PUSH1 0x1 DUP1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x80 ADD PUSH1 0x40 MSTORE DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH0 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x3E8 PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x6479000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x10B JUMPI PUSH2 0x10A PUSH2 0x27E JUMP JUMPDEST JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x139 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP JUMPDEST POP DUP2 MSTORE POP PUSH1 0x3 PUSH1 0x40 MLOAD PUSH2 0x14B SWAP1 PUSH2 0x2FF JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH0 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH0 SIGNEXTEND PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH0 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x1 SIGNEXTEND PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SWAP1 DUP2 PUSH2 0x1B3 SWAP2 SWAP1 PUSH2 0x520 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SWAP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH2 0x1D0 SWAP3 SWAP2 SWAP1 PUSH2 0x218 JUMP JUMPDEST POP SWAP1 POP POP PUSH1 0x64 PUSH1 0x3 PUSH1 0x40 MLOAD PUSH2 0x1E4 SWAP1 PUSH2 0x2FF JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH1 0x2 ADD PUSH0 DUP2 SLOAD DUP2 LT PUSH2 0x207 JUMPI PUSH2 0x206 PUSH2 0x5EF JUMP JUMPDEST JUMPDEST SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x61C JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH2 0x252 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x251 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x236 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH2 0x25F SWAP2 SWAP1 PUSH2 0x263 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x27A JUMPI PUSH0 DUP2 PUSH0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH2 0x264 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x41 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x676F6F0000000000000000000000000000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x2E9 PUSH1 0x3 DUP4 PUSH2 0x2AB JUMP JUMPDEST SWAP2 POP PUSH2 0x2F4 DUP3 PUSH2 0x2B5 JUMP JUMPDEST PUSH1 0x3 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x309 DUP3 PUSH2 0x2DD JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 MLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x22 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH0 PUSH1 0x2 DUP3 DIV SWAP1 POP PUSH1 0x1 DUP3 AND DUP1 PUSH2 0x361 JUMPI PUSH1 0x7F DUP3 AND SWAP2 POP JUMPDEST PUSH1 0x20 DUP3 LT DUP2 SUB PUSH2 0x374 JUMPI PUSH2 0x373 PUSH2 0x31D JUMP JUMPDEST JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP DUP2 PUSH0 MSTORE PUSH1 0x20 PUSH0 KECCAK256 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH1 0x20 PUSH1 0x1F DUP4 ADD DIV SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHL SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH1 0x8 DUP4 MUL PUSH2 0x3D6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 PUSH2 0x39B JUMP JUMPDEST PUSH2 0x3E0 DUP7 DUP4 PUSH2 0x39B JUMP JUMPDEST SWAP6 POP DUP1 NOT DUP5 AND SWAP4 POP DUP1 DUP7 AND DUP5 OR SWAP3 POP POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x424 PUSH2 0x41F PUSH2 0x41A DUP5 PUSH2 0x3F8 JUMP JUMPDEST PUSH2 0x401 JUMP JUMPDEST PUSH2 0x3F8 JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x43D DUP4 PUSH2 0x40A JUMP JUMPDEST PUSH2 0x451 PUSH2 0x449 DUP3 PUSH2 0x42B JUMP JUMPDEST DUP5 DUP5 SLOAD PUSH2 0x3A7 JUMP JUMPDEST DUP3 SSTORE POP POP POP POP JUMP JUMPDEST PUSH0 SWAP1 JUMP JUMPDEST PUSH2 0x465 PUSH2 0x459 JUMP JUMPDEST PUSH2 0x470 DUP2 DUP5 DUP5 PUSH2 0x434 JUMP JUMPDEST POP POP POP JUMP JUMPDEST JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x493 JUMPI PUSH2 0x488 PUSH0 DUP3 PUSH2 0x45D JUMP JUMPDEST PUSH1 0x1 DUP2 ADD SWAP1 POP PUSH2 0x476 JUMP JUMPDEST POP POP JUMP JUMPDEST PUSH1 0x1F DUP3 GT ISZERO PUSH2 0x4D8 JUMPI PUSH2 0x4A9 DUP2 PUSH2 0x37A JUMP JUMPDEST PUSH2 0x4B2 DUP5 PUSH2 0x38C JUMP JUMPDEST DUP2 ADD PUSH1 0x20 DUP6 LT ISZERO PUSH2 0x4C1 JUMPI DUP2 SWAP1 POP JUMPDEST PUSH2 0x4D5 PUSH2 0x4CD DUP6 PUSH2 0x38C JUMP JUMPDEST DUP4 ADD DUP3 PUSH2 0x475 JUMP JUMPDEST POP POP JUMPDEST POP POP POP JUMP JUMPDEST PUSH0 DUP3 DUP3 SHR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x4F8 PUSH0 NOT DUP5 PUSH1 0x8 MUL PUSH2 0x4DD JUMP JUMPDEST NOT DUP1 DUP4 AND SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH0 PUSH2 0x510 DUP4 DUP4 PUSH2 0x4E9 JUMP JUMPDEST SWAP2 POP DUP3 PUSH1 0x2 MUL DUP3 OR SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x529 DUP3 PUSH2 0x313 JUMP JUMPDEST PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x542 JUMPI PUSH2 0x541 PUSH2 0x27E JUMP JUMPDEST JUMPDEST PUSH2 0x54C DUP3 SLOAD PUSH2 0x34A JUMP JUMPDEST PUSH2 0x557 DUP3 DUP3 DUP6 PUSH2 0x497 JUMP JUMPDEST PUSH0 PUSH1 0x20 SWAP1 POP PUSH1 0x1F DUP4 GT PUSH1 0x1 DUP2 EQ PUSH2 0x588 JUMPI PUSH0 DUP5 ISZERO PUSH2 0x576 JUMPI DUP3 DUP8 ADD MLOAD SWAP1 POP JUMPDEST PUSH2 0x580 DUP6 DUP3 PUSH2 0x505 JUMP JUMPDEST DUP7 SSTORE POP PUSH2 0x5E7 JUMP JUMPDEST PUSH1 0x1F NOT DUP5 AND PUSH2 0x596 DUP7 PUSH2 0x37A JUMP JUMPDEST PUSH0 JUMPDEST DUP3 DUP2 LT ISZERO PUSH2 0x5BD JUMPI DUP5 DUP10 ADD MLOAD DUP3 SSTORE PUSH1 0x1 DUP3 ADD SWAP2 POP PUSH1 0x20 DUP6 ADD SWAP5 POP PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x598 JUMP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x5DA JUMPI DUP5 DUP10 ADD MLOAD PUSH2 0x5D6 PUSH1 0x1F DUP10 AND DUP3 PUSH2 0x4E9 JUMP JUMPDEST DUP4 SSTORE POP JUMPDEST PUSH1 0x1 PUSH1 0x2 DUP9 MUL ADD DUP9 SSTORE POP POP POP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x4E487B7100000000000000000000000000000000000000000000000000000000 PUSH0 MSTORE PUSH1 0x32 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH0 REVERT JUMPDEST PUSH2 0x182 DUP1 PUSH2 0x629 PUSH0 CODECOPY PUSH0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C36B186 EQ PUSH2 0x2D JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x35 PUSH2 0x37 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x65 PUSH0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x2B PUSH1 0x1 PUSH0 PUSH1 0x2 PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC16 PUSH1 0x3 PUSH1 0x40 MLOAD PUSH2 0xB4 SWAP1 PUSH2 0x138 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH0 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x1 SIGNEXTEND PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x676F6F0000000000000000000000000000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x122 PUSH1 0x3 DUP4 PUSH2 0xE4 JUMP JUMPDEST SWAP2 POP PUSH2 0x12D DUP3 PUSH2 0xEE JUMP JUMPDEST PUSH1 0x3 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x142 DUP3 PUSH2 0x116 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 0xFC DUP6 0xB0 STOP PUSH15 0x5BA9FD94D0AA763EEC28613E731DDC 0xD1 DUP1 0xAF 0xDC 0xB3 0xBB PUSH12 0x9A10903364736F6C63430008 ISZERO STOP CALLER ", + "sourceMap": "166:464:0:-:0;;;285:169;;;;;;;;;;320:1;316;;:5;;;;;;;;;;;;;;;;;;335:1;331;;:5;;;;;;;;;;;;;;;;;;354:2;346;:5;349:1;346:5;;;;;;;;;;;;;;:10;;;;;;;;;;;;;;;;;;381:33;;;;;;;;385:2;381:33;;;;;;389:4;381:33;;;;;;;;;;;;;;;;;;;;;;;;;;;411:1;401:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;381:33;;;367:4;:11;;;;;:::i;:::-;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;444:3;424:4;:11;;;;;:::i;:::-;;;;;;;;;;;;;:14;;439:1;424:17;;;;;;;;:::i;:::-;;;;;;;;;:23;;;;166:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:180:1:-;55:77;52:1;45:88;152:4;149:1;142:15;176:4;173:1;166:15;193:148;295:11;332:3;317:18;;193:148;;;;:::o;347:153::-;487:5;483:1;475:6;471:14;464:29;347:153;:::o;506:400::-;666:3;687:84;769:1;764:3;687:84;:::i;:::-;680:91;;780:93;869:3;780:93;:::i;:::-;898:1;893:3;889:11;882:18;;506:400;;;:::o;912:381::-;1097:3;1119:148;1263:3;1119:148;:::i;:::-;1112:155;;1284:3;1277:10;;912:381;;;:::o;1299:99::-;1351:6;1385:5;1379:12;1369:22;;1299:99;;;:::o;1404:180::-;1452:77;1449:1;1442:88;1549:4;1546:1;1539:15;1573:4;1570:1;1563:15;1590:320;1634:6;1671:1;1665:4;1661:12;1651:22;;1718:1;1712:4;1708:12;1739:18;1729:81;;1795:4;1787:6;1783:17;1773:27;;1729:81;1857:2;1849:6;1846:14;1826:18;1823:38;1820:84;;1876:18;;:::i;:::-;1820:84;1641:269;1590:320;;;:::o;1916:141::-;1965:4;1988:3;1980:11;;2011:3;2008:1;2001:14;2045:4;2042:1;2032:18;2024:26;;1916:141;;;:::o;2063:93::-;2100:6;2147:2;2142;2135:5;2131:14;2127:23;2117:33;;2063:93;;;:::o;2162:107::-;2206:8;2256:5;2250:4;2246:16;2225:37;;2162:107;;;;:::o;2275:393::-;2344:6;2394:1;2382:10;2378:18;2417:97;2447:66;2436:9;2417:97;:::i;:::-;2535:39;2565:8;2554:9;2535:39;:::i;:::-;2523:51;;2607:4;2603:9;2596:5;2592:21;2583:30;;2656:4;2646:8;2642:19;2635:5;2632:30;2622:40;;2351:317;;2275:393;;;;;:::o;2674:77::-;2711:7;2740:5;2729:16;;2674:77;;;:::o;2757:60::-;2785:3;2806:5;2799:12;;2757:60;;;:::o;2823:142::-;2873:9;2906:53;2924:34;2933:24;2951:5;2933:24;:::i;:::-;2924:34;:::i;:::-;2906:53;:::i;:::-;2893:66;;2823:142;;;:::o;2971:75::-;3014:3;3035:5;3028:12;;2971:75;;;:::o;3052:269::-;3162:39;3193:7;3162:39;:::i;:::-;3223:91;3272:41;3296:16;3272:41;:::i;:::-;3264:6;3257:4;3251:11;3223:91;:::i;:::-;3217:4;3210:105;3128:193;3052:269;;;:::o;3327:73::-;3372:3;3327:73;:::o;3406:189::-;3483:32;;:::i;:::-;3524:65;3582:6;3574;3568:4;3524:65;:::i;:::-;3459:136;3406:189;;:::o;3601:186::-;3661:120;3678:3;3671:5;3668:14;3661:120;;;3732:39;3769:1;3762:5;3732:39;:::i;:::-;3705:1;3698:5;3694:13;3685:22;;3661:120;;;3601:186;;:::o;3793:543::-;3894:2;3889:3;3886:11;3883:446;;;3928:38;3960:5;3928:38;:::i;:::-;4012:29;4030:10;4012:29;:::i;:::-;4002:8;3998:44;4195:2;4183:10;4180:18;4177:49;;;4216:8;4201:23;;4177:49;4239:80;4295:22;4313:3;4295:22;:::i;:::-;4285:8;4281:37;4268:11;4239:80;:::i;:::-;3898:431;;3883:446;3793:543;;;:::o;4342:117::-;4396:8;4446:5;4440:4;4436:16;4415:37;;4342:117;;;;:::o;4465:169::-;4509:6;4542:51;4590:1;4586:6;4578:5;4575:1;4571:13;4542:51;:::i;:::-;4538:56;4623:4;4617;4613:15;4603:25;;4516:118;4465:169;;;;:::o;4639:295::-;4715:4;4861:29;4886:3;4880:4;4861:29;:::i;:::-;4853:37;;4923:3;4920:1;4916:11;4910:4;4907:21;4899:29;;4639:295;;;;:::o;4939:1395::-;5056:37;5089:3;5056:37;:::i;:::-;5158:18;5150:6;5147:30;5144:56;;;5180:18;;:::i;:::-;5144:56;5224:38;5256:4;5250:11;5224:38;:::i;:::-;5309:67;5369:6;5361;5355:4;5309:67;:::i;:::-;5403:1;5427:4;5414:17;;5459:2;5451:6;5448:14;5476:1;5471:618;;;;6133:1;6150:6;6147:77;;;6199:9;6194:3;6190:19;6184:26;6175:35;;6147:77;6250:67;6310:6;6303:5;6250:67;:::i;:::-;6244:4;6237:81;6106:222;5441:887;;5471:618;5523:4;5519:9;5511:6;5507:22;5557:37;5589:4;5557:37;:::i;:::-;5616:1;5630:208;5644:7;5641:1;5638:14;5630:208;;;5723:9;5718:3;5714:19;5708:26;5700:6;5693:42;5774:1;5766:6;5762:14;5752:24;;5821:2;5810:9;5806:18;5793:31;;5667:4;5664:1;5660:12;5655:17;;5630:208;;;5866:6;5857:7;5854:19;5851:179;;;5924:9;5919:3;5915:19;5909:26;5967:48;6009:4;6001:6;5997:17;5986:9;5967:48;:::i;:::-;5959:6;5952:64;5874:156;5851:179;6076:1;6072;6064:6;6060:14;6056:22;6050:4;6043:36;5478:611;;;5441:887;;5031:1303;;;4939:1395;;:::o;6340:180::-;6388:77;6385:1;6378:88;6485:4;6482:1;6475:15;6509:4;6506:1;6499:15;166:464:0;;;;;;;" + }, + "deployedBytecode": { + "functionDebugData": { + "@ping_112": { + "entryPoint": 55, + "id": 112, + "parameterSlots": 0, + "returnSlots": 0 + }, + "abi_encode_t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d_to_t_string_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 278, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "abi_encode_tuple_packed_t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed": { + "entryPoint": 312, + "id": null, + "parameterSlots": 1, + "returnSlots": 1 + }, + "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack": { + "entryPoint": 228, + "id": null, + "parameterSlots": 2, + "returnSlots": 1 + }, + "store_literal_in_memory_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d": { + "entryPoint": 238, + "id": null, + "parameterSlots": 1, + "returnSlots": 0 + } + }, + "generatedSources": [ + { + "ast": { + "nativeSrc": "0:1110:1", + "nodeType": "YulBlock", + "src": "0:1110:1", + "statements": [ + { + "body": { + "nativeSrc": "121:34:1", + "nodeType": "YulBlock", + "src": "121:34:1", + "statements": [ + { + "nativeSrc": "131:18:1", + "nodeType": "YulAssignment", + "src": "131:18:1", + "value": { + "name": "pos", + "nativeSrc": "146:3:1", + "nodeType": "YulIdentifier", + "src": "146:3:1" + }, + "variableNames": [ + { + "name": "updated_pos", + "nativeSrc": "131:11:1", + "nodeType": "YulIdentifier", + "src": "131:11:1" + } + ] + } + ] + }, + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nativeSrc": "7:148:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "93:3:1", + "nodeType": "YulTypedName", + "src": "93:3:1", + "type": "" + }, + { + "name": "length", + "nativeSrc": "98:6:1", + "nodeType": "YulTypedName", + "src": "98:6:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "updated_pos", + "nativeSrc": "109:11:1", + "nodeType": "YulTypedName", + "src": "109:11:1", + "type": "" + } + ], + "src": "7:148:1" + }, + { + "body": { + "nativeSrc": "267:47:1", + "nodeType": "YulBlock", + "src": "267:47:1", + "statements": [ + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "name": "memPtr", + "nativeSrc": "289:6:1", + "nodeType": "YulIdentifier", + "src": "289:6:1" + }, + { + "kind": "number", + "nativeSrc": "297:1:1", + "nodeType": "YulLiteral", + "src": "297:1:1", + "type": "", + "value": "0" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "285:3:1", + "nodeType": "YulIdentifier", + "src": "285:3:1" + }, + "nativeSrc": "285:14:1", + "nodeType": "YulFunctionCall", + "src": "285:14:1" + }, + { + "hexValue": "676f6f", + "kind": "string", + "nativeSrc": "301:5:1", + "nodeType": "YulLiteral", + "src": "301:5:1", + "type": "", + "value": "goo" + } + ], + "functionName": { + "name": "mstore", + "nativeSrc": "278:6:1", + "nodeType": "YulIdentifier", + "src": "278:6:1" + }, + "nativeSrc": "278:29:1", + "nodeType": "YulFunctionCall", + "src": "278:29:1" + }, + "nativeSrc": "278:29:1", + "nodeType": "YulExpressionStatement", + "src": "278:29:1" + } + ] + }, + "name": "store_literal_in_memory_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d", + "nativeSrc": "161:153:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "memPtr", + "nativeSrc": "259:6:1", + "nodeType": "YulTypedName", + "src": "259:6:1", + "type": "" + } + ], + "src": "161:153:1" + }, + { + "body": { + "nativeSrc": "484:236:1", + "nodeType": "YulBlock", + "src": "484:236:1", + "statements": [ + { + "nativeSrc": "494:91:1", + "nodeType": "YulAssignment", + "src": "494:91:1", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "578:3:1", + "nodeType": "YulIdentifier", + "src": "578:3:1" + }, + { + "kind": "number", + "nativeSrc": "583:1:1", + "nodeType": "YulLiteral", + "src": "583:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nativeSrc": "501:76:1", + "nodeType": "YulIdentifier", + "src": "501:76:1" + }, + "nativeSrc": "501:84:1", + "nodeType": "YulFunctionCall", + "src": "501:84:1" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "494:3:1", + "nodeType": "YulIdentifier", + "src": "494:3:1" + } + ] + }, + { + "expression": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "683:3:1", + "nodeType": "YulIdentifier", + "src": "683:3:1" + } + ], + "functionName": { + "name": "store_literal_in_memory_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d", + "nativeSrc": "594:88:1", + "nodeType": "YulIdentifier", + "src": "594:88:1" + }, + "nativeSrc": "594:93:1", + "nodeType": "YulFunctionCall", + "src": "594:93:1" + }, + "nativeSrc": "594:93:1", + "nodeType": "YulExpressionStatement", + "src": "594:93:1" + }, + { + "nativeSrc": "696:18:1", + "nodeType": "YulAssignment", + "src": "696:18:1", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "707:3:1", + "nodeType": "YulIdentifier", + "src": "707:3:1" + }, + { + "kind": "number", + "nativeSrc": "712:1:1", + "nodeType": "YulLiteral", + "src": "712:1:1", + "type": "", + "value": "3" + } + ], + "functionName": { + "name": "add", + "nativeSrc": "703:3:1", + "nodeType": "YulIdentifier", + "src": "703:3:1" + }, + "nativeSrc": "703:11:1", + "nodeType": "YulFunctionCall", + "src": "703:11:1" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "696:3:1", + "nodeType": "YulIdentifier", + "src": "696:3:1" + } + ] + } + ] + }, + "name": "abi_encode_t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nativeSrc": "320:400:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "472:3:1", + "nodeType": "YulTypedName", + "src": "472:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "480:3:1", + "nodeType": "YulTypedName", + "src": "480:3:1", + "type": "" + } + ], + "src": "320:400:1" + }, + { + "body": { + "nativeSrc": "915:192:1", + "nodeType": "YulBlock", + "src": "915:192:1", + "statements": [ + { + "nativeSrc": "926:155:1", + "nodeType": "YulAssignment", + "src": "926:155:1", + "value": { + "arguments": [ + { + "name": "pos", + "nativeSrc": "1077:3:1", + "nodeType": "YulIdentifier", + "src": "1077:3:1" + } + ], + "functionName": { + "name": "abi_encode_t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d_to_t_string_memory_ptr_nonPadded_inplace_fromStack", + "nativeSrc": "933:142:1", + "nodeType": "YulIdentifier", + "src": "933:142:1" + }, + "nativeSrc": "933:148:1", + "nodeType": "YulFunctionCall", + "src": "933:148:1" + }, + "variableNames": [ + { + "name": "pos", + "nativeSrc": "926:3:1", + "nodeType": "YulIdentifier", + "src": "926:3:1" + } + ] + }, + { + "nativeSrc": "1091:10:1", + "nodeType": "YulAssignment", + "src": "1091:10:1", + "value": { + "name": "pos", + "nativeSrc": "1098:3:1", + "nodeType": "YulIdentifier", + "src": "1098:3:1" + }, + "variableNames": [ + { + "name": "end", + "nativeSrc": "1091:3:1", + "nodeType": "YulIdentifier", + "src": "1091:3:1" + } + ] + } + ] + }, + "name": "abi_encode_tuple_packed_t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed", + "nativeSrc": "726:381:1", + "nodeType": "YulFunctionDefinition", + "parameters": [ + { + "name": "pos", + "nativeSrc": "902:3:1", + "nodeType": "YulTypedName", + "src": "902:3:1", + "type": "" + } + ], + "returnVariables": [ + { + "name": "end", + "nativeSrc": "911:3:1", + "nodeType": "YulTypedName", + "src": "911:3:1", + "type": "" + } + ], + "src": "726:381:1" + } + ] + }, + "contents": "{\n\n function array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n updated_pos := pos\n }\n\n function store_literal_in_memory_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d(memPtr) {\n\n mstore(add(memPtr, 0), \"goo\")\n\n }\n\n function abi_encode_t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d_to_t_string_memory_ptr_nonPadded_inplace_fromStack(pos) -> end {\n pos := array_storeLengthForEncoding_t_string_memory_ptr_nonPadded_inplace_fromStack(pos, 3)\n store_literal_in_memory_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d(pos)\n end := add(pos, 3)\n }\n\n function abi_encode_tuple_packed_t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos ) -> end {\n\n pos := abi_encode_t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d_to_t_string_memory_ptr_nonPadded_inplace_fromStack( pos)\n\n end := pos\n }\n\n}\n", + "id": 1, + "language": "Yul", + "name": "#utility.yul" + } + ], + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561000f575f80fd5b5060043610610029575f3560e01c80635c36b1861461002d575b5f80fd5b610035610037565b005b60655f806101000a81548160ff021916908360ff160217905550602b60015f600260010b81526020019081526020015f205f6101000a81548163ffffffff021916908363ffffffff1602179055507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1660036040516100b490610138565b90815260200160405180910390205f0160016101000a81548161ffff021916908360010b61ffff16021790555f80fd5b5f81905092915050565b7f676f6f00000000000000000000000000000000000000000000000000000000005f82015250565b5f6101226003836100e4565b915061012d826100ee565b600382019050919050565b5f61014282610116565b915081905091905056fea26469706673582212209afc85b0006e5ba9fd94d0aa763eec28613e731ddcd180afdcb3bb6b9a10903364736f6c63430008150033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0xF JUMPI PUSH0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x29 JUMPI PUSH0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x5C36B186 EQ PUSH2 0x2D JUMPI JUMPDEST PUSH0 DUP1 REVERT JUMPDEST PUSH2 0x35 PUSH2 0x37 JUMP JUMPDEST STOP JUMPDEST PUSH1 0x65 PUSH0 DUP1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x2B PUSH1 0x1 PUSH0 PUSH1 0x2 PUSH1 0x1 SIGNEXTEND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH0 KECCAK256 PUSH0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH4 0xFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH4 0xFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC16 PUSH1 0x3 PUSH1 0x40 MLOAD PUSH2 0xB4 SWAP1 PUSH2 0x138 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 KECCAK256 PUSH0 ADD PUSH1 0x1 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH2 0xFFFF MUL NOT AND SWAP1 DUP4 PUSH1 0x1 SIGNEXTEND PUSH2 0xFFFF AND MUL OR SWAP1 SSTORE PUSH0 DUP1 REVERT JUMPDEST PUSH0 DUP2 SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0x676F6F0000000000000000000000000000000000000000000000000000000000 PUSH0 DUP3 ADD MSTORE POP JUMP JUMPDEST PUSH0 PUSH2 0x122 PUSH1 0x3 DUP4 PUSH2 0xE4 JUMP JUMPDEST SWAP2 POP PUSH2 0x12D DUP3 PUSH2 0xEE JUMP JUMPDEST PUSH1 0x3 DUP3 ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH0 PUSH2 0x142 DUP3 PUSH2 0x116 JUMP JUMPDEST SWAP2 POP DUP2 SWAP1 POP SWAP2 SWAP1 POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP11 0xFC DUP6 0xB0 STOP PUSH15 0x5BA9FD94D0AA763EEC28613E731DDC 0xD1 DUP1 0xAF 0xDC 0xB3 0xBB PUSH12 0x9A10903364736F6C63430008 ISZERO STOP CALLER ", + "sourceMap": "166:464:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;460:168;;;:::i;:::-;;;497:3;493:1;;:7;;;;;;;;;;;;;;;;;;518:2;510;:5;513:1;510:5;;;;;;;;;;;;;;:10;;;;;;;;;;;;;;;;;;547:5;530:4;:11;;;;;:::i;:::-;;;;;;;;;;;;;:14;;;:22;;;;;;;;;;;;;;;;;;;563:8;;;7:148:1;109:11;146:3;131:18;;7:148;;;;:::o;161:153::-;301:5;297:1;289:6;285:14;278:29;161:153;:::o;320:400::-;480:3;501:84;583:1;578:3;501:84;:::i;:::-;494:91;;594:93;683:3;594:93;:::i;:::-;712:1;707:3;703:11;696:18;;320:400;;;:::o;726:381::-;911:3;933:148;1077:3;933:148;:::i;:::-;926:155;;1098:3;1091:10;;726:381;;;:::o" + }, + "gasEstimates": { + "creation": { + "codeDepositCost": "77200", + "executionCost": "infinite", + "totalCost": "infinite" + }, + "external": { + "ping()": "73350" + } + }, + "legacyAssembly": { + ".code": [ + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "80" + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 166, + "end": 630, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 285, + "end": 454, + "name": "CALLVALUE", + "source": 0 + }, + { + "begin": 285, + "end": 454, + "name": "DUP1", + "source": 0 + }, + { + "begin": 285, + "end": 454, + "name": "ISZERO", + "source": 0 + }, + { + "begin": 285, + "end": 454, + "name": "PUSH [tag]", + "source": 0, + "value": "1" + }, + { + "begin": 285, + "end": 454, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 285, + "end": 454, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 285, + "end": 454, + "name": "DUP1", + "source": 0 + }, + { + "begin": 285, + "end": 454, + "name": "REVERT", + "source": 0 + }, + { + "begin": 285, + "end": 454, + "name": "tag", + "source": 0, + "value": "1" + }, + { + "begin": 285, + "end": 454, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 285, + "end": 454, + "name": "POP", + "source": 0 + }, + { + "begin": 320, + "end": 321, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 316, + "end": 317, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 316, + "end": 317, + "name": "DUP1", + "source": 0 + }, + { + "begin": 316, + "end": 321, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { + "begin": 316, + "end": 321, + "name": "EXP", + "source": 0 + }, + { + "begin": 316, + "end": 321, + "name": "DUP2", + "source": 0 + }, + { + "begin": 316, + "end": 321, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 316, + "end": 321, + "name": "DUP2", + "source": 0 + }, + { + "begin": 316, + "end": 321, + "name": "PUSH", + "source": 0, + "value": "FF" + }, + { + "begin": 316, + "end": 321, + "name": "MUL", + "source": 0 + }, + { + "begin": 316, + "end": 321, + "name": "NOT", + "source": 0 + }, + { + "begin": 316, + "end": 321, + "name": "AND", + "source": 0 + }, + { + "begin": 316, + "end": 321, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 316, + "end": 321, + "name": "DUP4", + "source": 0 + }, + { + "begin": 316, + "end": 321, + "name": "PUSH", + "source": 0, + "value": "FF" + }, + { + "begin": 316, + "end": 321, + "name": "AND", + "source": 0 + }, + { + "begin": 316, + "end": 321, + "name": "MUL", + "source": 0 + }, + { + "begin": 316, + "end": 321, + "name": "OR", + "source": 0 + }, + { + "begin": 316, + "end": 321, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 316, + "end": 321, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 316, + "end": 321, + "name": "POP", + "source": 0 + }, + { + "begin": 335, + "end": 336, + "name": "PUSH", + "source": 0, + "value": "2" + }, + { + "begin": 331, + "end": 332, + "name": "DUP1", + "source": 0 + }, + { + "begin": 331, + "end": 332, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 331, + "end": 336, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { + "begin": 331, + "end": 336, + "name": "EXP", + "source": 0 + }, + { + "begin": 331, + "end": 336, + "name": "DUP2", + "source": 0 + }, + { + "begin": 331, + "end": 336, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 331, + "end": 336, + "name": "DUP2", + "source": 0 + }, + { + "begin": 331, + "end": 336, + "name": "PUSH", + "source": 0, + "value": "FF" + }, + { + "begin": 331, + "end": 336, + "name": "MUL", + "source": 0 + }, + { + "begin": 331, + "end": 336, + "name": "NOT", + "source": 0 + }, + { + "begin": 331, + "end": 336, + "name": "AND", + "source": 0 + }, + { + "begin": 331, + "end": 336, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 331, + "end": 336, + "name": "DUP4", + "source": 0 + }, + { + "begin": 331, + "end": 336, + "name": "PUSH", + "source": 0, + "value": "FF" + }, + { + "begin": 331, + "end": 336, + "name": "AND", + "source": 0 + }, + { + "begin": 331, + "end": 336, + "name": "MUL", + "source": 0 + }, + { + "begin": 331, + "end": 336, + "name": "OR", + "source": 0 + }, + { + "begin": 331, + "end": 336, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 331, + "end": 336, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 331, + "end": 336, + "name": "POP", + "source": 0 + }, + { + "begin": 354, + "end": 356, + "name": "PUSH", + "source": 0, + "value": "2A" + }, + { + "begin": 346, + "end": 348, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 346, + "end": 351, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 349, + "end": 350, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 346, + "end": 351, + "name": "DUP1", + "source": 0 + }, + { + "begin": 346, + "end": 351, + "name": "SIGNEXTEND", + "source": 0 + }, + { + "begin": 346, + "end": 351, + "name": "DUP2", + "source": 0 + }, + { + "begin": 346, + "end": 351, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 346, + "end": 351, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 346, + "end": 351, + "name": "ADD", + "source": 0 + }, + { + "begin": 346, + "end": 351, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 346, + "end": 351, + "name": "DUP2", + "source": 0 + }, + { + "begin": 346, + "end": 351, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 346, + "end": 351, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 346, + "end": 351, + "name": "ADD", + "source": 0 + }, + { + "begin": 346, + "end": 351, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 346, + "end": 351, + "name": "KECCAK256", + "source": 0 + }, + { + "begin": 346, + "end": 351, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 346, + "end": 356, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { + "begin": 346, + "end": 356, + "name": "EXP", + "source": 0 + }, + { + "begin": 346, + "end": 356, + "name": "DUP2", + "source": 0 + }, + { + "begin": 346, + "end": 356, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 346, + "end": 356, + "name": "DUP2", + "source": 0 + }, + { + "begin": 346, + "end": 356, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFF" + }, + { + "begin": 346, + "end": 356, + "name": "MUL", + "source": 0 + }, + { + "begin": 346, + "end": 356, + "name": "NOT", + "source": 0 + }, + { + "begin": 346, + "end": 356, + "name": "AND", + "source": 0 + }, + { + "begin": 346, + "end": 356, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 346, + "end": 356, + "name": "DUP4", + "source": 0 + }, + { + "begin": 346, + "end": 356, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFF" + }, + { + "begin": 346, + "end": 356, + "name": "AND", + "source": 0 + }, + { + "begin": 346, + "end": 356, + "name": "MUL", + "source": 0 + }, + { + "begin": 346, + "end": 356, + "name": "OR", + "source": 0 + }, + { + "begin": 346, + "end": 356, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 346, + "end": 356, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 346, + "end": 356, + "name": "POP", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 381, + "end": 414, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "DUP1", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "80" + }, + { + "begin": 381, + "end": 414, + "name": "ADD", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 381, + "end": 414, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "DUP1", + "source": 0 + }, + { + "begin": 385, + "end": 387, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 381, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 381, + "end": 414, + "name": "SIGNEXTEND", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "DUP2", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 381, + "end": 414, + "name": "ADD", + "source": 0 + }, + { + "begin": 389, + "end": 393, + "name": "PUSH", + "source": 0, + "value": "3E8" + }, + { + "begin": 381, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 381, + "end": 414, + "name": "SIGNEXTEND", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "DUP2", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 381, + "end": 414, + "name": "ADD", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 381, + "end": 414, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "DUP1", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 381, + "end": 414, + "name": "ADD", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 381, + "end": 414, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "DUP1", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "2" + }, + { + "begin": 381, + "end": 414, + "name": "DUP2", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 381, + "end": 414, + "name": "ADD", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "6479000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 381, + "end": 414, + "name": "DUP2", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "POP", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "DUP2", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 381, + "end": 414, + "name": "ADD", + "source": 0 + }, + { + "begin": 411, + "end": 412, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 401, + "end": 413, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 401, + "end": 413, + "name": "DUP2", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "GT", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "ISZERO", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "PUSH [tag]", + "source": 0, + "value": "4" + }, + { + "begin": 401, + "end": 413, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "PUSH [tag]", + "source": 0, + "value": "5" + }, + { + "begin": 401, + "end": 413, + "name": "PUSH [tag]", + "source": 0, + "value": "6" + }, + { + "begin": 401, + "end": 413, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "tag", + "source": 0, + "value": "5" + }, + { + "begin": 401, + "end": 413, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "tag", + "source": 0, + "value": "4" + }, + { + "begin": 401, + "end": 413, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 401, + "end": 413, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "DUP1", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "DUP3", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "DUP1", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 401, + "end": 413, + "name": "MUL", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 401, + "end": 413, + "name": "ADD", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "DUP3", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "ADD", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 401, + "end": 413, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "DUP1", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "ISZERO", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "PUSH [tag]", + "source": 0, + "value": "7" + }, + { + "begin": 401, + "end": 413, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "DUP2", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 401, + "end": 413, + "name": "ADD", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 401, + "end": 413, + "name": "DUP3", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "MUL", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "DUP1", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "CALLDATASIZE", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "DUP4", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "CALLDATACOPY", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "DUP1", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "DUP3", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "ADD", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "POP", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "POP", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "POP", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "tag", + "source": 0, + "value": "7" + }, + { + "begin": 401, + "end": 413, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 401, + "end": 413, + "name": "POP", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "DUP2", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 381, + "end": 414, + "name": "POP", + "source": 0 + }, + { + "begin": 367, + "end": 371, + "name": "PUSH", + "source": 0, + "value": "3" + }, + { + "begin": 367, + "end": 378, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 367, + "end": 378, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 367, + "end": 378, + "name": "PUSH [tag]", + "source": 0, + "value": "8" + }, + { + "begin": 367, + "end": 378, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 367, + "end": 378, + "name": "PUSH [tag]", + "source": 0, + "value": "9" + }, + { + "begin": 367, + "end": 378, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 367, + "end": 378, + "name": "tag", + "source": 0, + "value": "8" + }, + { + "begin": 367, + "end": 378, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 367, + "end": 378, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 367, + "end": 378, + "name": "DUP2", + "source": 0 + }, + { + "begin": 367, + "end": 378, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 367, + "end": 378, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 367, + "end": 378, + "name": "ADD", + "source": 0 + }, + { + "begin": 367, + "end": 378, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 367, + "end": 378, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 367, + "end": 378, + "name": "DUP1", + "source": 0 + }, + { + "begin": 367, + "end": 378, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 367, + "end": 378, + "name": "SUB", + "source": 0 + }, + { + "begin": 367, + "end": 378, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 367, + "end": 378, + "name": "KECCAK256", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 367, + "end": 414, + "name": "DUP3", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "ADD", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "DUP2", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 367, + "end": 414, + "name": "ADD", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { + "begin": 367, + "end": 414, + "name": "EXP", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "DUP2", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "DUP2", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "FF" + }, + { + "begin": 367, + "end": 414, + "name": "MUL", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "NOT", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "AND", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "DUP4", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 367, + "end": 414, + "name": "SIGNEXTEND", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "FF" + }, + { + "begin": 367, + "end": 414, + "name": "AND", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "MUL", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "OR", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "POP", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 367, + "end": 414, + "name": "DUP3", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "ADD", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "DUP2", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 367, + "end": 414, + "name": "ADD", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { + "begin": 367, + "end": 414, + "name": "EXP", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "DUP2", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "DUP2", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "FFFF" + }, + { + "begin": 367, + "end": 414, + "name": "MUL", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "NOT", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "AND", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "DUP4", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 367, + "end": 414, + "name": "SIGNEXTEND", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "FFFF" + }, + { + "begin": 367, + "end": 414, + "name": "AND", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "MUL", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "OR", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "POP", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 367, + "end": 414, + "name": "DUP3", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "ADD", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "DUP2", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 367, + "end": 414, + "name": "ADD", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "DUP2", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH [tag]", + "source": 0, + "value": "10" + }, + { + "begin": 367, + "end": 414, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH [tag]", + "source": 0, + "value": "11" + }, + { + "begin": 367, + "end": 414, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "tag", + "source": 0, + "value": "10" + }, + { + "begin": 367, + "end": 414, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "POP", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "60" + }, + { + "begin": 367, + "end": 414, + "name": "DUP3", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "ADD", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "DUP2", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "2" + }, + { + "begin": 367, + "end": 414, + "name": "ADD", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "DUP1", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 367, + "end": 414, + "name": "ADD", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH [tag]", + "source": 0, + "value": "12" + }, + { + "begin": 367, + "end": 414, + "name": "SWAP3", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "PUSH [tag]", + "source": 0, + "value": "13" + }, + { + "begin": 367, + "end": 414, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "tag", + "source": 0, + "value": "12" + }, + { + "begin": 367, + "end": 414, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "POP", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "POP", + "source": 0 + }, + { + "begin": 367, + "end": 414, + "name": "POP", + "source": 0 + }, + { + "begin": 444, + "end": 447, + "name": "PUSH", + "source": 0, + "value": "64" + }, + { + "begin": 424, + "end": 428, + "name": "PUSH", + "source": 0, + "value": "3" + }, + { + "begin": 424, + "end": 435, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 424, + "end": 435, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 424, + "end": 435, + "name": "PUSH [tag]", + "source": 0, + "value": "14" + }, + { + "begin": 424, + "end": 435, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 424, + "end": 435, + "name": "PUSH [tag]", + "source": 0, + "value": "9" + }, + { + "begin": 424, + "end": 435, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 424, + "end": 435, + "name": "tag", + "source": 0, + "value": "14" + }, + { + "begin": 424, + "end": 435, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 424, + "end": 435, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 424, + "end": 435, + "name": "DUP2", + "source": 0 + }, + { + "begin": 424, + "end": 435, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 424, + "end": 435, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 424, + "end": 435, + "name": "ADD", + "source": 0 + }, + { + "begin": 424, + "end": 435, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 424, + "end": 435, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 424, + "end": 435, + "name": "DUP1", + "source": 0 + }, + { + "begin": 424, + "end": 435, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 424, + "end": 435, + "name": "SUB", + "source": 0 + }, + { + "begin": 424, + "end": 435, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 424, + "end": 435, + "name": "KECCAK256", + "source": 0 + }, + { + "begin": 424, + "end": 438, + "name": "PUSH", + "source": 0, + "value": "2" + }, + { + "begin": 424, + "end": 438, + "name": "ADD", + "source": 0 + }, + { + "begin": 439, + "end": 440, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 424, + "end": 441, + "name": "DUP2", + "source": 0 + }, + { + "begin": 424, + "end": 441, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 424, + "end": 441, + "name": "DUP2", + "source": 0 + }, + { + "begin": 424, + "end": 441, + "name": "LT", + "source": 0 + }, + { + "begin": 424, + "end": 441, + "name": "PUSH [tag]", + "source": 0, + "value": "15" + }, + { + "begin": 424, + "end": 441, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 424, + "end": 441, + "name": "PUSH [tag]", + "source": 0, + "value": "16" + }, + { + "begin": 424, + "end": 441, + "name": "PUSH [tag]", + "source": 0, + "value": "17" + }, + { + "begin": 424, + "end": 441, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 424, + "end": 441, + "name": "tag", + "source": 0, + "value": "16" + }, + { + "begin": 424, + "end": 441, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 424, + "end": 441, + "name": "tag", + "source": 0, + "value": "15" + }, + { + "begin": 424, + "end": 441, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 424, + "end": 441, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 424, + "end": 441, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 424, + "end": 441, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 424, + "end": 441, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 424, + "end": 441, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 424, + "end": 441, + "name": "KECCAK256", + "source": 0 + }, + { + "begin": 424, + "end": 441, + "name": "ADD", + "source": 0 + }, + { + "begin": 424, + "end": 447, + "name": "DUP2", + "source": 0 + }, + { + "begin": 424, + "end": 447, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 424, + "end": 447, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 424, + "end": 447, + "name": "POP", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH [tag]", + "source": 0, + "value": "19" + }, + { + "begin": 166, + "end": 630, + "name": "JUMP", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "tag", + "source": 0, + "value": "13" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "DUP3", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "DUP1", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "DUP3", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "DUP3", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 166, + "end": 630, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 166, + "end": 630, + "name": "KECCAK256", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "DUP2", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "ADD", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "SWAP3", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "DUP3", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "ISZERO", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH [tag]", + "source": 0, + "value": "20" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 166, + "end": 630, + "name": "MUL", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "DUP3", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "ADD", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "tag", + "source": 0, + "value": "21" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "DUP3", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "DUP2", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "GT", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "ISZERO", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH [tag]", + "source": 0, + "value": "22" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "DUP3", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "DUP3", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 166, + "end": 630, + "name": "ADD", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 166, + "end": 630, + "name": "ADD", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH [tag]", + "source": 0, + "value": "21" + }, + { + "begin": 166, + "end": 630, + "name": "JUMP", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "tag", + "source": 0, + "value": "22" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "tag", + "source": 0, + "value": "20" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "POP", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "POP", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH [tag]", + "source": 0, + "value": "23" + }, + { + "begin": 166, + "end": 630, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH [tag]", + "source": 0, + "value": "24" + }, + { + "begin": 166, + "end": 630, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "tag", + "source": 0, + "value": "23" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "POP", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "jumpType": "[out]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "tag", + "source": 0, + "value": "24" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "tag", + "source": 0, + "value": "25" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "DUP1", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "DUP3", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "GT", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "ISZERO", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH [tag]", + "source": 0, + "value": "26" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 166, + "end": 630, + "name": "DUP2", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 166, + "end": 630, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "POP", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 166, + "end": 630, + "name": "ADD", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH [tag]", + "source": 0, + "value": "25" + }, + { + "begin": 166, + "end": 630, + "name": "JUMP", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "tag", + "source": 0, + "value": "26" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "POP", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "jumpType": "[out]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 7, + "end": 187, + "name": "tag", + "source": 1, + "value": "6" + }, + { + "begin": 7, + "end": 187, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 55, + "end": 132, + "name": "PUSH", + "source": 1, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 52, + "end": 53, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 45, + "end": 133, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 152, + "end": 156, + "name": "PUSH", + "source": 1, + "value": "41" + }, + { + "begin": 149, + "end": 150, + "name": "PUSH", + "source": 1, + "value": "4" + }, + { + "begin": 142, + "end": 157, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 176, + "end": 180, + "name": "PUSH", + "source": 1, + "value": "24" + }, + { + "begin": 173, + "end": 174, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 166, + "end": 181, + "name": "REVERT", + "source": 1 + }, + { + "begin": 193, + "end": 341, + "name": "tag", + "source": 1, + "value": "27" + }, + { + "begin": 193, + "end": 341, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 295, + "end": 306, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 332, + "end": 335, + "name": "DUP2", + "source": 1 + }, + { + "begin": 317, + "end": 335, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 317, + "end": 335, + "name": "POP", + "source": 1 + }, + { + "begin": 193, + "end": 341, + "name": "SWAP3", + "source": 1 + }, + { + "begin": 193, + "end": 341, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 193, + "end": 341, + "name": "POP", + "source": 1 + }, + { + "begin": 193, + "end": 341, + "name": "POP", + "source": 1 + }, + { + "begin": 193, + "end": 341, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 347, + "end": 500, + "name": "tag", + "source": 1, + "value": "28" + }, + { + "begin": 347, + "end": 500, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 487, + "end": 492, + "name": "PUSH", + "source": 1, + "value": "676F6F0000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 483, + "end": 484, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 475, + "end": 481, + "name": "DUP3", + "source": 1 + }, + { + "begin": 471, + "end": 485, + "name": "ADD", + "source": 1 + }, + { + "begin": 464, + "end": 493, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 347, + "end": 500, + "name": "POP", + "source": 1 + }, + { + "begin": 347, + "end": 500, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 506, + "end": 906, + "name": "tag", + "source": 1, + "value": "29" + }, + { + "begin": 506, + "end": 906, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 666, + "end": 669, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 687, + "end": 771, + "name": "PUSH [tag]", + "source": 1, + "value": "54" + }, + { + "begin": 769, + "end": 770, + "name": "PUSH", + "source": 1, + "value": "3" + }, + { + "begin": 764, + "end": 767, + "name": "DUP4", + "source": 1 + }, + { + "begin": 687, + "end": 771, + "name": "PUSH [tag]", + "source": 1, + "value": "27" + }, + { + "begin": 687, + "end": 771, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 687, + "end": 771, + "name": "tag", + "source": 1, + "value": "54" + }, + { + "begin": 687, + "end": 771, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 680, + "end": 771, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 680, + "end": 771, + "name": "POP", + "source": 1 + }, + { + "begin": 780, + "end": 873, + "name": "PUSH [tag]", + "source": 1, + "value": "55" + }, + { + "begin": 869, + "end": 872, + "name": "DUP3", + "source": 1 + }, + { + "begin": 780, + "end": 873, + "name": "PUSH [tag]", + "source": 1, + "value": "28" + }, + { + "begin": 780, + "end": 873, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 780, + "end": 873, + "name": "tag", + "source": 1, + "value": "55" + }, + { + "begin": 780, + "end": 873, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 898, + "end": 899, + "name": "PUSH", + "source": 1, + "value": "3" + }, + { + "begin": 893, + "end": 896, + "name": "DUP3", + "source": 1 + }, + { + "begin": 889, + "end": 900, + "name": "ADD", + "source": 1 + }, + { + "begin": 882, + "end": 900, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 882, + "end": 900, + "name": "POP", + "source": 1 + }, + { + "begin": 506, + "end": 906, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 506, + "end": 906, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 506, + "end": 906, + "name": "POP", + "source": 1 + }, + { + "begin": 506, + "end": 906, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 912, + "end": 1293, + "name": "tag", + "source": 1, + "value": "9" + }, + { + "begin": 912, + "end": 1293, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 1097, + "end": 1100, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 1119, + "end": 1267, + "name": "PUSH [tag]", + "source": 1, + "value": "57" + }, + { + "begin": 1263, + "end": 1266, + "name": "DUP3", + "source": 1 + }, + { + "begin": 1119, + "end": 1267, + "name": "PUSH [tag]", + "source": 1, + "value": "29" + }, + { + "begin": 1119, + "end": 1267, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 1119, + "end": 1267, + "name": "tag", + "source": 1, + "value": "57" + }, + { + "begin": 1119, + "end": 1267, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 1112, + "end": 1267, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 1112, + "end": 1267, + "name": "POP", + "source": 1 + }, + { + "begin": 1284, + "end": 1287, + "name": "DUP2", + "source": 1 + }, + { + "begin": 1277, + "end": 1287, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 1277, + "end": 1287, + "name": "POP", + "source": 1 + }, + { + "begin": 912, + "end": 1293, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 912, + "end": 1293, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 912, + "end": 1293, + "name": "POP", + "source": 1 + }, + { + "begin": 912, + "end": 1293, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 1299, + "end": 1398, + "name": "tag", + "source": 1, + "value": "30" + }, + { + "begin": 1299, + "end": 1398, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 1351, + "end": 1357, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 1385, + "end": 1390, + "name": "DUP2", + "source": 1 + }, + { + "begin": 1379, + "end": 1391, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 1369, + "end": 1391, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 1369, + "end": 1391, + "name": "POP", + "source": 1 + }, + { + "begin": 1299, + "end": 1398, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 1299, + "end": 1398, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 1299, + "end": 1398, + "name": "POP", + "source": 1 + }, + { + "begin": 1299, + "end": 1398, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 1404, + "end": 1584, + "name": "tag", + "source": 1, + "value": "31" + }, + { + "begin": 1404, + "end": 1584, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 1452, + "end": 1529, + "name": "PUSH", + "source": 1, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 1449, + "end": 1450, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 1442, + "end": 1530, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 1549, + "end": 1553, + "name": "PUSH", + "source": 1, + "value": "22" + }, + { + "begin": 1546, + "end": 1547, + "name": "PUSH", + "source": 1, + "value": "4" + }, + { + "begin": 1539, + "end": 1554, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 1573, + "end": 1577, + "name": "PUSH", + "source": 1, + "value": "24" + }, + { + "begin": 1570, + "end": 1571, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 1563, + "end": 1578, + "name": "REVERT", + "source": 1 + }, + { + "begin": 1590, + "end": 1910, + "name": "tag", + "source": 1, + "value": "32" + }, + { + "begin": 1590, + "end": 1910, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 1634, + "end": 1640, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 1671, + "end": 1672, + "name": "PUSH", + "source": 1, + "value": "2" + }, + { + "begin": 1665, + "end": 1669, + "name": "DUP3", + "source": 1 + }, + { + "begin": 1661, + "end": 1673, + "name": "DIV", + "source": 1 + }, + { + "begin": 1651, + "end": 1673, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 1651, + "end": 1673, + "name": "POP", + "source": 1 + }, + { + "begin": 1718, + "end": 1719, + "name": "PUSH", + "source": 1, + "value": "1" + }, + { + "begin": 1712, + "end": 1716, + "name": "DUP3", + "source": 1 + }, + { + "begin": 1708, + "end": 1720, + "name": "AND", + "source": 1 + }, + { + "begin": 1739, + "end": 1757, + "name": "DUP1", + "source": 1 + }, + { + "begin": 1729, + "end": 1810, + "name": "PUSH [tag]", + "source": 1, + "value": "61" + }, + { + "begin": 1729, + "end": 1810, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 1795, + "end": 1799, + "name": "PUSH", + "source": 1, + "value": "7F" + }, + { + "begin": 1787, + "end": 1793, + "name": "DUP3", + "source": 1 + }, + { + "begin": 1783, + "end": 1800, + "name": "AND", + "source": 1 + }, + { + "begin": 1773, + "end": 1800, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 1773, + "end": 1800, + "name": "POP", + "source": 1 + }, + { + "begin": 1729, + "end": 1810, + "name": "tag", + "source": 1, + "value": "61" + }, + { + "begin": 1729, + "end": 1810, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 1857, + "end": 1859, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { + "begin": 1849, + "end": 1855, + "name": "DUP3", + "source": 1 + }, + { + "begin": 1846, + "end": 1860, + "name": "LT", + "source": 1 + }, + { + "begin": 1826, + "end": 1844, + "name": "DUP2", + "source": 1 + }, + { + "begin": 1823, + "end": 1861, + "name": "SUB", + "source": 1 + }, + { + "begin": 1820, + "end": 1904, + "name": "PUSH [tag]", + "source": 1, + "value": "62" + }, + { + "begin": 1820, + "end": 1904, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 1876, + "end": 1894, + "name": "PUSH [tag]", + "source": 1, + "value": "63" + }, + { + "begin": 1876, + "end": 1894, + "name": "PUSH [tag]", + "source": 1, + "value": "31" + }, + { + "begin": 1876, + "end": 1894, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 1876, + "end": 1894, + "name": "tag", + "source": 1, + "value": "63" + }, + { + "begin": 1876, + "end": 1894, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 1820, + "end": 1904, + "name": "tag", + "source": 1, + "value": "62" + }, + { + "begin": 1820, + "end": 1904, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 1641, + "end": 1910, + "name": "POP", + "source": 1 + }, + { + "begin": 1590, + "end": 1910, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 1590, + "end": 1910, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 1590, + "end": 1910, + "name": "POP", + "source": 1 + }, + { + "begin": 1590, + "end": 1910, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 1916, + "end": 2057, + "name": "tag", + "source": 1, + "value": "33" + }, + { + "begin": 1916, + "end": 2057, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 1965, + "end": 1969, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 1988, + "end": 1991, + "name": "DUP2", + "source": 1 + }, + { + "begin": 1980, + "end": 1991, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 1980, + "end": 1991, + "name": "POP", + "source": 1 + }, + { + "begin": 2011, + "end": 2014, + "name": "DUP2", + "source": 1 + }, + { + "begin": 2008, + "end": 2009, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2001, + "end": 2015, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 2045, + "end": 2049, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { + "begin": 2042, + "end": 2043, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2032, + "end": 2050, + "name": "KECCAK256", + "source": 1 + }, + { + "begin": 2024, + "end": 2050, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2024, + "end": 2050, + "name": "POP", + "source": 1 + }, + { + "begin": 1916, + "end": 2057, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 1916, + "end": 2057, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 1916, + "end": 2057, + "name": "POP", + "source": 1 + }, + { + "begin": 1916, + "end": 2057, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2063, + "end": 2156, + "name": "tag", + "source": 1, + "value": "34" + }, + { + "begin": 2063, + "end": 2156, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2100, + "end": 2106, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2147, + "end": 2149, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { + "begin": 2142, + "end": 2144, + "name": "PUSH", + "source": 1, + "value": "1F" + }, + { + "begin": 2135, + "end": 2140, + "name": "DUP4", + "source": 1 + }, + { + "begin": 2131, + "end": 2145, + "name": "ADD", + "source": 1 + }, + { + "begin": 2127, + "end": 2150, + "name": "DIV", + "source": 1 + }, + { + "begin": 2117, + "end": 2150, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2117, + "end": 2150, + "name": "POP", + "source": 1 + }, + { + "begin": 2063, + "end": 2156, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 2063, + "end": 2156, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2063, + "end": 2156, + "name": "POP", + "source": 1 + }, + { + "begin": 2063, + "end": 2156, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2162, + "end": 2269, + "name": "tag", + "source": 1, + "value": "35" + }, + { + "begin": 2162, + "end": 2269, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2206, + "end": 2214, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2256, + "end": 2261, + "name": "DUP3", + "source": 1 + }, + { + "begin": 2250, + "end": 2254, + "name": "DUP3", + "source": 1 + }, + { + "begin": 2246, + "end": 2262, + "name": "SHL", + "source": 1 + }, + { + "begin": 2225, + "end": 2262, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2225, + "end": 2262, + "name": "POP", + "source": 1 + }, + { + "begin": 2162, + "end": 2269, + "name": "SWAP3", + "source": 1 + }, + { + "begin": 2162, + "end": 2269, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 2162, + "end": 2269, + "name": "POP", + "source": 1 + }, + { + "begin": 2162, + "end": 2269, + "name": "POP", + "source": 1 + }, + { + "begin": 2162, + "end": 2269, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2275, + "end": 2668, + "name": "tag", + "source": 1, + "value": "36" + }, + { + "begin": 2275, + "end": 2668, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2344, + "end": 2350, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2394, + "end": 2395, + "name": "PUSH", + "source": 1, + "value": "8" + }, + { + "begin": 2382, + "end": 2392, + "name": "DUP4", + "source": 1 + }, + { + "begin": 2378, + "end": 2396, + "name": "MUL", + "source": 1 + }, + { + "begin": 2417, + "end": 2514, + "name": "PUSH [tag]", + "source": 1, + "value": "68" + }, + { + "begin": 2447, + "end": 2513, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" + }, + { + "begin": 2436, + "end": 2445, + "name": "DUP3", + "source": 1 + }, + { + "begin": 2417, + "end": 2514, + "name": "PUSH [tag]", + "source": 1, + "value": "35" + }, + { + "begin": 2417, + "end": 2514, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2417, + "end": 2514, + "name": "tag", + "source": 1, + "value": "68" + }, + { + "begin": 2417, + "end": 2514, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2535, + "end": 2574, + "name": "PUSH [tag]", + "source": 1, + "value": "69" + }, + { + "begin": 2565, + "end": 2573, + "name": "DUP7", + "source": 1 + }, + { + "begin": 2554, + "end": 2563, + "name": "DUP4", + "source": 1 + }, + { + "begin": 2535, + "end": 2574, + "name": "PUSH [tag]", + "source": 1, + "value": "35" + }, + { + "begin": 2535, + "end": 2574, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2535, + "end": 2574, + "name": "tag", + "source": 1, + "value": "69" + }, + { + "begin": 2535, + "end": 2574, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2523, + "end": 2574, + "name": "SWAP6", + "source": 1 + }, + { + "begin": 2523, + "end": 2574, + "name": "POP", + "source": 1 + }, + { + "begin": 2607, + "end": 2611, + "name": "DUP1", + "source": 1 + }, + { + "begin": 2603, + "end": 2612, + "name": "NOT", + "source": 1 + }, + { + "begin": 2596, + "end": 2601, + "name": "DUP5", + "source": 1 + }, + { + "begin": 2592, + "end": 2613, + "name": "AND", + "source": 1 + }, + { + "begin": 2583, + "end": 2613, + "name": "SWAP4", + "source": 1 + }, + { + "begin": 2583, + "end": 2613, + "name": "POP", + "source": 1 + }, + { + "begin": 2656, + "end": 2660, + "name": "DUP1", + "source": 1 + }, + { + "begin": 2646, + "end": 2654, + "name": "DUP7", + "source": 1 + }, + { + "begin": 2642, + "end": 2661, + "name": "AND", + "source": 1 + }, + { + "begin": 2635, + "end": 2640, + "name": "DUP5", + "source": 1 + }, + { + "begin": 2632, + "end": 2662, + "name": "OR", + "source": 1 + }, + { + "begin": 2622, + "end": 2662, + "name": "SWAP3", + "source": 1 + }, + { + "begin": 2622, + "end": 2662, + "name": "POP", + "source": 1 + }, + { + "begin": 2351, + "end": 2668, + "name": "POP", + "source": 1 + }, + { + "begin": 2351, + "end": 2668, + "name": "POP", + "source": 1 + }, + { + "begin": 2275, + "end": 2668, + "name": "SWAP4", + "source": 1 + }, + { + "begin": 2275, + "end": 2668, + "name": "SWAP3", + "source": 1 + }, + { + "begin": 2275, + "end": 2668, + "name": "POP", + "source": 1 + }, + { + "begin": 2275, + "end": 2668, + "name": "POP", + "source": 1 + }, + { + "begin": 2275, + "end": 2668, + "name": "POP", + "source": 1 + }, + { + "begin": 2275, + "end": 2668, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2674, + "end": 2751, + "name": "tag", + "source": 1, + "value": "37" + }, + { + "begin": 2674, + "end": 2751, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2711, + "end": 2718, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2740, + "end": 2745, + "name": "DUP2", + "source": 1 + }, + { + "begin": 2729, + "end": 2745, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2729, + "end": 2745, + "name": "POP", + "source": 1 + }, + { + "begin": 2674, + "end": 2751, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 2674, + "end": 2751, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2674, + "end": 2751, + "name": "POP", + "source": 1 + }, + { + "begin": 2674, + "end": 2751, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2757, + "end": 2817, + "name": "tag", + "source": 1, + "value": "38" + }, + { + "begin": 2757, + "end": 2817, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2785, + "end": 2788, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2806, + "end": 2811, + "name": "DUP2", + "source": 1 + }, + { + "begin": 2799, + "end": 2811, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2799, + "end": 2811, + "name": "POP", + "source": 1 + }, + { + "begin": 2757, + "end": 2817, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 2757, + "end": 2817, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2757, + "end": 2817, + "name": "POP", + "source": 1 + }, + { + "begin": 2757, + "end": 2817, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2823, + "end": 2965, + "name": "tag", + "source": 1, + "value": "39" + }, + { + "begin": 2823, + "end": 2965, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2873, + "end": 2882, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 2906, + "end": 2959, + "name": "PUSH [tag]", + "source": 1, + "value": "73" + }, + { + "begin": 2924, + "end": 2958, + "name": "PUSH [tag]", + "source": 1, + "value": "74" + }, + { + "begin": 2933, + "end": 2957, + "name": "PUSH [tag]", + "source": 1, + "value": "75" + }, + { + "begin": 2951, + "end": 2956, + "name": "DUP5", + "source": 1 + }, + { + "begin": 2933, + "end": 2957, + "name": "PUSH [tag]", + "source": 1, + "value": "37" + }, + { + "begin": 2933, + "end": 2957, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2933, + "end": 2957, + "name": "tag", + "source": 1, + "value": "75" + }, + { + "begin": 2933, + "end": 2957, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2924, + "end": 2958, + "name": "PUSH [tag]", + "source": 1, + "value": "38" + }, + { + "begin": 2924, + "end": 2958, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2924, + "end": 2958, + "name": "tag", + "source": 1, + "value": "74" + }, + { + "begin": 2924, + "end": 2958, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2906, + "end": 2959, + "name": "PUSH [tag]", + "source": 1, + "value": "37" + }, + { + "begin": 2906, + "end": 2959, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2906, + "end": 2959, + "name": "tag", + "source": 1, + "value": "73" + }, + { + "begin": 2906, + "end": 2959, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 2893, + "end": 2959, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2893, + "end": 2959, + "name": "POP", + "source": 1 + }, + { + "begin": 2823, + "end": 2965, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 2823, + "end": 2965, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2823, + "end": 2965, + "name": "POP", + "source": 1 + }, + { + "begin": 2823, + "end": 2965, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 2971, + "end": 3046, + "name": "tag", + "source": 1, + "value": "40" + }, + { + "begin": 2971, + "end": 3046, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3014, + "end": 3017, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 3035, + "end": 3040, + "name": "DUP2", + "source": 1 + }, + { + "begin": 3028, + "end": 3040, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 3028, + "end": 3040, + "name": "POP", + "source": 1 + }, + { + "begin": 2971, + "end": 3046, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 2971, + "end": 3046, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 2971, + "end": 3046, + "name": "POP", + "source": 1 + }, + { + "begin": 2971, + "end": 3046, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3052, + "end": 3321, + "name": "tag", + "source": 1, + "value": "41" + }, + { + "begin": 3052, + "end": 3321, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3162, + "end": 3201, + "name": "PUSH [tag]", + "source": 1, + "value": "78" + }, + { + "begin": 3193, + "end": 3200, + "name": "DUP4", + "source": 1 + }, + { + "begin": 3162, + "end": 3201, + "name": "PUSH [tag]", + "source": 1, + "value": "39" + }, + { + "begin": 3162, + "end": 3201, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3162, + "end": 3201, + "name": "tag", + "source": 1, + "value": "78" + }, + { + "begin": 3162, + "end": 3201, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3223, + "end": 3314, + "name": "PUSH [tag]", + "source": 1, + "value": "79" + }, + { + "begin": 3272, + "end": 3313, + "name": "PUSH [tag]", + "source": 1, + "value": "80" + }, + { + "begin": 3296, + "end": 3312, + "name": "DUP3", + "source": 1 + }, + { + "begin": 3272, + "end": 3313, + "name": "PUSH [tag]", + "source": 1, + "value": "40" + }, + { + "begin": 3272, + "end": 3313, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3272, + "end": 3313, + "name": "tag", + "source": 1, + "value": "80" + }, + { + "begin": 3272, + "end": 3313, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3264, + "end": 3270, + "name": "DUP5", + "source": 1 + }, + { + "begin": 3257, + "end": 3261, + "name": "DUP5", + "source": 1 + }, + { + "begin": 3251, + "end": 3262, + "name": "SLOAD", + "source": 1 + }, + { + "begin": 3223, + "end": 3314, + "name": "PUSH [tag]", + "source": 1, + "value": "36" + }, + { + "begin": 3223, + "end": 3314, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3223, + "end": 3314, + "name": "tag", + "source": 1, + "value": "79" + }, + { + "begin": 3223, + "end": 3314, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3217, + "end": 3221, + "name": "DUP3", + "source": 1 + }, + { + "begin": 3210, + "end": 3315, + "name": "SSTORE", + "source": 1 + }, + { + "begin": 3128, + "end": 3321, + "name": "POP", + "source": 1 + }, + { + "begin": 3052, + "end": 3321, + "name": "POP", + "source": 1 + }, + { + "begin": 3052, + "end": 3321, + "name": "POP", + "source": 1 + }, + { + "begin": 3052, + "end": 3321, + "name": "POP", + "source": 1 + }, + { + "begin": 3052, + "end": 3321, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3327, + "end": 3400, + "name": "tag", + "source": 1, + "value": "42" + }, + { + "begin": 3327, + "end": 3400, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3372, + "end": 3375, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 3327, + "end": 3400, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 3327, + "end": 3400, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3406, + "end": 3595, + "name": "tag", + "source": 1, + "value": "43" + }, + { + "begin": 3406, + "end": 3595, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3483, + "end": 3515, + "name": "PUSH [tag]", + "source": 1, + "value": "83" + }, + { + "begin": 3483, + "end": 3515, + "name": "PUSH [tag]", + "source": 1, + "value": "42" + }, + { + "begin": 3483, + "end": 3515, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3483, + "end": 3515, + "name": "tag", + "source": 1, + "value": "83" + }, + { + "begin": 3483, + "end": 3515, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3524, + "end": 3589, + "name": "PUSH [tag]", + "source": 1, + "value": "84" + }, + { + "begin": 3582, + "end": 3588, + "name": "DUP2", + "source": 1 + }, + { + "begin": 3574, + "end": 3580, + "name": "DUP5", + "source": 1 + }, + { + "begin": 3568, + "end": 3572, + "name": "DUP5", + "source": 1 + }, + { + "begin": 3524, + "end": 3589, + "name": "PUSH [tag]", + "source": 1, + "value": "41" + }, + { + "begin": 3524, + "end": 3589, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3524, + "end": 3589, + "name": "tag", + "source": 1, + "value": "84" + }, + { + "begin": 3524, + "end": 3589, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3459, + "end": 3595, + "name": "POP", + "source": 1 + }, + { + "begin": 3406, + "end": 3595, + "name": "POP", + "source": 1 + }, + { + "begin": 3406, + "end": 3595, + "name": "POP", + "source": 1 + }, + { + "begin": 3406, + "end": 3595, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3601, + "end": 3787, + "name": "tag", + "source": 1, + "value": "44" + }, + { + "begin": 3601, + "end": 3787, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3661, + "end": 3781, + "name": "tag", + "source": 1, + "value": "86" + }, + { + "begin": 3661, + "end": 3781, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3678, + "end": 3681, + "name": "DUP2", + "source": 1 + }, + { + "begin": 3671, + "end": 3676, + "name": "DUP2", + "source": 1 + }, + { + "begin": 3668, + "end": 3682, + "name": "LT", + "source": 1 + }, + { + "begin": 3661, + "end": 3781, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 3661, + "end": 3781, + "name": "PUSH [tag]", + "source": 1, + "value": "88" + }, + { + "begin": 3661, + "end": 3781, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 3732, + "end": 3771, + "name": "PUSH [tag]", + "source": 1, + "value": "89" + }, + { + "begin": 3769, + "end": 3770, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 3762, + "end": 3767, + "name": "DUP3", + "source": 1 + }, + { + "begin": 3732, + "end": 3771, + "name": "PUSH [tag]", + "source": 1, + "value": "43" + }, + { + "begin": 3732, + "end": 3771, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3732, + "end": 3771, + "name": "tag", + "source": 1, + "value": "89" + }, + { + "begin": 3732, + "end": 3771, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3705, + "end": 3706, + "name": "PUSH", + "source": 1, + "value": "1" + }, + { + "begin": 3698, + "end": 3703, + "name": "DUP2", + "source": 1 + }, + { + "begin": 3694, + "end": 3707, + "name": "ADD", + "source": 1 + }, + { + "begin": 3685, + "end": 3707, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 3685, + "end": 3707, + "name": "POP", + "source": 1 + }, + { + "begin": 3661, + "end": 3781, + "name": "PUSH [tag]", + "source": 1, + "value": "86" + }, + { + "begin": 3661, + "end": 3781, + "name": "JUMP", + "source": 1 + }, + { + "begin": 3661, + "end": 3781, + "name": "tag", + "source": 1, + "value": "88" + }, + { + "begin": 3661, + "end": 3781, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3601, + "end": 3787, + "name": "POP", + "source": 1 + }, + { + "begin": 3601, + "end": 3787, + "name": "POP", + "source": 1 + }, + { + "begin": 3601, + "end": 3787, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3793, + "end": 4336, + "name": "tag", + "source": 1, + "value": "45" + }, + { + "begin": 3793, + "end": 4336, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3894, + "end": 3896, + "name": "PUSH", + "source": 1, + "value": "1F" + }, + { + "begin": 3889, + "end": 3892, + "name": "DUP3", + "source": 1 + }, + { + "begin": 3886, + "end": 3897, + "name": "GT", + "source": 1 + }, + { + "begin": 3883, + "end": 4329, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 3883, + "end": 4329, + "name": "PUSH [tag]", + "source": 1, + "value": "91" + }, + { + "begin": 3883, + "end": 4329, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 3928, + "end": 3966, + "name": "PUSH [tag]", + "source": 1, + "value": "92" + }, + { + "begin": 3960, + "end": 3965, + "name": "DUP2", + "source": 1 + }, + { + "begin": 3928, + "end": 3966, + "name": "PUSH [tag]", + "source": 1, + "value": "33" + }, + { + "begin": 3928, + "end": 3966, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 3928, + "end": 3966, + "name": "tag", + "source": 1, + "value": "92" + }, + { + "begin": 3928, + "end": 3966, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 4012, + "end": 4041, + "name": "PUSH [tag]", + "source": 1, + "value": "93" + }, + { + "begin": 4030, + "end": 4040, + "name": "DUP5", + "source": 1 + }, + { + "begin": 4012, + "end": 4041, + "name": "PUSH [tag]", + "source": 1, + "value": "34" + }, + { + "begin": 4012, + "end": 4041, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 4012, + "end": 4041, + "name": "tag", + "source": 1, + "value": "93" + }, + { + "begin": 4012, + "end": 4041, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 4002, + "end": 4010, + "name": "DUP2", + "source": 1 + }, + { + "begin": 3998, + "end": 4042, + "name": "ADD", + "source": 1 + }, + { + "begin": 4195, + "end": 4197, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { + "begin": 4183, + "end": 4193, + "name": "DUP6", + "source": 1 + }, + { + "begin": 4180, + "end": 4198, + "name": "LT", + "source": 1 + }, + { + "begin": 4177, + "end": 4226, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 4177, + "end": 4226, + "name": "PUSH [tag]", + "source": 1, + "value": "94" + }, + { + "begin": 4177, + "end": 4226, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 4216, + "end": 4224, + "name": "DUP2", + "source": 1 + }, + { + "begin": 4201, + "end": 4224, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4201, + "end": 4224, + "name": "POP", + "source": 1 + }, + { + "begin": 4177, + "end": 4226, + "name": "tag", + "source": 1, + "value": "94" + }, + { + "begin": 4177, + "end": 4226, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 4239, + "end": 4319, + "name": "PUSH [tag]", + "source": 1, + "value": "95" + }, + { + "begin": 4295, + "end": 4317, + "name": "PUSH [tag]", + "source": 1, + "value": "96" + }, + { + "begin": 4313, + "end": 4316, + "name": "DUP6", + "source": 1 + }, + { + "begin": 4295, + "end": 4317, + "name": "PUSH [tag]", + "source": 1, + "value": "34" + }, + { + "begin": 4295, + "end": 4317, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 4295, + "end": 4317, + "name": "tag", + "source": 1, + "value": "96" + }, + { + "begin": 4295, + "end": 4317, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 4285, + "end": 4293, + "name": "DUP4", + "source": 1 + }, + { + "begin": 4281, + "end": 4318, + "name": "ADD", + "source": 1 + }, + { + "begin": 4268, + "end": 4279, + "name": "DUP3", + "source": 1 + }, + { + "begin": 4239, + "end": 4319, + "name": "PUSH [tag]", + "source": 1, + "value": "44" + }, + { + "begin": 4239, + "end": 4319, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 4239, + "end": 4319, + "name": "tag", + "source": 1, + "value": "95" + }, + { + "begin": 4239, + "end": 4319, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3898, + "end": 4329, + "name": "POP", + "source": 1 + }, + { + "begin": 3898, + "end": 4329, + "name": "POP", + "source": 1 + }, + { + "begin": 3883, + "end": 4329, + "name": "tag", + "source": 1, + "value": "91" + }, + { + "begin": 3883, + "end": 4329, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 3793, + "end": 4336, + "name": "POP", + "source": 1 + }, + { + "begin": 3793, + "end": 4336, + "name": "POP", + "source": 1 + }, + { + "begin": 3793, + "end": 4336, + "name": "POP", + "source": 1 + }, + { + "begin": 3793, + "end": 4336, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 4342, + "end": 4459, + "name": "tag", + "source": 1, + "value": "46" + }, + { + "begin": 4342, + "end": 4459, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 4396, + "end": 4404, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4446, + "end": 4451, + "name": "DUP3", + "source": 1 + }, + { + "begin": 4440, + "end": 4444, + "name": "DUP3", + "source": 1 + }, + { + "begin": 4436, + "end": 4452, + "name": "SHR", + "source": 1 + }, + { + "begin": 4415, + "end": 4452, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4415, + "end": 4452, + "name": "POP", + "source": 1 + }, + { + "begin": 4342, + "end": 4459, + "name": "SWAP3", + "source": 1 + }, + { + "begin": 4342, + "end": 4459, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 4342, + "end": 4459, + "name": "POP", + "source": 1 + }, + { + "begin": 4342, + "end": 4459, + "name": "POP", + "source": 1 + }, + { + "begin": 4342, + "end": 4459, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 4465, + "end": 4634, + "name": "tag", + "source": 1, + "value": "47" + }, + { + "begin": 4465, + "end": 4634, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 4509, + "end": 4515, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4542, + "end": 4593, + "name": "PUSH [tag]", + "source": 1, + "value": "99" + }, + { + "begin": 4590, + "end": 4591, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4586, + "end": 4592, + "name": "NOT", + "source": 1 + }, + { + "begin": 4578, + "end": 4583, + "name": "DUP5", + "source": 1 + }, + { + "begin": 4575, + "end": 4576, + "name": "PUSH", + "source": 1, + "value": "8" + }, + { + "begin": 4571, + "end": 4584, + "name": "MUL", + "source": 1 + }, + { + "begin": 4542, + "end": 4593, + "name": "PUSH [tag]", + "source": 1, + "value": "46" + }, + { + "begin": 4542, + "end": 4593, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 4542, + "end": 4593, + "name": "tag", + "source": 1, + "value": "99" + }, + { + "begin": 4542, + "end": 4593, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 4538, + "end": 4594, + "name": "NOT", + "source": 1 + }, + { + "begin": 4623, + "end": 4627, + "name": "DUP1", + "source": 1 + }, + { + "begin": 4617, + "end": 4621, + "name": "DUP4", + "source": 1 + }, + { + "begin": 4613, + "end": 4628, + "name": "AND", + "source": 1 + }, + { + "begin": 4603, + "end": 4628, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 4603, + "end": 4628, + "name": "POP", + "source": 1 + }, + { + "begin": 4516, + "end": 4634, + "name": "POP", + "source": 1 + }, + { + "begin": 4465, + "end": 4634, + "name": "SWAP3", + "source": 1 + }, + { + "begin": 4465, + "end": 4634, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 4465, + "end": 4634, + "name": "POP", + "source": 1 + }, + { + "begin": 4465, + "end": 4634, + "name": "POP", + "source": 1 + }, + { + "begin": 4465, + "end": 4634, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 4639, + "end": 4934, + "name": "tag", + "source": 1, + "value": "48" + }, + { + "begin": 4639, + "end": 4934, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 4715, + "end": 4719, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 4861, + "end": 4890, + "name": "PUSH [tag]", + "source": 1, + "value": "101" + }, + { + "begin": 4886, + "end": 4889, + "name": "DUP4", + "source": 1 + }, + { + "begin": 4880, + "end": 4884, + "name": "DUP4", + "source": 1 + }, + { + "begin": 4861, + "end": 4890, + "name": "PUSH [tag]", + "source": 1, + "value": "47" + }, + { + "begin": 4861, + "end": 4890, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 4861, + "end": 4890, + "name": "tag", + "source": 1, + "value": "101" + }, + { + "begin": 4861, + "end": 4890, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 4853, + "end": 4890, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 4853, + "end": 4890, + "name": "POP", + "source": 1 + }, + { + "begin": 4923, + "end": 4926, + "name": "DUP3", + "source": 1 + }, + { + "begin": 4920, + "end": 4921, + "name": "PUSH", + "source": 1, + "value": "2" + }, + { + "begin": 4916, + "end": 4927, + "name": "MUL", + "source": 1 + }, + { + "begin": 4910, + "end": 4914, + "name": "DUP3", + "source": 1 + }, + { + "begin": 4907, + "end": 4928, + "name": "OR", + "source": 1 + }, + { + "begin": 4899, + "end": 4928, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 4899, + "end": 4928, + "name": "POP", + "source": 1 + }, + { + "begin": 4639, + "end": 4934, + "name": "SWAP3", + "source": 1 + }, + { + "begin": 4639, + "end": 4934, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 4639, + "end": 4934, + "name": "POP", + "source": 1 + }, + { + "begin": 4639, + "end": 4934, + "name": "POP", + "source": 1 + }, + { + "begin": 4639, + "end": 4934, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 4939, + "end": 6334, + "name": "tag", + "source": 1, + "value": "11" + }, + { + "begin": 4939, + "end": 6334, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 5056, + "end": 5093, + "name": "PUSH [tag]", + "source": 1, + "value": "103" + }, + { + "begin": 5089, + "end": 5092, + "name": "DUP3", + "source": 1 + }, + { + "begin": 5056, + "end": 5093, + "name": "PUSH [tag]", + "source": 1, + "value": "30" + }, + { + "begin": 5056, + "end": 5093, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 5056, + "end": 5093, + "name": "tag", + "source": 1, + "value": "103" + }, + { + "begin": 5056, + "end": 5093, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 5158, + "end": 5176, + "name": "PUSH", + "source": 1, + "value": "FFFFFFFFFFFFFFFF" + }, + { + "begin": 5150, + "end": 5156, + "name": "DUP2", + "source": 1 + }, + { + "begin": 5147, + "end": 5177, + "name": "GT", + "source": 1 + }, + { + "begin": 5144, + "end": 5200, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 5144, + "end": 5200, + "name": "PUSH [tag]", + "source": 1, + "value": "104" + }, + { + "begin": 5144, + "end": 5200, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 5180, + "end": 5198, + "name": "PUSH [tag]", + "source": 1, + "value": "105" + }, + { + "begin": 5180, + "end": 5198, + "name": "PUSH [tag]", + "source": 1, + "value": "6" + }, + { + "begin": 5180, + "end": 5198, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 5180, + "end": 5198, + "name": "tag", + "source": 1, + "value": "105" + }, + { + "begin": 5180, + "end": 5198, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 5144, + "end": 5200, + "name": "tag", + "source": 1, + "value": "104" + }, + { + "begin": 5144, + "end": 5200, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 5224, + "end": 5262, + "name": "PUSH [tag]", + "source": 1, + "value": "106" + }, + { + "begin": 5256, + "end": 5260, + "name": "DUP3", + "source": 1 + }, + { + "begin": 5250, + "end": 5261, + "name": "SLOAD", + "source": 1 + }, + { + "begin": 5224, + "end": 5262, + "name": "PUSH [tag]", + "source": 1, + "value": "32" + }, + { + "begin": 5224, + "end": 5262, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 5224, + "end": 5262, + "name": "tag", + "source": 1, + "value": "106" + }, + { + "begin": 5224, + "end": 5262, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 5309, + "end": 5376, + "name": "PUSH [tag]", + "source": 1, + "value": "107" + }, + { + "begin": 5369, + "end": 5375, + "name": "DUP3", + "source": 1 + }, + { + "begin": 5361, + "end": 5367, + "name": "DUP3", + "source": 1 + }, + { + "begin": 5355, + "end": 5359, + "name": "DUP6", + "source": 1 + }, + { + "begin": 5309, + "end": 5376, + "name": "PUSH [tag]", + "source": 1, + "value": "45" + }, + { + "begin": 5309, + "end": 5376, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 5309, + "end": 5376, + "name": "tag", + "source": 1, + "value": "107" + }, + { + "begin": 5309, + "end": 5376, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 5403, + "end": 5404, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 5427, + "end": 5431, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { + "begin": 5414, + "end": 5431, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 5414, + "end": 5431, + "name": "POP", + "source": 1 + }, + { + "begin": 5459, + "end": 5461, + "name": "PUSH", + "source": 1, + "value": "1F" + }, + { + "begin": 5451, + "end": 5457, + "name": "DUP4", + "source": 1 + }, + { + "begin": 5448, + "end": 5462, + "name": "GT", + "source": 1 + }, + { + "begin": 5476, + "end": 5477, + "name": "PUSH", + "source": 1, + "value": "1" + }, + { + "begin": 5471, + "end": 6089, + "name": "DUP2", + "source": 1 + }, + { + "begin": 5471, + "end": 6089, + "name": "EQ", + "source": 1 + }, + { + "begin": 5471, + "end": 6089, + "name": "PUSH [tag]", + "source": 1, + "value": "109" + }, + { + "begin": 5471, + "end": 6089, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 6133, + "end": 6134, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 6150, + "end": 6156, + "name": "DUP5", + "source": 1 + }, + { + "begin": 6147, + "end": 6224, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 6147, + "end": 6224, + "name": "PUSH [tag]", + "source": 1, + "value": "110" + }, + { + "begin": 6147, + "end": 6224, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 6199, + "end": 6208, + "name": "DUP3", + "source": 1 + }, + { + "begin": 6194, + "end": 6197, + "name": "DUP8", + "source": 1 + }, + { + "begin": 6190, + "end": 6209, + "name": "ADD", + "source": 1 + }, + { + "begin": 6184, + "end": 6210, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 6175, + "end": 6210, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 6175, + "end": 6210, + "name": "POP", + "source": 1 + }, + { + "begin": 6147, + "end": 6224, + "name": "tag", + "source": 1, + "value": "110" + }, + { + "begin": 6147, + "end": 6224, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 6250, + "end": 6317, + "name": "PUSH [tag]", + "source": 1, + "value": "111" + }, + { + "begin": 6310, + "end": 6316, + "name": "DUP6", + "source": 1 + }, + { + "begin": 6303, + "end": 6308, + "name": "DUP3", + "source": 1 + }, + { + "begin": 6250, + "end": 6317, + "name": "PUSH [tag]", + "source": 1, + "value": "48" + }, + { + "begin": 6250, + "end": 6317, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 6250, + "end": 6317, + "name": "tag", + "source": 1, + "value": "111" + }, + { + "begin": 6250, + "end": 6317, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 6244, + "end": 6248, + "name": "DUP7", + "source": 1 + }, + { + "begin": 6237, + "end": 6318, + "name": "SSTORE", + "source": 1 + }, + { + "begin": 6106, + "end": 6328, + "name": "POP", + "source": 1 + }, + { + "begin": 5441, + "end": 6328, + "name": "PUSH [tag]", + "source": 1, + "value": "108" + }, + { + "begin": 5441, + "end": 6328, + "name": "JUMP", + "source": 1 + }, + { + "begin": 5471, + "end": 6089, + "name": "tag", + "source": 1, + "value": "109" + }, + { + "begin": 5471, + "end": 6089, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 5523, + "end": 5527, + "name": "PUSH", + "source": 1, + "value": "1F" + }, + { + "begin": 5519, + "end": 5528, + "name": "NOT", + "source": 1 + }, + { + "begin": 5511, + "end": 5517, + "name": "DUP5", + "source": 1 + }, + { + "begin": 5507, + "end": 5529, + "name": "AND", + "source": 1 + }, + { + "begin": 5557, + "end": 5594, + "name": "PUSH [tag]", + "source": 1, + "value": "112" + }, + { + "begin": 5589, + "end": 5593, + "name": "DUP7", + "source": 1 + }, + { + "begin": 5557, + "end": 5594, + "name": "PUSH [tag]", + "source": 1, + "value": "33" + }, + { + "begin": 5557, + "end": 5594, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 5557, + "end": 5594, + "name": "tag", + "source": 1, + "value": "112" + }, + { + "begin": 5557, + "end": 5594, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 5616, + "end": 5617, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 5630, + "end": 5838, + "name": "tag", + "source": 1, + "value": "113" + }, + { + "begin": 5630, + "end": 5838, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 5644, + "end": 5651, + "name": "DUP3", + "source": 1 + }, + { + "begin": 5641, + "end": 5642, + "name": "DUP2", + "source": 1 + }, + { + "begin": 5638, + "end": 5652, + "name": "LT", + "source": 1 + }, + { + "begin": 5630, + "end": 5838, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 5630, + "end": 5838, + "name": "PUSH [tag]", + "source": 1, + "value": "115" + }, + { + "begin": 5630, + "end": 5838, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 5723, + "end": 5732, + "name": "DUP5", + "source": 1 + }, + { + "begin": 5718, + "end": 5721, + "name": "DUP10", + "source": 1 + }, + { + "begin": 5714, + "end": 5733, + "name": "ADD", + "source": 1 + }, + { + "begin": 5708, + "end": 5734, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 5700, + "end": 5706, + "name": "DUP3", + "source": 1 + }, + { + "begin": 5693, + "end": 5735, + "name": "SSTORE", + "source": 1 + }, + { + "begin": 5774, + "end": 5775, + "name": "PUSH", + "source": 1, + "value": "1" + }, + { + "begin": 5766, + "end": 5772, + "name": "DUP3", + "source": 1 + }, + { + "begin": 5762, + "end": 5776, + "name": "ADD", + "source": 1 + }, + { + "begin": 5752, + "end": 5776, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 5752, + "end": 5776, + "name": "POP", + "source": 1 + }, + { + "begin": 5821, + "end": 5823, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { + "begin": 5810, + "end": 5819, + "name": "DUP6", + "source": 1 + }, + { + "begin": 5806, + "end": 5824, + "name": "ADD", + "source": 1 + }, + { + "begin": 5793, + "end": 5824, + "name": "SWAP5", + "source": 1 + }, + { + "begin": 5793, + "end": 5824, + "name": "POP", + "source": 1 + }, + { + "begin": 5667, + "end": 5671, + "name": "PUSH", + "source": 1, + "value": "20" + }, + { + "begin": 5664, + "end": 5665, + "name": "DUP2", + "source": 1 + }, + { + "begin": 5660, + "end": 5672, + "name": "ADD", + "source": 1 + }, + { + "begin": 5655, + "end": 5672, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 5655, + "end": 5672, + "name": "POP", + "source": 1 + }, + { + "begin": 5630, + "end": 5838, + "name": "PUSH [tag]", + "source": 1, + "value": "113" + }, + { + "begin": 5630, + "end": 5838, + "name": "JUMP", + "source": 1 + }, + { + "begin": 5630, + "end": 5838, + "name": "tag", + "source": 1, + "value": "115" + }, + { + "begin": 5630, + "end": 5838, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 5866, + "end": 5872, + "name": "DUP7", + "source": 1 + }, + { + "begin": 5857, + "end": 5864, + "name": "DUP4", + "source": 1 + }, + { + "begin": 5854, + "end": 5873, + "name": "LT", + "source": 1 + }, + { + "begin": 5851, + "end": 6030, + "name": "ISZERO", + "source": 1 + }, + { + "begin": 5851, + "end": 6030, + "name": "PUSH [tag]", + "source": 1, + "value": "116" + }, + { + "begin": 5851, + "end": 6030, + "name": "JUMPI", + "source": 1 + }, + { + "begin": 5924, + "end": 5933, + "name": "DUP5", + "source": 1 + }, + { + "begin": 5919, + "end": 5922, + "name": "DUP10", + "source": 1 + }, + { + "begin": 5915, + "end": 5934, + "name": "ADD", + "source": 1 + }, + { + "begin": 5909, + "end": 5935, + "name": "MLOAD", + "source": 1 + }, + { + "begin": 5967, + "end": 6015, + "name": "PUSH [tag]", + "source": 1, + "value": "117" + }, + { + "begin": 6009, + "end": 6013, + "name": "PUSH", + "source": 1, + "value": "1F" + }, + { + "begin": 6001, + "end": 6007, + "name": "DUP10", + "source": 1 + }, + { + "begin": 5997, + "end": 6014, + "name": "AND", + "source": 1 + }, + { + "begin": 5986, + "end": 5995, + "name": "DUP3", + "source": 1 + }, + { + "begin": 5967, + "end": 6015, + "name": "PUSH [tag]", + "source": 1, + "value": "47" + }, + { + "begin": 5967, + "end": 6015, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 5967, + "end": 6015, + "name": "tag", + "source": 1, + "value": "117" + }, + { + "begin": 5967, + "end": 6015, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 5959, + "end": 5965, + "name": "DUP4", + "source": 1 + }, + { + "begin": 5952, + "end": 6016, + "name": "SSTORE", + "source": 1 + }, + { + "begin": 5874, + "end": 6030, + "name": "POP", + "source": 1 + }, + { + "begin": 5851, + "end": 6030, + "name": "tag", + "source": 1, + "value": "116" + }, + { + "begin": 5851, + "end": 6030, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 6076, + "end": 6077, + "name": "PUSH", + "source": 1, + "value": "1" + }, + { + "begin": 6072, + "end": 6073, + "name": "PUSH", + "source": 1, + "value": "2" + }, + { + "begin": 6064, + "end": 6070, + "name": "DUP9", + "source": 1 + }, + { + "begin": 6060, + "end": 6074, + "name": "MUL", + "source": 1 + }, + { + "begin": 6056, + "end": 6078, + "name": "ADD", + "source": 1 + }, + { + "begin": 6050, + "end": 6054, + "name": "DUP9", + "source": 1 + }, + { + "begin": 6043, + "end": 6079, + "name": "SSTORE", + "source": 1 + }, + { + "begin": 5478, + "end": 6089, + "name": "POP", + "source": 1 + }, + { + "begin": 5478, + "end": 6089, + "name": "POP", + "source": 1 + }, + { + "begin": 5478, + "end": 6089, + "name": "POP", + "source": 1 + }, + { + "begin": 5441, + "end": 6328, + "name": "tag", + "source": 1, + "value": "108" + }, + { + "begin": 5441, + "end": 6328, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 5441, + "end": 6328, + "name": "POP", + "source": 1 + }, + { + "begin": 5031, + "end": 6334, + "name": "POP", + "source": 1 + }, + { + "begin": 5031, + "end": 6334, + "name": "POP", + "source": 1 + }, + { + "begin": 5031, + "end": 6334, + "name": "POP", + "source": 1 + }, + { + "begin": 4939, + "end": 6334, + "name": "POP", + "source": 1 + }, + { + "begin": 4939, + "end": 6334, + "name": "POP", + "source": 1 + }, + { + "begin": 4939, + "end": 6334, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 6340, + "end": 6520, + "name": "tag", + "source": 1, + "value": "17" + }, + { + "begin": 6340, + "end": 6520, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 6388, + "end": 6465, + "name": "PUSH", + "source": 1, + "value": "4E487B7100000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 6385, + "end": 6386, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 6378, + "end": 6466, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 6485, + "end": 6489, + "name": "PUSH", + "source": 1, + "value": "32" + }, + { + "begin": 6482, + "end": 6483, + "name": "PUSH", + "source": 1, + "value": "4" + }, + { + "begin": 6475, + "end": 6490, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 6509, + "end": 6513, + "name": "PUSH", + "source": 1, + "value": "24" + }, + { + "begin": 6506, + "end": 6507, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 6499, + "end": 6514, + "name": "REVERT", + "source": 1 + }, + { + "begin": 166, + "end": 630, + "name": "tag", + "source": 0, + "value": "19" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH #[$]", + "source": 0, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 166, + "end": 630, + "name": "DUP1", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH [$]", + "source": 0, + "value": "0000000000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 166, + "end": 630, + "name": "CODECOPY", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 166, + "end": 630, + "name": "RETURN", + "source": 0 + } + ], + ".data": { + "0": { + ".auxdata": "a26469706673582212209afc85b0006e5ba9fd94d0aa763eec28613e731ddcd180afdcb3bb6b9a10903364736f6c63430008150033", + ".code": [ + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "80" + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 166, + "end": 630, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "CALLVALUE", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "DUP1", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "ISZERO", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH [tag]", + "source": 0, + "value": "1" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 166, + "end": 630, + "name": "DUP1", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "REVERT", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "tag", + "source": 0, + "value": "1" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "POP", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "4" + }, + { + "begin": 166, + "end": 630, + "name": "CALLDATASIZE", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "LT", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH [tag]", + "source": 0, + "value": "2" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 166, + "end": 630, + "name": "CALLDATALOAD", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "E0" + }, + { + "begin": 166, + "end": 630, + "name": "SHR", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "DUP1", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "5C36B186" + }, + { + "begin": 166, + "end": 630, + "name": "EQ", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH [tag]", + "source": 0, + "value": "3" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPI", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "tag", + "source": 0, + "value": "2" + }, + { + "begin": 166, + "end": 630, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 166, + "end": 630, + "name": "DUP1", + "source": 0 + }, + { + "begin": 166, + "end": 630, + "name": "REVERT", + "source": 0 + }, + { + "begin": 460, + "end": 628, + "name": "tag", + "source": 0, + "value": "3" + }, + { + "begin": 460, + "end": 628, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 460, + "end": 628, + "name": "PUSH [tag]", + "source": 0, + "value": "4" + }, + { + "begin": 460, + "end": 628, + "name": "PUSH [tag]", + "source": 0, + "value": "5" + }, + { + "begin": 460, + "end": 628, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 460, + "end": 628, + "name": "tag", + "source": 0, + "value": "4" + }, + { + "begin": 460, + "end": 628, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 460, + "end": 628, + "name": "STOP", + "source": 0 + }, + { + "begin": 460, + "end": 628, + "name": "tag", + "source": 0, + "value": "5" + }, + { + "begin": 460, + "end": 628, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 497, + "end": 500, + "name": "PUSH", + "source": 0, + "value": "65" + }, + { + "begin": 493, + "end": 494, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 493, + "end": 494, + "name": "DUP1", + "source": 0 + }, + { + "begin": 493, + "end": 500, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { + "begin": 493, + "end": 500, + "name": "EXP", + "source": 0 + }, + { + "begin": 493, + "end": 500, + "name": "DUP2", + "source": 0 + }, + { + "begin": 493, + "end": 500, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 493, + "end": 500, + "name": "DUP2", + "source": 0 + }, + { + "begin": 493, + "end": 500, + "name": "PUSH", + "source": 0, + "value": "FF" + }, + { + "begin": 493, + "end": 500, + "name": "MUL", + "source": 0 + }, + { + "begin": 493, + "end": 500, + "name": "NOT", + "source": 0 + }, + { + "begin": 493, + "end": 500, + "name": "AND", + "source": 0 + }, + { + "begin": 493, + "end": 500, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 493, + "end": 500, + "name": "DUP4", + "source": 0 + }, + { + "begin": 493, + "end": 500, + "name": "PUSH", + "source": 0, + "value": "FF" + }, + { + "begin": 493, + "end": 500, + "name": "AND", + "source": 0 + }, + { + "begin": 493, + "end": 500, + "name": "MUL", + "source": 0 + }, + { + "begin": 493, + "end": 500, + "name": "OR", + "source": 0 + }, + { + "begin": 493, + "end": 500, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 493, + "end": 500, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 493, + "end": 500, + "name": "POP", + "source": 0 + }, + { + "begin": 518, + "end": 520, + "name": "PUSH", + "source": 0, + "value": "2B" + }, + { + "begin": 510, + "end": 512, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 510, + "end": 515, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 513, + "end": 514, + "name": "PUSH", + "source": 0, + "value": "2" + }, + { + "begin": 510, + "end": 515, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 510, + "end": 515, + "name": "SIGNEXTEND", + "source": 0 + }, + { + "begin": 510, + "end": 515, + "name": "DUP2", + "source": 0 + }, + { + "begin": 510, + "end": 515, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 510, + "end": 515, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 510, + "end": 515, + "name": "ADD", + "source": 0 + }, + { + "begin": 510, + "end": 515, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 510, + "end": 515, + "name": "DUP2", + "source": 0 + }, + { + "begin": 510, + "end": 515, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 510, + "end": 515, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 510, + "end": 515, + "name": "ADD", + "source": 0 + }, + { + "begin": 510, + "end": 515, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 510, + "end": 515, + "name": "KECCAK256", + "source": 0 + }, + { + "begin": 510, + "end": 515, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 510, + "end": 520, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { + "begin": 510, + "end": 520, + "name": "EXP", + "source": 0 + }, + { + "begin": 510, + "end": 520, + "name": "DUP2", + "source": 0 + }, + { + "begin": 510, + "end": 520, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 510, + "end": 520, + "name": "DUP2", + "source": 0 + }, + { + "begin": 510, + "end": 520, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFF" + }, + { + "begin": 510, + "end": 520, + "name": "MUL", + "source": 0 + }, + { + "begin": 510, + "end": 520, + "name": "NOT", + "source": 0 + }, + { + "begin": 510, + "end": 520, + "name": "AND", + "source": 0 + }, + { + "begin": 510, + "end": 520, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 510, + "end": 520, + "name": "DUP4", + "source": 0 + }, + { + "begin": 510, + "end": 520, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFF" + }, + { + "begin": 510, + "end": 520, + "name": "AND", + "source": 0 + }, + { + "begin": 510, + "end": 520, + "name": "MUL", + "source": 0 + }, + { + "begin": 510, + "end": 520, + "name": "OR", + "source": 0 + }, + { + "begin": 510, + "end": 520, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 510, + "end": 520, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 510, + "end": 520, + "name": "POP", + "source": 0 + }, + { + "begin": 547, + "end": 552, + "name": "PUSH", + "source": 0, + "value": "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC16" + }, + { + "begin": 530, + "end": 534, + "name": "PUSH", + "source": 0, + "value": "3" + }, + { + "begin": 530, + "end": 541, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 530, + "end": 541, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 530, + "end": 541, + "name": "PUSH [tag]", + "source": 0, + "value": "7" + }, + { + "begin": 530, + "end": 541, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 530, + "end": 541, + "name": "PUSH [tag]", + "source": 0, + "value": "8" + }, + { + "begin": 530, + "end": 541, + "jumpType": "[in]", + "name": "JUMP", + "source": 0 + }, + { + "begin": 530, + "end": 541, + "name": "tag", + "source": 0, + "value": "7" + }, + { + "begin": 530, + "end": 541, + "name": "JUMPDEST", + "source": 0 + }, + { + "begin": 530, + "end": 541, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 530, + "end": 541, + "name": "DUP2", + "source": 0 + }, + { + "begin": 530, + "end": 541, + "name": "MSTORE", + "source": 0 + }, + { + "begin": 530, + "end": 541, + "name": "PUSH", + "source": 0, + "value": "20" + }, + { + "begin": 530, + "end": 541, + "name": "ADD", + "source": 0 + }, + { + "begin": 530, + "end": 541, + "name": "PUSH", + "source": 0, + "value": "40" + }, + { + "begin": 530, + "end": 541, + "name": "MLOAD", + "source": 0 + }, + { + "begin": 530, + "end": 541, + "name": "DUP1", + "source": 0 + }, + { + "begin": 530, + "end": 541, + "name": "SWAP2", + "source": 0 + }, + { + "begin": 530, + "end": 541, + "name": "SUB", + "source": 0 + }, + { + "begin": 530, + "end": 541, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 530, + "end": 541, + "name": "KECCAK256", + "source": 0 + }, + { + "begin": 530, + "end": 544, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 530, + "end": 544, + "name": "ADD", + "source": 0 + }, + { + "begin": 530, + "end": 544, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 530, + "end": 552, + "name": "PUSH", + "source": 0, + "value": "100" + }, + { + "begin": 530, + "end": 552, + "name": "EXP", + "source": 0 + }, + { + "begin": 530, + "end": 552, + "name": "DUP2", + "source": 0 + }, + { + "begin": 530, + "end": 552, + "name": "SLOAD", + "source": 0 + }, + { + "begin": 530, + "end": 552, + "name": "DUP2", + "source": 0 + }, + { + "begin": 530, + "end": 552, + "name": "PUSH", + "source": 0, + "value": "FFFF" + }, + { + "begin": 530, + "end": 552, + "name": "MUL", + "source": 0 + }, + { + "begin": 530, + "end": 552, + "name": "NOT", + "source": 0 + }, + { + "begin": 530, + "end": 552, + "name": "AND", + "source": 0 + }, + { + "begin": 530, + "end": 552, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 530, + "end": 552, + "name": "DUP4", + "source": 0 + }, + { + "begin": 530, + "end": 552, + "name": "PUSH", + "source": 0, + "value": "1" + }, + { + "begin": 530, + "end": 552, + "name": "SIGNEXTEND", + "source": 0 + }, + { + "begin": 530, + "end": 552, + "name": "PUSH", + "source": 0, + "value": "FFFF" + }, + { + "begin": 530, + "end": 552, + "name": "AND", + "source": 0 + }, + { + "begin": 530, + "end": 552, + "name": "MUL", + "source": 0 + }, + { + "begin": 530, + "end": 552, + "name": "OR", + "source": 0 + }, + { + "begin": 530, + "end": 552, + "name": "SWAP1", + "source": 0 + }, + { + "begin": 530, + "end": 552, + "name": "SSTORE", + "source": 0 + }, + { + "begin": 563, + "end": 571, + "name": "PUSH", + "source": 0, + "value": "0" + }, + { + "begin": 563, + "end": 571, + "name": "DUP1", + "source": 0 + }, + { + "begin": 563, + "end": 571, + "name": "REVERT", + "source": 0 + }, + { + "begin": 7, + "end": 155, + "name": "tag", + "source": 1, + "value": "10" + }, + { + "begin": 7, + "end": 155, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 109, + "end": 120, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 146, + "end": 149, + "name": "DUP2", + "source": 1 + }, + { + "begin": 131, + "end": 149, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 131, + "end": 149, + "name": "POP", + "source": 1 + }, + { + "begin": 7, + "end": 155, + "name": "SWAP3", + "source": 1 + }, + { + "begin": 7, + "end": 155, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 7, + "end": 155, + "name": "POP", + "source": 1 + }, + { + "begin": 7, + "end": 155, + "name": "POP", + "source": 1 + }, + { + "begin": 7, + "end": 155, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 161, + "end": 314, + "name": "tag", + "source": 1, + "value": "11" + }, + { + "begin": 161, + "end": 314, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 301, + "end": 306, + "name": "PUSH", + "source": 1, + "value": "676F6F0000000000000000000000000000000000000000000000000000000000" + }, + { + "begin": 297, + "end": 298, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 289, + "end": 295, + "name": "DUP3", + "source": 1 + }, + { + "begin": 285, + "end": 299, + "name": "ADD", + "source": 1 + }, + { + "begin": 278, + "end": 307, + "name": "MSTORE", + "source": 1 + }, + { + "begin": 161, + "end": 314, + "name": "POP", + "source": 1 + }, + { + "begin": 161, + "end": 314, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 320, + "end": 720, + "name": "tag", + "source": 1, + "value": "12" + }, + { + "begin": 320, + "end": 720, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 480, + "end": 483, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 501, + "end": 585, + "name": "PUSH [tag]", + "source": 1, + "value": "17" + }, + { + "begin": 583, + "end": 584, + "name": "PUSH", + "source": 1, + "value": "3" + }, + { + "begin": 578, + "end": 581, + "name": "DUP4", + "source": 1 + }, + { + "begin": 501, + "end": 585, + "name": "PUSH [tag]", + "source": 1, + "value": "10" + }, + { + "begin": 501, + "end": 585, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 501, + "end": 585, + "name": "tag", + "source": 1, + "value": "17" + }, + { + "begin": 501, + "end": 585, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 494, + "end": 585, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 494, + "end": 585, + "name": "POP", + "source": 1 + }, + { + "begin": 594, + "end": 687, + "name": "PUSH [tag]", + "source": 1, + "value": "18" + }, + { + "begin": 683, + "end": 686, + "name": "DUP3", + "source": 1 + }, + { + "begin": 594, + "end": 687, + "name": "PUSH [tag]", + "source": 1, + "value": "11" + }, + { + "begin": 594, + "end": 687, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 594, + "end": 687, + "name": "tag", + "source": 1, + "value": "18" + }, + { + "begin": 594, + "end": 687, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 712, + "end": 713, + "name": "PUSH", + "source": 1, + "value": "3" + }, + { + "begin": 707, + "end": 710, + "name": "DUP3", + "source": 1 + }, + { + "begin": 703, + "end": 714, + "name": "ADD", + "source": 1 + }, + { + "begin": 696, + "end": 714, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 696, + "end": 714, + "name": "POP", + "source": 1 + }, + { + "begin": 320, + "end": 720, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 320, + "end": 720, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 320, + "end": 720, + "name": "POP", + "source": 1 + }, + { + "begin": 320, + "end": 720, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 726, + "end": 1107, + "name": "tag", + "source": 1, + "value": "8" + }, + { + "begin": 726, + "end": 1107, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 911, + "end": 914, + "name": "PUSH", + "source": 1, + "value": "0" + }, + { + "begin": 933, + "end": 1081, + "name": "PUSH [tag]", + "source": 1, + "value": "20" + }, + { + "begin": 1077, + "end": 1080, + "name": "DUP3", + "source": 1 + }, + { + "begin": 933, + "end": 1081, + "name": "PUSH [tag]", + "source": 1, + "value": "12" + }, + { + "begin": 933, + "end": 1081, + "jumpType": "[in]", + "name": "JUMP", + "source": 1 + }, + { + "begin": 933, + "end": 1081, + "name": "tag", + "source": 1, + "value": "20" + }, + { + "begin": 933, + "end": 1081, + "name": "JUMPDEST", + "source": 1 + }, + { + "begin": 926, + "end": 1081, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 926, + "end": 1081, + "name": "POP", + "source": 1 + }, + { + "begin": 1098, + "end": 1101, + "name": "DUP2", + "source": 1 + }, + { + "begin": 1091, + "end": 1101, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 1091, + "end": 1101, + "name": "POP", + "source": 1 + }, + { + "begin": 726, + "end": 1107, + "name": "SWAP2", + "source": 1 + }, + { + "begin": 726, + "end": 1107, + "name": "SWAP1", + "source": 1 + }, + { + "begin": 726, + "end": 1107, + "name": "POP", + "source": 1 + }, + { + "begin": 726, + "end": 1107, + "jumpType": "[out]", + "name": "JUMP", + "source": 1 + } + ] + } + }, + "sourceList": [ + "contracts/layout_maps.sol", + "#utility.yul" + ] + }, + "methodIdentifiers": { + "ping()": "5c36b186" + } + }, + "metadata": "{\"compiler\":{\"version\":\"0.8.21+commit.d9974bed\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ping\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/layout_maps.sol\":\"Layout_map\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/layout_maps.sol\":{\"keccak256\":\"0x18ea27b67c1cd6d48e5afd3de906461c7ebebeeb00f5edd764c2d1a62030f609\",\"urls\":[\"bzz-raw://b4ad0a9a83022a71a21fd1015c6f8f2a0ccca3641fe420a97c9b5b6d1f12f060\",\"dweb:/ipfs/QmTy5gWa926Eg7zbVcvZvoVb2Zrco97WQRRZrJRdWSrq2J\"]}},\"version\":1}", + "storageLayout": { + "storage": [ + { + "astId": 20, + "contract": "contracts/layout_maps.sol:Layout_map", + "label": "a", + "offset": 0, + "slot": "0", + "type": "t_uint8" + }, + { + "astId": 24, + "contract": "contracts/layout_maps.sol:Layout_map", + "label": "m1", + "offset": 0, + "slot": "1", + "type": "t_mapping(t_int16,t_uint32)" + }, + { + "astId": 26, + "contract": "contracts/layout_maps.sol:Layout_map", + "label": "b", + "offset": 0, + "slot": "2", + "type": "t_uint8" + }, + { + "astId": 31, + "contract": "contracts/layout_maps.sol:Layout_map", + "label": "fMap", + "offset": 0, + "slot": "3", + "type": "t_mapping(t_string_memory_ptr,t_struct(Foo)11_storage)" + } + ], + "types": { + "t_array(t_int256)dyn_storage": { + "base": "t_int256", + "encoding": "dynamic_array", + "label": "int256[]", + "numberOfBytes": "32" + }, + "t_int16": { + "encoding": "inplace", + "label": "int16", + "numberOfBytes": "2" + }, + "t_int256": { + "encoding": "inplace", + "label": "int256", + "numberOfBytes": "32" + }, + "t_int8": { + "encoding": "inplace", + "label": "int8", + "numberOfBytes": "1" + }, + "t_mapping(t_int16,t_uint32)": { + "encoding": "mapping", + "key": "t_int16", + "label": "mapping(int16 => uint32)", + "numberOfBytes": "32", + "value": "t_uint32" + }, + "t_mapping(t_string_memory_ptr,t_struct(Foo)11_storage)": { + "encoding": "mapping", + "key": "t_string_memory_ptr", + "label": "mapping(string => struct Foo)", + "numberOfBytes": "32", + "value": "t_struct(Foo)11_storage" + }, + "t_string_memory_ptr": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_string_storage": { + "encoding": "bytes", + "label": "string", + "numberOfBytes": "32" + }, + "t_struct(Foo)11_storage": { + "encoding": "inplace", + "label": "struct Foo", + "members": [ + { + "astId": 3, + "contract": "contracts/layout_maps.sol:Layout_map", + "label": "fa", + "offset": 0, + "slot": "0", + "type": "t_int8" + }, + { + "astId": 5, + "contract": "contracts/layout_maps.sol:Layout_map", + "label": "fb", + "offset": 1, + "slot": "0", + "type": "t_int16" + }, + { + "astId": 7, + "contract": "contracts/layout_maps.sol:Layout_map", + "label": "fc", + "offset": 0, + "slot": "1", + "type": "t_string_storage" + }, + { + "astId": 10, + "contract": "contracts/layout_maps.sol:Layout_map", + "label": "fd", + "offset": 0, + "slot": "2", + "type": "t_array(t_int256)dyn_storage" + } + ], + "numberOfBytes": "96" + }, + "t_uint32": { + "encoding": "inplace", + "label": "uint32", + "numberOfBytes": "4" + }, + "t_uint8": { + "encoding": "inplace", + "label": "uint8", + "numberOfBytes": "1" + } + } + }, + "userdoc": { + "kind": "user", + "methods": {}, + "version": 1 + } + } + } + }, + "errors": [ + { + "component": "general", + "errorCode": "1878", + "formattedMessage": "Warning: SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: \" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.\n--> contracts/layout_maps.sol\n\n", + "message": "SPDX license identifier not provided in source file. Before publishing, consider adding a comment containing \"SPDX-License-Identifier: \" to each source file. Use \"SPDX-License-Identifier: UNLICENSED\" for non-open-source code. Please see https://spdx.org for more information.", + "severity": "warning", + "sourceLocation": { + "end": -1, + "file": "contracts/layout_maps.sol", + "start": -1 + }, + "type": "Warning" + }, + { + "component": "general", + "errorCode": "2462", + "formattedMessage": "Warning: Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.\n --> contracts/layout_maps.sol:21:5:\n |\n21 | constructor() public {\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n", + "message": "Visibility for constructor is ignored. If you want the contract to be non-deployable, making it \"abstract\" is sufficient.", + "severity": "warning", + "sourceLocation": { + "end": 454, + "file": "contracts/layout_maps.sol", + "start": 285 + }, + "type": "Warning" + }, + { + "component": "general", + "errorCode": "5740", + "formattedMessage": "Warning: Unreachable code.\n --> contracts/layout_maps.sol:35:9:\n |\n35 | m1[1] = 10;\n | ^ (Relevant source part starts here and spans across multiple lines).\n\n", + "message": "Unreachable code.", + "severity": "warning", + "sourceLocation": { + "end": 620, + "file": "contracts/layout_maps.sol", + "start": 581 + }, + "type": "Warning" + } + ], + "sources": { + "contracts/layout_maps.sol": { + "ast": { + "absolutePath": "contracts/layout_maps.sol", + "exportedSymbols": { + "Foo": [ + 11 + ], + "Layout_map": [ + 113 + ], + "MapStruct": [ + 18 + ] + }, + "id": 114, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "0.8", + ".21" + ], + "nodeType": "PragmaDirective", + "src": "0:23:0" + }, + { + "canonicalName": "Foo", + "id": 11, + "members": [ + { + "constant": false, + "id": 3, + "mutability": "mutable", + "name": "fa", + "nameLocation": "47:2:0", + "nodeType": "VariableDeclaration", + "scope": 11, + "src": "42:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + }, + "typeName": { + "id": 2, + "name": "int8", + "nodeType": "ElementaryTypeName", + "src": "42:4:0", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 5, + "mutability": "mutable", + "name": "fb", + "nameLocation": "61:2:0", + "nodeType": "VariableDeclaration", + "scope": 11, + "src": "55:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + }, + "typeName": { + "id": 4, + "name": "int16", + "nodeType": "ElementaryTypeName", + "src": "55:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 7, + "mutability": "mutable", + "name": "fc", + "nameLocation": "76:2:0", + "nodeType": "VariableDeclaration", + "scope": 11, + "src": "69:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 6, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "69:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 10, + "mutability": "mutable", + "name": "fd", + "nameLocation": "90:2:0", + "nodeType": "VariableDeclaration", + "scope": 11, + "src": "84:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_int256_$dyn_storage_ptr", + "typeString": "int256[]" + }, + "typeName": { + "baseType": { + "id": 8, + "name": "int", + "nodeType": "ElementaryTypeName", + "src": "84:3:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 9, + "nodeType": "ArrayTypeName", + "src": "84:5:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_int256_$dyn_storage_ptr", + "typeString": "int256[]" + } + }, + "visibility": "internal" + } + ], + "name": "Foo", + "nameLocation": "32:3:0", + "nodeType": "StructDefinition", + "scope": 114, + "src": "25:70:0", + "visibility": "public" + }, + { + "canonicalName": "MapStruct", + "id": 18, + "members": [ + { + "constant": false, + "id": 13, + "mutability": "mutable", + "name": "msA", + "nameLocation": "125:3:0", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "120:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + }, + "typeName": { + "id": 12, + "name": "int8", + "nodeType": "ElementaryTypeName", + "src": "120:4:0", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 17, + "mutability": "mutable", + "name": "b1", + "nameLocation": "159:2:0", + "nodeType": "VariableDeclaration", + "scope": 18, + "src": "134:27:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 16, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 14, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "142:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "134:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 15, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "153:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "visibility": "internal" + } + ], + "name": "MapStruct", + "nameLocation": "104:9:0", + "nodeType": "StructDefinition", + "scope": 114, + "src": "97:67:0", + "visibility": "public" + }, + { + "abstract": false, + "baseContracts": [], + "canonicalName": "Layout_map", + "contractDependencies": [], + "contractKind": "contract", + "fullyImplemented": true, + "id": 113, + "linearizedBaseContracts": [ + 113 + ], + "name": "Layout_map", + "nameLocation": "175:10:0", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 20, + "mutability": "mutable", + "name": "a", + "nameLocation": "198:1:0", + "nodeType": "VariableDeclaration", + "scope": 113, + "src": "192:7:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 19, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "192:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 24, + "mutability": "mutable", + "name": "m1", + "nameLocation": "230:2:0", + "nodeType": "VariableDeclaration", + "scope": 113, + "src": "205:27:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_int16_$_t_uint32_$", + "typeString": "mapping(int16 => uint32)" + }, + "typeName": { + "id": 23, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 21, + "name": "int16", + "nodeType": "ElementaryTypeName", + "src": "213:5:0", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "nodeType": "Mapping", + "src": "205:24:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_int16_$_t_uint32_$", + "typeString": "mapping(int16 => uint32)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 22, + "name": "uint32", + "nodeType": "ElementaryTypeName", + "src": "222:6:0", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 26, + "mutability": "mutable", + "name": "b", + "nameLocation": "244:1:0", + "nodeType": "VariableDeclaration", + "scope": 113, + "src": "238:7:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 25, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "238:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "visibility": "internal" + }, + { + "constant": false, + "id": 31, + "mutability": "mutable", + "name": "fMap", + "nameLocation": "274:4:0", + "nodeType": "VariableDeclaration", + "scope": 113, + "src": "251:27:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_Foo_$11_storage_$", + "typeString": "mapping(string => struct Foo)" + }, + "typeName": { + "id": 30, + "keyName": "", + "keyNameLocation": "-1:-1:-1", + "keyType": { + "id": 27, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "259:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "nodeType": "Mapping", + "src": "251:22:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_Foo_$11_storage_$", + "typeString": "mapping(string => struct Foo)" + }, + "valueName": "", + "valueNameLocation": "-1:-1:-1", + "valueType": { + "id": 29, + "nodeType": "UserDefinedTypeName", + "pathNode": { + "id": 28, + "name": "Foo", + "nameLocations": [ + "269:3:0" + ], + "nodeType": "IdentifierPath", + "referencedDeclaration": 11, + "src": "269:3:0" + }, + "referencedDeclaration": 11, + "src": "269:3:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Foo_$11_storage_ptr", + "typeString": "struct Foo" + } + } + }, + "visibility": "internal" + }, + { + "body": { + "id": 73, + "nodeType": "Block", + "src": "306:148:0", + "statements": [ + { + "expression": { + "id": 36, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 34, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "316:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "31", + "id": 35, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "320:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "316:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 37, + "nodeType": "ExpressionStatement", + "src": "316:5:0" + }, + { + "expression": { + "id": 40, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 38, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 26, + "src": "331:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "32", + "id": 39, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "335:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "331:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 41, + "nodeType": "ExpressionStatement", + "src": "331:5:0" + }, + { + "expression": { + "id": 46, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 42, + "name": "m1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 24, + "src": "346:2:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_int16_$_t_uint32_$", + "typeString": "mapping(int16 => uint32)" + } + }, + "id": 44, + "indexExpression": { + "hexValue": "31", + "id": 43, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "349:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "346:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "3432", + "id": 45, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "354:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_42_by_1", + "typeString": "int_const 42" + }, + "value": "42" + }, + "src": "346:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 47, + "nodeType": "ExpressionStatement", + "src": "346:10:0" + }, + { + "expression": { + "id": 62, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 48, + "name": "fMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "367:4:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_Foo_$11_storage_$", + "typeString": "mapping(string memory => struct Foo storage ref)" + } + }, + "id": 50, + "indexExpression": { + "hexValue": "676f6f", + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "372:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d", + "typeString": "literal_string \"goo\"" + }, + "value": "goo" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "367:11:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Foo_$11_storage", + "typeString": "struct Foo storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "arguments": [ + { + "id": 53, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "385:2:0", + "subExpression": { + "hexValue": "31", + "id": 52, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "386:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + }, + { + "hexValue": "31303030", + "id": 54, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "389:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + }, + { + "hexValue": "6479", + "id": 55, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "395:4:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_77023b3216cbbeabffea63b85427856a5b868fd17100f725609b0a5945621cc0", + "typeString": "literal_string \"dy\"" + }, + "value": "dy" + }, + { + "arguments": [ + { + "hexValue": "31", + "id": 59, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "411:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "401:9:0", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_int256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (int256[] memory)" + }, + "typeName": { + "baseType": { + "id": 56, + "name": "int", + "nodeType": "ElementaryTypeName", + "src": "405:3:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 57, + "nodeType": "ArrayTypeName", + "src": "405:5:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_int256_$dyn_storage_ptr", + "typeString": "int256[]" + } + } + }, + "id": 60, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "401:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr", + "typeString": "int256[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + }, + { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + { + "typeIdentifier": "t_stringliteral_77023b3216cbbeabffea63b85427856a5b868fd17100f725609b0a5945621cc0", + "typeString": "literal_string \"dy\"" + }, + { + "typeIdentifier": "t_array$_t_int256_$dyn_memory_ptr", + "typeString": "int256[] memory" + } + ], + "id": 51, + "name": "Foo", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 11, + "src": "381:3:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Foo_$11_storage_ptr_$", + "typeString": "type(struct Foo storage pointer)" + } + }, + "id": 61, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "structConstructorCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "381:33:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Foo_$11_memory_ptr", + "typeString": "struct Foo memory" + } + }, + "src": "367:47:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Foo_$11_storage", + "typeString": "struct Foo storage ref" + } + }, + "id": 63, + "nodeType": "ExpressionStatement", + "src": "367:47:0" + }, + { + "expression": { + "id": 71, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "expression": { + "baseExpression": { + "id": 64, + "name": "fMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "424:4:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_Foo_$11_storage_$", + "typeString": "mapping(string memory => struct Foo storage ref)" + } + }, + "id": 66, + "indexExpression": { + "hexValue": "676f6f", + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "429:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d", + "typeString": "literal_string \"goo\"" + }, + "value": "goo" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "424:11:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Foo_$11_storage", + "typeString": "struct Foo storage ref" + } + }, + "id": 67, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberLocation": "436:2:0", + "memberName": "fd", + "nodeType": "MemberAccess", + "referencedDeclaration": 10, + "src": "424:14:0", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_int256_$dyn_storage", + "typeString": "int256[] storage ref" + } + }, + "id": 69, + "indexExpression": { + "hexValue": "30", + "id": 68, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "439:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "424:17:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "313030", + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "444:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_100_by_1", + "typeString": "int_const 100" + }, + "value": "100" + }, + "src": "424:23:0", + "typeDescriptions": { + "typeIdentifier": "t_int256", + "typeString": "int256" + } + }, + "id": 72, + "nodeType": "ExpressionStatement", + "src": "424:23:0" + } + ] + }, + "id": 74, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nameLocation": "-1:-1:-1", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 32, + "nodeType": "ParameterList", + "parameters": [], + "src": "296:2:0" + }, + "returnParameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [], + "src": "306:0:0" + }, + "scope": 113, + "src": "285:169:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 111, + "nodeType": "Block", + "src": "483:145:0", + "statements": [ + { + "expression": { + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "id": 77, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "493:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "313031", + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "497:3:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_101_by_1", + "typeString": "int_const 101" + }, + "value": "101" + }, + "src": "493:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 80, + "nodeType": "ExpressionStatement", + "src": "493:7:0" + }, + { + "expression": { + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 81, + "name": "m1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 24, + "src": "510:2:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_int16_$_t_uint32_$", + "typeString": "mapping(int16 => uint32)" + } + }, + "id": 83, + "indexExpression": { + "hexValue": "32", + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "513:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "510:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "3433", + "id": 84, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "518:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_43_by_1", + "typeString": "int_const 43" + }, + "value": "43" + }, + "src": "510:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 86, + "nodeType": "ExpressionStatement", + "src": "510:10:0" + }, + { + "expression": { + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 87, + "name": "fMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "530:4:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_Foo_$11_storage_$", + "typeString": "mapping(string memory => struct Foo storage ref)" + } + }, + "id": 89, + "indexExpression": { + "hexValue": "676f6f", + "id": 88, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "535:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d", + "typeString": "literal_string \"goo\"" + }, + "value": "goo" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "530:11:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Foo_$11_storage", + "typeString": "struct Foo storage ref" + } + }, + "id": 90, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "542:2:0", + "memberName": "fb", + "nodeType": "MemberAccess", + "referencedDeclaration": 5, + "src": "530:14:0", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "id": 92, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "547:5:0", + "subExpression": { + "hexValue": "31303032", + "id": 91, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "548:4:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1002_by_1", + "typeString": "int_const 1002" + }, + "value": "1002" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1002_by_1", + "typeString": "int_const -1002" + } + }, + "src": "530:22:0", + "typeDescriptions": { + "typeIdentifier": "t_int16", + "typeString": "int16" + } + }, + "id": 94, + "nodeType": "ExpressionStatement", + "src": "530:22:0" + }, + { + "expression": { + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 95, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 4294967277, + 4294967277 + ], + "referencedDeclaration": 4294967277, + "src": "563:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "nameLocations": [], + "names": [], + "nodeType": "FunctionCall", + "src": "563:8:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 97, + "nodeType": "ExpressionStatement", + "src": "563:8:0" + }, + { + "expression": { + "id": 102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "baseExpression": { + "id": 98, + "name": "m1", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 24, + "src": "581:2:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_int16_$_t_uint32_$", + "typeString": "mapping(int16 => uint32)" + } + }, + "id": 100, + "indexExpression": { + "hexValue": "31", + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "584:1:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "581:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "3130", + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "589:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "581:10:0", + "typeDescriptions": { + "typeIdentifier": "t_uint32", + "typeString": "uint32" + } + }, + "id": 103, + "nodeType": "ExpressionStatement", + "src": "581:10:0" + }, + { + "expression": { + "id": 109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "expression": { + "baseExpression": { + "id": 104, + "name": "fMap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 31, + "src": "601:4:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_string_memory_ptr_$_t_struct$_Foo_$11_storage_$", + "typeString": "mapping(string memory => struct Foo storage ref)" + } + }, + "id": 106, + "indexExpression": { + "hexValue": "676f6f", + "id": 105, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "606:5:0", + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_55a1d10f5a7bb4b8da100e62a9ca0e09d2c8a171e25b4fb1435f0e1317a0810d", + "typeString": "literal_string \"goo\"" + }, + "value": "goo" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "601:11:0", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Foo_$11_storage", + "typeString": "struct Foo storage ref" + } + }, + "id": 107, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberLocation": "613:2:0", + "memberName": "fa", + "nodeType": "MemberAccess", + "referencedDeclaration": 3, + "src": "601:14:0", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "hexValue": "3131", + "id": 108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "618:2:0", + "typeDescriptions": { + "typeIdentifier": "t_rational_11_by_1", + "typeString": "int_const 11" + }, + "value": "11" + }, + "src": "601:19:0", + "typeDescriptions": { + "typeIdentifier": "t_int8", + "typeString": "int8" + } + }, + "id": 110, + "nodeType": "ExpressionStatement", + "src": "601:19:0" + } + ] + }, + "functionSelector": "5c36b186", + "id": 112, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ping", + "nameLocation": "469:4:0", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 75, + "nodeType": "ParameterList", + "parameters": [], + "src": "473:2:0" + }, + "returnParameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [], + "src": "483:0:0" + }, + "scope": 113, + "src": "460:168:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 114, + "src": "166:464:0", + "usedErrors": [], + "usedEvents": [] + } + ], + "src": "0:631:0" + }, + "id": 0 + } + } +} diff --git a/test/samples/local/layout_maps_fail/contracts/contracts/layout_maps.sol b/test/samples/local/layout_maps_fail/contracts/contracts/layout_maps.sol new file mode 100644 index 0000000..3cf09ca --- /dev/null +++ b/test/samples/local/layout_maps_fail/contracts/contracts/layout_maps.sol @@ -0,0 +1,38 @@ +pragma solidity 0.8.21; + +struct Foo { + int8 fa; + int16 fb; + string fc; + int[] fd; +} + +struct MapStruct { + int8 msA; + mapping(address => uint) b1; +} + +contract Layout_map { + uint8 a; + mapping(int16 => uint32) m1; + uint8 b; + mapping(string => Foo) fMap; + + constructor() public { + a = 1; + b = 2; + m1[1] = 42; + + fMap["goo"] = Foo(-1, 1000, "dy", new int[](1)); + fMap["goo"].fd[0] = 100; + } + + function ping() public { + a = 101; + m1[2] = 43; + fMap["goo"].fb = -1002; + revert(); + m1[1] = 10; + fMap["goo"].fa = 11; + } +} diff --git a/test/samples/local/layout_maps_fail/txs/tx00.json b/test/samples/local/layout_maps_fail/txs/tx00.json new file mode 100644 index 0000000..e8f10b1 --- /dev/null +++ b/test/samples/local/layout_maps_fail/txs/tx00.json @@ -0,0 +1,93 @@ +{ + "initialState": { + "accounts": { + "0xAaaaAaAAaaaAAaAAaAaaaaAAAAAaAaaaAaAaaAA0": { + "nonce": 0, + "balance": "0x0000000000000000000000f000000000", + "code": "", + "storage": {} + }, + "0xAaAaaAAAaAaaAaAaAaaAAaAaAAAAAaAAAaaAaAa2": { + "nonce": 0, + "balance": "0x0000000000000000000000f000000000", + "code": "", + "storage": {} + }, + "0xafFEaFFEAFfeAfFEAffeaFfEAfFEaffeafFeAFfE": { + "nonce": 0, + "balance": "0x0000000000000000000000f000000000", + "code": "", + "storage": {} + } + } + }, + "steps": [ + { + "address": "0x0000000000000000000000000000000000000000", + "gasLimit": "0xff0000", + "gasPrice": "0x1", + "input": "0x608060405234801561000f575f80fd5b5060015f806101000a81548160ff021916908360ff1602179055506002805f6101000a81548160ff021916908360ff160217905550602a60015f6001800b81526020019081526020015f205f6101000a81548163ffffffff021916908363ffffffff16021790555060405180608001604052807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5f0b81526020016103e860010b81526020016040518060400160405280600281526020017f64790000000000000000000000000000000000000000000000000000000000008152508152602001600167ffffffffffffffff81111561010b5761010a61027e565b5b6040519080825280602002602001820160405280156101395781602001602082028036833780820191505090505b50815250600360405161014b906102ff565b90815260200160405180910390205f820151815f015f6101000a81548160ff02191690835f0b60ff1602179055506020820151815f0160016101000a81548161ffff021916908360010b61ffff16021790555060408201518160010190816101b39190610520565b5060608201518160020190805190602001906101d0929190610218565b50905050606460036040516101e4906102ff565b90815260200160405180910390206002015f81548110610207576102066105ef565b5b905f5260205f20018190555061061c565b828054828255905f5260205f20908101928215610252579160200282015b82811115610251578251825591602001919060010190610236565b5b50905061025f9190610263565b5090565b5b8082111561027a575f815f905550600101610264565b5090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f81905092915050565b7f676f6f00000000000000000000000000000000000000000000000000000000005f82015250565b5f6102e96003836102ab565b91506102f4826102b5565b600382019050919050565b5f610309826102dd565b9150819050919050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061036157607f821691505b6020821081036103745761037361031d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103d67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261039b565b6103e0868361039b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61042461041f61041a846103f8565b610401565b6103f8565b9050919050565b5f819050919050565b61043d8361040a565b6104516104498261042b565b8484546103a7565b825550505050565b5f90565b610465610459565b610470818484610434565b505050565b5b81811015610493576104885f8261045d565b600181019050610476565b5050565b601f8211156104d8576104a98161037a565b6104b28461038c565b810160208510156104c1578190505b6104d56104cd8561038c565b830182610475565b50505b505050565b5f82821c905092915050565b5f6104f85f19846008026104dd565b1980831691505092915050565b5f61051083836104e9565b9150826002028217905092915050565b61052982610313565b67ffffffffffffffff8111156105425761054161027e565b5b61054c825461034a565b610557828285610497565b5f60209050601f831160018114610588575f8415610576578287015190505b6105808582610505565b8655506105e7565b601f1984166105968661037a565b5f5b828110156105bd57848901518255600182019150602085019450602081019050610598565b868310156105da57848901516105d6601f8916826104e9565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b610182806106295f395ff3fe608060405234801561000f575f80fd5b5060043610610029575f3560e01c80635c36b1861461002d575b5f80fd5b610035610037565b005b60655f806101000a81548160ff021916908360ff160217905550602b60015f600260010b81526020019081526020015f205f6101000a81548163ffffffff021916908363ffffffff1602179055507ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1660036040516100b490610138565b90815260200160405180910390205f0160016101000a81548161ffff021916908360010b61ffff16021790555f80fd5b5f81905092915050565b7f676f6f00000000000000000000000000000000000000000000000000000000005f82015250565b5f6101226003836100e4565b915061012d826100ee565b600382019050919050565b5f61014282610116565b915081905091905056fea26469706673582212209afc85b0006e5ba9fd94d0aa763eec28613e731ddcd180afdcb3bb6b9a10903364736f6c63430008150033", + "origin": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0", + "value": "0x0", + "blockCoinbase": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0", + "blockDifficulty": "0xc", + "blockGasLimit": "0xff0000", + "blockNumber": 1, + "blockTime": 1, + "result": { + "kind": "contract_created", + "address": "0xf084a83954ce917799e0b4dbd03934a2ea65888c" + } + }, + { + "address": "0xf084a83954ce917799e0b4dbd03934a2ea65888c", + "gasLimit": "0xff0000", + "gasPrice": "0x1", + "input": "0x5c36b186", + "origin": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0", + "value": "0x0", + "blockCoinbase": "0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0", + "blockDifficulty": "0xc", + "blockGasLimit": "0xff0000", + "blockNumber": 2, + "blockTime": 2, + "result": { + "kind": "revert", + "value": "" + }, + "layoutBefore": { + "a": "1", + "m1": { + "1": "42" + }, + "b": "2", + "fMap": { + "goo": { + "fa": "-1", + "fb": "1000", + "fc": "dy", + "fd": ["100"] + } + } + }, + "layoutAtFailure": { + "0xf084a83954ce917799e0b4dbd03934a2ea65888c": { + "a": "101", + "m1": { + "1": "42", + "2": "43" + }, + "b": "2", + "fMap": { + "goo": { + "fa": "-1", + "fb": "-1002", + "fc": "dy", + "fd": ["100"] + } + } + } + } + } + ] +} diff --git a/test/unit/debug.spec.ts b/test/unit/debug.spec.ts index 0b88563..4117f1d 100644 --- a/test/unit/debug.spec.ts +++ b/test/unit/debug.spec.ts @@ -292,7 +292,7 @@ describe("Local tests", () => { }); if (forAny(testJSON.steps, (step) => step.layoutBefore !== undefined)) { - it("Layouts ok (if specified)", async () => { + it("Layouts before tx ok (if specified)", async () => { for (let i = 0; i < runner.txs.length; i++) { const curStep = testJSON.steps[i]; @@ -340,6 +340,61 @@ describe("Local tests", () => { } }); } + + if (forAny(testJSON.steps, (step) => step.layoutAtFailure !== undefined)) { + it("Layouts at failure ok (if specified)", async () => { + for (let i = 0; i < runner.txs.length; i++) { + const curStep = testJSON.steps[i]; + + if (curStep.layoutBefore === undefined) { + continue; + } + + if ( + !( + curStep.result.kind === ResultKind.Revert || + curStep.result.kind === ResultKind.LastRevert || + curStep.result.kind === ResultKind.FoundryFail + ) + ) { + continue; + } + + const tx = runner.txs[i]; + const block = runner.getBlock(tx); + const stateBefore = runner.getStateBeforeTx(tx); + const [trace] = await solDbg.debugTx(tx, block, stateBefore); + + const errorStep = getStepFailTraceStep(curStep, trace); + + expect(errorStep).not.toBeUndefined(); + assert( + errorStep !== undefined, + "Should be catched by prev statement" + ); + + const errorStepIdx = trace.indexOf(errorStep); + assert(errorStepIdx > 0, ""); + + const layout = await runner.getDecodedContractStatesOnTxStep( + tx, + errorStepIdx + ); + + expect(layout).toBeDefined(); + + const strLayout = JSON.stringify( + sanitizeBigintFromJson(layout), + undefined, + 2 + ); + + expect(strLayout).toEqual( + JSON.stringify(curStep.layoutAtFailure, null, 2) + ); + } + }); + } }); } });