UNPKG

@aave/governance-crosschain-bridges

Version:
2,804 lines 138 kB
{
  "id": "271b69fd5796f1c76b38193724460cc6",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.8.10",
  "solcLongVersion": "0.8.10+commit.fc410830",
  "input": {
    "language": "Solidity",
    "sources": {
      "contracts/mocks/PolygonMarketUpdate.sol": {
        "content": "//SPDX-License-Identifier: Unlicense\npragma solidity ^0.8.10;\n\ncontract PolygonMarketUpdate {\n  event UpdateExecuted(uint256 counter, uint256 testInt, address testAddress, uint256 fee);\n  event DelegateUpdateExecuted(bytes32 testBytes, address sender);\n  address constant UPDATED_ADDRESS = 0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9;\n\n  uint256 private _counter;\n  uint256 private _testInt;\n\n  function execute(uint256 testInt) external payable returns (uint256) {\n    _counter = _counter + 1;\n    _testInt = testInt;\n    emit UpdateExecuted(_counter, _testInt, UPDATED_ADDRESS, msg.value);\n    return testInt;\n  }\n\n  function executeWithDelegate(bytes32 testBytes) external payable {\n    emit DelegateUpdateExecuted(testBytes, msg.sender);\n  }\n\n  function alwaysFails() public {\n    _counter = _counter + 1;\n    require(1 < 0, 'THIS_ALWAYS_FAILS');\n  }\n\n  function getCounter() public view returns (uint256) {\n    return _counter;\n  }\n\n  function getTestInt() public view returns (uint256) {\n    return _testInt;\n  }\n}\n"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.bytecode",
            "evm.deployedBytecode",
            "evm.methodIdentifiers",
            "metadata",
            "devdoc",
            "userdoc",
            "storageLayout",
            "evm.gasEstimates"
          ],
          "": [
            "ast"
          ]
        }
      },
      "metadata": {
        "useLiteralContent": true
      }
    }
  },
  "output": {
    "contracts": {
      "contracts/mocks/PolygonMarketUpdate.sol": {
        "PolygonMarketUpdate": {
          "abi": [
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "bytes32",
                  "name": "testBytes",
                  "type": "bytes32"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "sender",
                  "type": "address"
                }
              ],
              "name": "DelegateUpdateExecuted",
              "type": "event"
            },
            {
              "anonymous": false,
              "inputs": [
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "counter",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "testInt",
                  "type": "uint256"
                },
                {
                  "indexed": false,
                  "internalType": "address",
                  "name": "testAddress",
                  "type": "address"
                },
                {
                  "indexed": false,
                  "internalType": "uint256",
                  "name": "fee",
                  "type": "uint256"
                }
              ],
              "name": "UpdateExecuted",
              "type": "event"
            },
            {
              "inputs": [],
              "name": "alwaysFails",
              "outputs": [],
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "uint256",
                  "name": "testInt",
                  "type": "uint256"
                }
              ],
              "name": "execute",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [
                {
                  "internalType": "bytes32",
                  "name": "testBytes",
                  "type": "bytes32"
                }
              ],
              "name": "executeWithDelegate",
              "outputs": [],
              "stateMutability": "payable",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getCounter",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            },
            {
              "inputs": [],
              "name": "getTestInt",
              "outputs": [
                {
                  "internalType": "uint256",
                  "name": "",
                  "type": "uint256"
                }
              ],
              "stateMutability": "view",
              "type": "function"
            }
          ],
          "devdoc": {
            "kind": "dev",
            "methods": {},
            "version": 1
          },
          "evm": {
            "bytecode": {
              "functionDebugData": {},
              "generatedSources": [],
              "linkReferences": {},
              "object": "608060405234801561001057600080fd5b5061023a806100206000396000f3fe60806040526004361061004a5760003560e01c8063128e6c371461004f57806332366b3b146100665780638ada066e14610079578063e60308db1461009c578063fe0d94c1146100b1575b600080fd5b34801561005b57600080fd5b506100646100c4565b005b6100646100743660046101c5565b610115565b34801561008557600080fd5b506000545b60405190815260200160405180910390f35b3480156100a857600080fd5b5060015461008a565b61008a6100bf3660046101c5565b610150565b6000546100d29060016101de565b60005560405162461bcd60e51b8152602060048201526011602482015270544849535f414c574159535f4641494c5360781b604482015260640160405180910390fd5b604080518281523360208201527ffb431db1c12156d00849c29ca8b66475afba575929b049f491d4681dc0cc07cc910160405180910390a150565b6000805461015f9060016101de565b600081905560018390556040805191825260208201849052737d2768de32b0b80b7a3454c06bdac94a69ddc7a982820152346060830152517fd4ed93d7cb4d4a9ff33f966cb590f2780cdb3e1ccea45804716695f6d34174469181900360800190a15090565b6000602082840312156101d757600080fd5b5035919050565b600082198211156101ff57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220c33076c803d5f1974eccee078248528e182cb663cba575798546aed6805260a964736f6c634300080a0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x23A DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x128E6C37 EQ PUSH2 0x4F JUMPI DUP1 PUSH4 0x32366B3B EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0x8ADA066E EQ PUSH2 0x79 JUMPI DUP1 PUSH4 0xE60308DB EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0xFE0D94C1 EQ PUSH2 0xB1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH2 0xC4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x64 PUSH2 0x74 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x115 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 SLOAD PUSH2 0x8A JUMP JUMPDEST PUSH2 0x8A PUSH2 0xBF CALLDATASIZE PUSH1 0x4 PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x150 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xD2 SWAP1 PUSH1 0x1 PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x0 SSTORE PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x544849535F414C574159535F4641494C53 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFB431DB1C12156D00849C29CA8B66475AFBA575929B049F491D4681DC0CC07CC SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x15F SWAP1 PUSH1 0x1 PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x1 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP5 SWAP1 MSTORE PUSH20 0x7D2768DE32B0B80B7A3454C06BDAC94A69DDC7A9 DUP3 DUP3 ADD MSTORE CALLVALUE PUSH1 0x60 DUP4 ADD MSTORE MLOAD PUSH32 0xD4ED93D7CB4D4A9FF33F966CB590F2780CDB3E1CCEA45804716695F6D3417446 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1FF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC3 ADDRESS PUSH23 0xC803D5F1974ECCEE078248528E182CB663CBA575798546 0xAE 0xD6 DUP1 MSTORE PUSH1 0xA9 PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ",
              "sourceMap": "63:956:0:-:0;;;;;;;;;;;;;;;;;;;"
            },
            "deployedBytecode": {
              "functionDebugData": {
                "@alwaysFails_81": {
                  "entryPoint": 196,
                  "id": 81,
                  "parameterSlots": 0,
                  "returnSlots": 0
                },
                "@executeWithDelegate_64": {
                  "entryPoint": 277,
                  "id": 64,
                  "parameterSlots": 1,
                  "returnSlots": 0
                },
                "@execute_52": {
                  "entryPoint": 336,
                  "id": 52,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "@getCounter_89": {
                  "entryPoint": null,
                  "id": 89,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "@getTestInt_97": {
                  "entryPoint": null,
                  "id": 97,
                  "parameterSlots": 0,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_bytes32": {
                  "entryPoint": 453,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_decode_tuple_t_uint256": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 3,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_stringliteral_1d85e02ab29e46c60f78bf643cd12a0edb73a21e9895e77501d45ec6a2256a6e__to_t_string_memory_ptr__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 1,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                },
                "abi_encode_tuple_t_uint256_t_uint256_t_address_t_uint256__to_t_uint256_t_uint256_t_address_t_uint256__fromStack_reversed": {
                  "entryPoint": null,
                  "id": null,
                  "parameterSlots": 5,
                  "returnSlots": 1
                },
                "checked_add_t_uint256": {
                  "entryPoint": 478,
                  "id": null,
                  "parameterSlots": 2,
                  "returnSlots": 1
                }
              },
              "generatedSources": [
                {
                  "ast": {
                    "nodeType": "YulBlock",
                    "src": "0:1840:1",
                    "statements": [
                      {
                        "nodeType": "YulBlock",
                        "src": "6:3:1",
                        "statements": []
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "84:110:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "130:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "139:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "142:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "132:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "132:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "132:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "105:7:1"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "114:9:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "101:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "101:23:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "126:2:1",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "97:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "97:32:1"
                              },
                              "nodeType": "YulIf",
                              "src": "94:52:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "155:33:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "178:9:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "165:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "165:23:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "155:6:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_bytes32",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "50:9:1",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "61:7:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "73:6:1",
                            "type": ""
                          }
                        ],
                        "src": "14:180:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "300:76:1",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "310:26:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "322:9:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "333:2:1",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "318:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "318:18:1"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "310:4:1"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "352:9:1"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "363:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "345:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "345:25:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "345:25:1"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "269:9:1",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "280:6:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "291:4:1",
                            "type": ""
                          }
                        ],
                        "src": "199:177:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "451:110:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "497:16:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "506:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "509:1:1",
                                          "type": "",
                                          "value": "0"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "499:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "499:12:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "499:12:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "dataEnd",
                                        "nodeType": "YulIdentifier",
                                        "src": "472:7:1"
                                      },
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "481:9:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "sub",
                                      "nodeType": "YulIdentifier",
                                      "src": "468:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "468:23:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "493:2:1",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "slt",
                                  "nodeType": "YulIdentifier",
                                  "src": "464:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "464:32:1"
                              },
                              "nodeType": "YulIf",
                              "src": "461:52:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "522:33:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "545:9:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "calldataload",
                                  "nodeType": "YulIdentifier",
                                  "src": "532:12:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "532:23:1"
                              },
                              "variableNames": [
                                {
                                  "name": "value0",
                                  "nodeType": "YulIdentifier",
                                  "src": "522:6:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_decode_tuple_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "417:9:1",
                            "type": ""
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulTypedName",
                            "src": "428:7:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "440:6:1",
                            "type": ""
                          }
                        ],
                        "src": "381:180:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "614:177:1",
                          "statements": [
                            {
                              "body": {
                                "nodeType": "YulBlock",
                                "src": "649:111:1",
                                "statements": [
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "670:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "arguments": [
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "677:3:1",
                                              "type": "",
                                              "value": "224"
                                            },
                                            {
                                              "kind": "number",
                                              "nodeType": "YulLiteral",
                                              "src": "682:10:1",
                                              "type": "",
                                              "value": "0x4e487b71"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "shl",
                                            "nodeType": "YulIdentifier",
                                            "src": "673:3:1"
                                          },
                                          "nodeType": "YulFunctionCall",
                                          "src": "673:20:1"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "663:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "663:31:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "663:31:1"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "714:1:1",
                                          "type": "",
                                          "value": "4"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "717:4:1",
                                          "type": "",
                                          "value": "0x11"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mstore",
                                        "nodeType": "YulIdentifier",
                                        "src": "707:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "707:15:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "707:15:1"
                                  },
                                  {
                                    "expression": {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "742:1:1",
                                          "type": "",
                                          "value": "0"
                                        },
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "745:4:1",
                                          "type": "",
                                          "value": "0x24"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "revert",
                                        "nodeType": "YulIdentifier",
                                        "src": "735:6:1"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "735:15:1"
                                    },
                                    "nodeType": "YulExpressionStatement",
                                    "src": "735:15:1"
                                  }
                                ]
                              },
                              "condition": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "630:1:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "y",
                                        "nodeType": "YulIdentifier",
                                        "src": "637:1:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nodeType": "YulIdentifier",
                                      "src": "633:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "633:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "gt",
                                  "nodeType": "YulIdentifier",
                                  "src": "627:2:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "627:13:1"
                              },
                              "nodeType": "YulIf",
                              "src": "624:136:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "769:16:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "x",
                                    "nodeType": "YulIdentifier",
                                    "src": "780:1:1"
                                  },
                                  {
                                    "name": "y",
                                    "nodeType": "YulIdentifier",
                                    "src": "783:1:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "776:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "776:9:1"
                              },
                              "variableNames": [
                                {
                                  "name": "sum",
                                  "nodeType": "YulIdentifier",
                                  "src": "769:3:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "checked_add_t_uint256",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "x",
                            "nodeType": "YulTypedName",
                            "src": "597:1:1",
                            "type": ""
                          },
                          {
                            "name": "y",
                            "nodeType": "YulTypedName",
                            "src": "600:1:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "sum",
                            "nodeType": "YulTypedName",
                            "src": "606:3:1",
                            "type": ""
                          }
                        ],
                        "src": "566:225:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "970:167:1",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "987:9:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "998:2:1",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "980:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "980:21:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "980:21:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1021:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1032:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1017:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1017:18:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1037:2:1",
                                    "type": "",
                                    "value": "17"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1010:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1010:30:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1010:30:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1060:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1071:2:1",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1056:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1056:18:1"
                                  },
                                  {
                                    "hexValue": "544849535f414c574159535f4641494c53",
                                    "kind": "string",
                                    "nodeType": "YulLiteral",
                                    "src": "1076:19:1",
                                    "type": "",
                                    "value": "THIS_ALWAYS_FAILS"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1049:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1049:47:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1049:47:1"
                            },
                            {
                              "nodeType": "YulAssignment",
                              "src": "1105:26:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1117:9:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1128:2:1",
                                    "type": "",
                                    "value": "96"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1113:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1113:18:1"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1105:4:1"
                                }
                              ]
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_stringliteral_1d85e02ab29e46c60f78bf643cd12a0edb73a21e9895e77501d45ec6a2256a6e__to_t_string_memory_ptr__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "947:9:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "961:4:1",
                            "type": ""
                          }
                        ],
                        "src": "796:341:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1271:145:1",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1281:26:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1293:9:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1304:2:1",
                                    "type": "",
                                    "value": "64"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1289:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1289:18:1"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1281:4:1"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1323:9:1"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1334:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1316:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1316:25:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1316:25:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1361:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1372:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1357:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1357:18:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value1",
                                        "nodeType": "YulIdentifier",
                                        "src": "1381:6:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1397:3:1",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1402:1:1",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1393:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1393:11:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1406:1:1",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "1389:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1389:19:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1377:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1377:32:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1350:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1350:60:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1350:60:1"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1232:9:1",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1243:6:1",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1251:6:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1262:4:1",
                            "type": ""
                          }
                        ],
                        "src": "1142:274:1"
                      },
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1606:232:1",
                          "statements": [
                            {
                              "nodeType": "YulAssignment",
                              "src": "1616:27:1",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1628:9:1"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "1639:3:1",
                                    "type": "",
                                    "value": "128"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1624:3:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1624:19:1"
                              },
                              "variableNames": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "1616:4:1"
                                }
                              ]
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1659:9:1"
                                  },
                                  {
                                    "name": "value0",
                                    "nodeType": "YulIdentifier",
                                    "src": "1670:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1652:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1652:25:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1652:25:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1697:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1708:2:1",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1693:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1693:18:1"
                                  },
                                  {
                                    "name": "value1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1713:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1686:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1686:34:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1686:34:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1740:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1751:2:1",
                                        "type": "",
                                        "value": "64"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1736:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1736:18:1"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "value2",
                                        "nodeType": "YulIdentifier",
                                        "src": "1760:6:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1776:3:1",
                                                "type": "",
                                                "value": "160"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "1781:1:1",
                                                "type": "",
                                                "value": "1"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "shl",
                                              "nodeType": "YulIdentifier",
                                              "src": "1772:3:1"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "1772:11:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "1785:1:1",
                                            "type": "",
                                            "value": "1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sub",
                                          "nodeType": "YulIdentifier",
                                          "src": "1768:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "1768:19:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nodeType": "YulIdentifier",
                                      "src": "1756:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1756:32:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1729:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1729:60:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1729:60:1"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "headStart",
                                        "nodeType": "YulIdentifier",
                                        "src": "1809:9:1"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1820:2:1",
                                        "type": "",
                                        "value": "96"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1805:3:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1805:18:1"
                                  },
                                  {
                                    "name": "value3",
                                    "nodeType": "YulIdentifier",
                                    "src": "1825:6:1"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nodeType": "YulIdentifier",
                                  "src": "1798:6:1"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1798:34:1"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1798:34:1"
                            }
                          ]
                        },
                        "name": "abi_encode_tuple_t_uint256_t_uint256_t_address_t_uint256__to_t_uint256_t_uint256_t_address_t_uint256__fromStack_reversed",
                        "nodeType": "YulFunctionDefinition",
                        "parameters": [
                          {
                            "name": "headStart",
                            "nodeType": "YulTypedName",
                            "src": "1551:9:1",
                            "type": ""
                          },
                          {
                            "name": "value3",
                            "nodeType": "YulTypedName",
                            "src": "1562:6:1",
                            "type": ""
                          },
                          {
                            "name": "value2",
                            "nodeType": "YulTypedName",
                            "src": "1570:6:1",
                            "type": ""
                          },
                          {
                            "name": "value1",
                            "nodeType": "YulTypedName",
                            "src": "1578:6:1",
                            "type": ""
                          },
                          {
                            "name": "value0",
                            "nodeType": "YulTypedName",
                            "src": "1586:6:1",
                            "type": ""
                          }
                        ],
                        "returnVariables": [
                          {
                            "name": "tail",
                            "nodeType": "YulTypedName",
                            "src": "1597:4:1",
                            "type": ""
                          }
                        ],
                        "src": "1421:417:1"
                      }
                    ]
                  },
                  "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, value0)\n    }\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        value0 := calldataload(headStart)\n    }\n    function checked_add_t_uint256(x, y) -> sum\n    {\n        if gt(x, not(y))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(0, 0x24)\n        }\n        sum := add(x, y)\n    }\n    function abi_encode_tuple_t_stringliteral_1d85e02ab29e46c60f78bf643cd12a0edb73a21e9895e77501d45ec6a2256a6e__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 17)\n        mstore(add(headStart, 64), \"THIS_ALWAYS_FAILS\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_bytes32_t_address__to_t_bytes32_t_address__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        tail := add(headStart, 64)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_uint256_t_uint256_t_address_t_uint256__to_t_uint256_t_uint256_t_address_t_uint256__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), value1)\n        mstore(add(headStart, 64), and(value2, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 96), value3)\n    }\n}",
                  "id": 1,
                  "language": "Yul",
                  "name": "#utility.yul"
                }
              ],
              "immutableReferences": {},
              "linkReferences": {},
              "object": "60806040526004361061004a5760003560e01c8063128e6c371461004f57806332366b3b146100665780638ada066e14610079578063e60308db1461009c578063fe0d94c1146100b1575b600080fd5b34801561005b57600080fd5b506100646100c4565b005b6100646100743660046101c5565b610115565b34801561008557600080fd5b506000545b60405190815260200160405180910390f35b3480156100a857600080fd5b5060015461008a565b61008a6100bf3660046101c5565b610150565b6000546100d29060016101de565b60005560405162461bcd60e51b8152602060048201526011602482015270544849535f414c574159535f4641494c5360781b604482015260640160405180910390fd5b604080518281523360208201527ffb431db1c12156d00849c29ca8b66475afba575929b049f491d4681dc0cc07cc910160405180910390a150565b6000805461015f9060016101de565b600081905560018390556040805191825260208201849052737d2768de32b0b80b7a3454c06bdac94a69ddc7a982820152346060830152517fd4ed93d7cb4d4a9ff33f966cb590f2780cdb3e1ccea45804716695f6d34174469181900360800190a15090565b6000602082840312156101d757600080fd5b5035919050565b600082198211156101ff57634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220c33076c803d5f1974eccee078248528e182cb663cba575798546aed6805260a964736f6c634300080a0033",
              "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x4A JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x128E6C37 EQ PUSH2 0x4F JUMPI DUP1 PUSH4 0x32366B3B EQ PUSH2 0x66 JUMPI DUP1 PUSH4 0x8ADA066E EQ PUSH2 0x79 JUMPI DUP1 PUSH4 0xE60308DB EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0xFE0D94C1 EQ PUSH2 0xB1 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x64 PUSH2 0xC4 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x64 PUSH2 0x74 CALLDATASIZE PUSH1 0x4 PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x115 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x0 SLOAD JUMPDEST PUSH1 0x40 MLOAD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 SLOAD PUSH2 0x8A JUMP JUMPDEST PUSH2 0x8A PUSH2 0xBF CALLDATASIZE PUSH1 0x4 PUSH2 0x1C5 JUMP JUMPDEST PUSH2 0x150 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0xD2 SWAP1 PUSH1 0x1 PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x0 SSTORE PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x544849535F414C574159535F4641494C53 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE PUSH1 0x64 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE CALLER PUSH1 0x20 DUP3 ADD MSTORE PUSH32 0xFB431DB1C12156D00849C29CA8B66475AFBA575929B049F491D4681DC0CC07CC SWAP2 ADD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH2 0x15F SWAP1 PUSH1 0x1 PUSH2 0x1DE JUMP JUMPDEST PUSH1 0x0 DUP2 SWAP1 SSTORE PUSH1 0x1 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP5 SWAP1 MSTORE PUSH20 0x7D2768DE32B0B80B7A3454C06BDAC94A69DDC7A9 DUP3 DUP3 ADD MSTORE CALLVALUE PUSH1 0x60 DUP4 ADD MSTORE MLOAD PUSH32 0xD4ED93D7CB4D4A9FF33F966CB590F2780CDB3E1CCEA45804716695F6D3417446 SWAP2 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 LOG1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x1D7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 NOT DUP3 GT ISZERO PUSH2 0x1FF JUMPI PUSH4 0x4E487B71 PUSH1 0xE0 SHL PUSH1 0x0 MSTORE PUSH1 0x11 PUSH1 0x4 MSTORE PUSH1 0x24 PUSH1 0x0 REVERT JUMPDEST POP ADD SWAP1 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC3 ADDRESS PUSH23 0xC803D5F1974ECCEE078248528E182CB663CBA575798546 0xAE 0xD6 DUP1 MSTORE PUSH1 0xA9 PUSH5 0x736F6C6343 STOP ADDMOD EXP STOP CALLER ",
              "sourceMap": "63:956:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;748:105;;;;;;;;;;;;;:::i;:::-;;618:126;;;;;;:::i;:::-;;:::i;857:78::-;;;;;;;;;;-1:-1:-1;900:7:0;922:8;857:78;;;345:25:1;;;333:2;318:18;857:78:0;;;;;;;939;;;;;;;;;;-1:-1:-1;1004:8:0;;939:78;;394:220;;;;;;:::i;:::-;;:::i;748:105::-;795:8;;:12;;806:1;795:12;:::i;:::-;784:8;:23;813:35;;-1:-1:-1;;;813:35:0;;998:2:1;813:35:0;;;980:21:1;1037:2;1017:18;;;1010:30;-1:-1:-1;;;1056:18:1;;;1049:47;1113:18;;813:35:0;;;;;;;618:126;694:45;;;1316:25:1;;;728:10:0;1372:2:1;1357:18;;1350:60;694:45:0;;1289:18:1;694:45:0;;;;;;;618:126;:::o;394:220::-;454:7;480:8;;:12;;491:1;480:12;:::i;:::-;469:8;:23;;;498:8;:18;;;527:62;;;1652:25:1;;;1708:2;1693:18;;1686:34;;;290:42:0;1736:18:1;;;1729:60;579:9:0;1820:2:1;1805:18;;1798:34;527:62:0;;;;;;1639:3:1;527:62:0;;;-1:-1:-1;602:7:0;394:220::o;14:180:1:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;165:23:1;;14:180;-1:-1:-1;14:180:1:o;566:225::-;606:3;637:1;633:6;630:1;627:13;624:136;;;682:10;677:3;673:20;670:1;663:31;717:4;714:1;707:15;745:4;742:1;735:15;624:136;-1:-1:-1;776:9:1;;566:225::o"
            },
            "gasEstimates": {
              "creation": {
                "codeDepositCost": "114000",
                "executionCost": "159",
                "totalCost": "114159"
              },
              "external": {
                "alwaysFails()": "24500",
                "execute(uint256)": "48582",
                "executeWithDelegate(bytes32)": "1529",
                "getCounter()": "2291",
                "getTestInt()": "2324"
              }
            },
            "methodIdentifiers": {
              "alwaysFails()": "128e6c37",
              "execute(uint256)": "fe0d94c1",
              "executeWithDelegate(bytes32)": "32366b3b",
              "getCounter()": "8ada066e",
              "getTestInt()": "e60308db"
            }
          },
          "metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"testBytes\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"DelegateUpdateExecuted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"counter\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"testInt\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"testAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"UpdateExecuted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"alwaysFails\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"testInt\",\"type\":\"uint256\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"testBytes\",\"type\":\"bytes32\"}],\"name\":\"executeWithDelegate\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTestInt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/mocks/PolygonMarketUpdate.sol\":\"PolygonMarketUpdate\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"contracts/mocks/PolygonMarketUpdate.sol\":{\"content\":\"//SPDX-License-Identifier: Unlicense\\npragma solidity ^0.8.10;\\n\\ncontract PolygonMarketUpdate {\\n  event UpdateExecuted(uint256 counter, uint256 testInt, address testAddress, uint256 fee);\\n  event DelegateUpdateExecuted(bytes32 testBytes, address sender);\\n  address constant UPDATED_ADDRESS = 0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9;\\n\\n  uint256 private _counter;\\n  uint256 private _testInt;\\n\\n  function execute(uint256 testInt) external payable returns (uint256) {\\n    _counter = _counter + 1;\\n    _testInt = testInt;\\n    emit UpdateExecuted(_counter, _testInt, UPDATED_ADDRESS, msg.value);\\n    return testInt;\\n  }\\n\\n  function executeWithDelegate(bytes32 testBytes) external payable {\\n    emit DelegateUpdateExecuted(testBytes, msg.sender);\\n  }\\n\\n  function alwaysFails() public {\\n    _counter = _counter + 1;\\n    require(1 < 0, 'THIS_ALWAYS_FAILS');\\n  }\\n\\n  function getCounter() public view returns (uint256) {\\n    return _counter;\\n  }\\n\\n  function getTestInt() public view returns (uint256) {\\n    return _testInt;\\n  }\\n}\\n\",\"keccak256\":\"0xb47e8896c3fa451782d31cc6e933cdedefc4bb7952de46f8db10cc4823f5f6cb\",\"license\":\"Unlicense\"}},\"version\":1}",
          "storageLayout": {
            "storage": [
              {
                "astId": 22,
                "contract": "contracts/mocks/PolygonMarketUpdate.sol:PolygonMarketUpdate",
                "label": "_counter",
                "offset": 0,
                "slot": "0",
                "type": "t_uint256"
              },
              {
                "astId": 24,
                "contract": "contracts/mocks/PolygonMarketUpdate.sol:PolygonMarketUpdate",
                "label": "_testInt",
                "offset": 0,
                "slot": "1",
                "type": "t_uint256"
              }
            ],
            "types": {
              "t_uint256": {
                "encoding": "inplace",
                "label": "uint256",
                "numberOfBytes": "32"
              }
            }
          },
          "userdoc": {
            "kind": "user",
            "methods": {},
            "version": 1
          }
        }
      }
    },
    "sources": {
      "contracts/mocks/PolygonMarketUpdate.sol": {
        "ast": {
          "absolutePath": "contracts/mocks/PolygonMarketUpdate.sol",
          "exportedSymbols": {
            "PolygonMarketUpdate": [
              98
            ]
          },
          "id": 99,
          "license": "Unlicense",
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                "^",
                "0.8",
                ".10"
              ],
              "nodeType": "PragmaDirective",
              "src": "37:24:0"
            },
            {
              "abstract": false,
              "baseContracts": [],
              "canonicalName": "PolygonMarketUpdate",
              "contractDependencies": [],
              "contractKind": "contract",
              "fullyImplemented": true,
              "id": 98,
              "linearizedBaseContracts": [
                98
              ],
              "name": "PolygonMarketUpdate",
              "nameLocation": "72:19:0",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "anonymous": false,
                  "id": 11,
                  "name": "UpdateExecuted",
                  "nameLocation": "102:14:0",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 10,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "counter",
                        "nameLocation": "125:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 11,
                        "src": "117:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 2,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "117:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "testInt",
                        "nameLocation": "142:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 11,
                        "src": "134:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "134:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 7,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "testAddress",
                        "nameLocation": "159:11:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 11,
                        "src": "151:19:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 6,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "151:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 9,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "fee",
                        "nameLocation": "180:3:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 11,
                        "src": "172:11:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 8,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "172:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "116:68:0"
                  },
                  "src": "96:89:0"
                },
                {
                  "anonymous": false,
                  "id": 17,
                  "name": "DelegateUpdateExecuted",
                  "nameLocation": "194:22:0",
                  "nodeType": "EventDefinition",
                  "parameters": {
                    "id": 16,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 13,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "testBytes",
                        "nameLocation": "225:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 17,
                        "src": "217:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 12,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "217:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 15,
                        "indexed": false,
                        "mutability": "mutable",
                        "name": "sender",
                        "nameLocation": "244:6:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 17,
                        "src": "236:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 14,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "236:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "216:35:0"
                  },
                  "src": "188:64:0"
                },
                {
                  "constant": true,
                  "id": 20,
                  "mutability": "constant",
                  "name": "UPDATED_ADDRESS",
                  "nameLocation": "272:15:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 98,
                  "src": "255:77:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 18,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "255:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": {
                    "hexValue": "307837643237363864453332623062383062376133343534633036426441633934413639444463374139",
                    "id": 19,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "290:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "value": "0x7d2768dE32b0b80b7a3454c06BdAc94A69DDc7A9"
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 22,
                  "mutability": "mutable",
                  "name": "_counter",
                  "nameLocation": "353:8:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 98,
                  "src": "337:24:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 21,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "337:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "constant": false,
                  "id": 24,
                  "mutability": "mutable",
                  "name": "_testInt",
                  "nameLocation": "381:8:0",
                  "nodeType": "VariableDeclaration",
                  "scope": 98,
                  "src": "365:24:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "365:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "private"
                },
                {
                  "body": {
                    "id": 51,
                    "nodeType": "Block",
                    "src": "463:151:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 35,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 31,
                            "name": "_counter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22,
                            "src": "469:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 34,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 32,
                              "name": "_counter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22,
                              "src": "480:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 33,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "491:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "480:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "469:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 36,
                        "nodeType": "ExpressionStatement",
                        "src": "469:23:0"
                      },
                      {
                        "expression": {
                          "id": 39,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 37,
                            "name": "_testInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 24,
                            "src": "498:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "id": 38,
                            "name": "testInt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 26,
                            "src": "509:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "498:18:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 40,
                        "nodeType": "ExpressionStatement",
                        "src": "498:18:0"
                      },
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 42,
                              "name": "_counter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22,
                              "src": "542:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 43,
                              "name": "_testInt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 24,
                              "src": "552:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 44,
                              "name": "UPDATED_ADDRESS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 20,
                              "src": "562:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "expression": {
                                "id": 45,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "579:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 46,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "src": "579:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 41,
                            "name": "UpdateExecuted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11,
                            "src": "527:14:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,address,uint256)"
                            }
                          },
                          "id": 47,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "527:62:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 48,
                        "nodeType": "EmitStatement",
                        "src": "522:67:0"
                      },
                      {
                        "expression": {
                          "id": 49,
                          "name": "testInt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 26,
                          "src": "602:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 30,
                        "id": 50,
                        "nodeType": "Return",
                        "src": "595:14:0"
                      }
                    ]
                  },
                  "functionSelector": "fe0d94c1",
                  "id": 52,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "execute",
                  "nameLocation": "403:7:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 27,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 26,
                        "mutability": "mutable",
                        "name": "testInt",
                        "nameLocation": "419:7:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 52,
                        "src": "411:15:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 25,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "411:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "410:17:0"
                  },
                  "returnParameters": {
                    "id": 30,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 29,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 52,
                        "src": "454:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 28,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "454:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "453:9:0"
                  },
                  "scope": 98,
                  "src": "394:220:0",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 63,
                    "nodeType": "Block",
                    "src": "683:61:0",
                    "statements": [
                      {
                        "eventCall": {
                          "arguments": [
                            {
                              "id": 58,
                              "name": "testBytes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 54,
                              "src": "717:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "id": 59,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "728:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 60,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "src": "728:10:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 57,
                            "name": "DelegateUpdateExecuted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17,
                            "src": "694:22:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 61,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "694:45:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 62,
                        "nodeType": "EmitStatement",
                        "src": "689:50:0"
                      }
                    ]
                  },
                  "functionSelector": "32366b3b",
                  "id": 64,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "executeWithDelegate",
                  "nameLocation": "627:19:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 55,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 54,
                        "mutability": "mutable",
                        "name": "testBytes",
                        "nameLocation": "655:9:0",
                        "nodeType": "VariableDeclaration",
                        "scope": 64,
                        "src": "647:17:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "typeName": {
                          "id": 53,
                          "name": "bytes32",
                          "nodeType": "ElementaryTypeName",
                          "src": "647:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "646:19:0"
                  },
                  "returnParameters": {
                    "id": 56,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "683:0:0"
                  },
                  "scope": 98,
                  "src": "618:126:0",
                  "stateMutability": "payable",
                  "virtual": false,
                  "visibility": "external"
                },
                {
                  "body": {
                    "id": 80,
                    "nodeType": "Block",
                    "src": "778:75:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 71,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 67,
                            "name": "_counter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22,
                            "src": "784:8:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 70,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 68,
                              "name": "_counter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22,
                              "src": "795:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 69,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "806:1:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "795:12:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "784:23:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 72,
                        "nodeType": "ExpressionStatement",
                        "src": "784:23:0"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 76,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "hexValue": "31",
                                "id": 74,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "821:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 75,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "825:1:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "821:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "544849535f414c574159535f4641494c53",
                              "id": 77,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "828:19:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_1d85e02ab29e46c60f78bf643cd12a0edb73a21e9895e77501d45ec6a2256a6e",
                                "typeString": "literal_string \"THIS_ALWAYS_FAILS\""
                              },
                              "value": "THIS_ALWAYS_FAILS"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_1d85e02ab29e46c60f78bf643cd12a0edb73a21e9895e77501d45ec6a2256a6e",
                                "typeString": "literal_string \"THIS_ALWAYS_FAILS\""
                              }
                            ],
                            "id": 73,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              -18,
                              -18
                            ],
                            "referencedDeclaration": -18,
                            "src": "813:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 78,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "813:35:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 79,
                        "nodeType": "ExpressionStatement",
                        "src": "813:35:0"
                      }
                    ]
                  },
                  "functionSelector": "128e6c37",
                  "id": 81,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "alwaysFails",
                  "nameLocation": "757:11:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 65,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "768:2:0"
                  },
                  "returnParameters": {
                    "id": 66,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "778:0:0"
                  },
                  "scope": 98,
                  "src": "748:105:0",
                  "stateMutability": "nonpayable",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 88,
                    "nodeType": "Block",
                    "src": "909:26:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 86,
                          "name": "_counter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 22,
                          "src": "922:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 85,
                        "id": 87,
                        "nodeType": "Return",
                        "src": "915:15:0"
                      }
                    ]
                  },
                  "functionSelector": "8ada066e",
                  "id": 89,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getCounter",
                  "nameLocation": "866:10:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 82,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "876:2:0"
                  },
                  "returnParameters": {
                    "id": 85,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 84,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 89,
                        "src": "900:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 83,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "900:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "899:9:0"
                  },
                  "scope": 98,
                  "src": "857:78:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 96,
                    "nodeType": "Block",
                    "src": "991:26:0",
                    "statements": [
                      {
                        "expression": {
                          "id": 94,
                          "name": "_testInt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24,
                          "src": "1004:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 93,
                        "id": 95,
                        "nodeType": "Return",
                        "src": "997:15:0"
                      }
                    ]
                  },
                  "functionSelector": "e60308db",
                  "id": 97,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "getTestInt",
                  "nameLocation": "948:10:0",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 90,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "958:2:0"
                  },
                  "returnParameters": {
                    "id": 93,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 92,
                        "mutability": "mutable",
                        "name": "",
                        "nameLocation": "-1:-1:-1",
                        "nodeType": "VariableDeclaration",
                        "scope": 97,
                        "src": "982:7:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 91,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "982:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "src": "981:9:0"
                  },
                  "scope": 98,
                  "src": "939:78:0",
                  "stateMutability": "view",
                  "virtual": false,
                  "visibility": "public"
                }
              ],
              "scope": 99,
              "src": "63:956:0",
              "usedErrors": []
            }
          ],
          "src": "37:983:0"
        },
        "id": 0
      }
    }
  }
}