{
  "contractName": "WitnetDeployer",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_initCode",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "_salt",
          "type": "bytes32"
        }
      ],
      "name": "deploy",
      "outputs": [
        {
          "internalType": "address",
          "name": "_deployed",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_initCode",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "_salt",
          "type": "bytes32"
        }
      ],
      "name": "determineAddr",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_salt",
          "type": "bytes32"
        }
      ],
      "name": "determineProxyAddr",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_proxySalt",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_firstImplementation",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "_initData",
          "type": "bytes"
        }
      ],
      "name": "proxify",
      "outputs": [
        {
          "internalType": "contract WitnetProxy",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.30+commit.73712a01\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"deploy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_deployed\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_initCode\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"determineAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_salt\",\"type\":\"bytes32\"}],\"name\":\"determineProxyAddr\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_proxySalt\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_firstImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_initData\",\"type\":\"bytes\"}],\"name\":\"proxify\",\"outputs\":[{\"internalType\":\"contract WitnetProxy\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Guillermo D\\u00edaz <guillermo@witnet.io>\",\"kind\":\"dev\",\"methods\":{\"deploy(bytes,bytes32)\":{\"details\":\"The address of deployed address will be determined by both the `_initCode` and the `_salt`, but not the addressnor the nonce of the caller (i.e. see EIP-1014). \",\"params\":{\"_initCode\":\"Creation code, including construction logic and input parameters.\",\"_salt\":\"Arbitrary value to modify resulting address.\"},\"returns\":{\"_deployed\":\"Just deployed contract address.\"}},\"determineAddr(bytes,bytes32)\":{\"params\":{\"_initCode\":\"Creation code, including construction logic and input parameters.\",\"_salt\":\"Arbitrary value to modify resulting address.\"},\"returns\":{\"_0\":\"Deterministic contract address.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"deploy(bytes,bytes32)\":{\"notice\":\"Use given `_initCode` and `_salt` to deploy a contract into a deterministic address. \"},\"determineAddr(bytes,bytes32)\":{\"notice\":\"Determine counter-factual address of the contract that would be deployed by the given `_initCode` and a `_salt`.\"}},\"notice\":\"WitnetDeployer contract used both as CREATE2 (EIP-1014) factory for Witnet artifacts, and CREATE3 (EIP-3171) factory for Witnet proxies.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/core/WitnetDeployer.sol\":\"WitnetDeployer\"},\"evmVersion\":\"prague\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0xdb4d24ee2c087c391d587cd17adfe5b3f9d93b3110b1388c2ab6c7c0ad1dcd05\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ab7b6d5b9e2b88176312967fe0f0e78f3d9a1422fa5e4b64e2440c35869b5d08\",\"dweb:/ipfs/QmXKYWWyzcLg1B2k7Sb1qkEXgLCYfXecR9wYW5obRzWP1Q\"]},\"@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]},\"project:/contracts/core/WitnetDeployer.sol\":{\"keccak256\":\"0xa048c54e33bcd337112df5e3c8d3a528ad91179bda1963b3b08eb022d36cc038\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8d37c3f74831d38abfdf76345f2c9190198643204f8ec2b4c515eb32d609b8f9\",\"dweb:/ipfs/QmcD6mDyAcs2nxnQjmU5Yu9dLuLuGuBkLj9LnFCbeu5gjV\"]},\"project:/contracts/core/WitnetProxy.sol\":{\"keccak256\":\"0x6f0ec2c544192c9439bde88f5ed4efec5bdef506cb0dcb739c29329a798033fe\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ca05338334632aab3aef3c17a4b8686251ec488da49b9fcd3712642e57e0ce2a\",\"dweb:/ipfs/QmZk1uDdytKFii4TXUnJkFBBB3CZVSPKKR85ugFjWUTufS\"]},\"project:/contracts/libs/Create3.sol\":{\"keccak256\":\"0xfbda4c773f859bef9d7878ca9412f244da85f7bd49df07c49a17544f4708d718\",\"license\":\"AGPL-3.0-only\",\"urls\":[\"bzz-raw://0f83b72ad1c35c707cc6daa4e8266d9d711f561a188fbb0be1885d3f08146ca6\",\"dweb:/ipfs/QmPJwdieqkxoSvqmczAtRMfb5EN8uWiabqMKj4yVqsUncv\"]},\"project:/contracts/patterns/Initializable.sol\":{\"keccak256\":\"0xaac470e87f361cf15d68d1618d6eb7d4913885d33ccc39c797841a9591d44296\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef3760b2039feda8715d4bd9f8de8e3885f25573d12ba92f52d626ba880a08bf\",\"dweb:/ipfs/QmP2mfHPBKkjTAKft95sPDb4PBsjfmAwc47Kdcv3xYSf3g\"]},\"project:/contracts/patterns/Proxiable.sol\":{\"keccak256\":\"0x86032205378fed9ed2bf155eed8ce4bdbb13b7f5960850c6d50954a38b61a3d8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f89978eda4244a13f42a6092a94ac829bb3e38c92d77d4978b9f32894b187a63\",\"dweb:/ipfs/Qmbc1XaFCvLm3Sxvh7tP29Ug32jBGy3avsCqBGAptxs765\"]},\"project:/contracts/patterns/Upgradeable.sol\":{\"keccak256\":\"0x49d1a83abc7a9b39d224677dde65ead4b7f1104332a94c9e619854b2a6b3a89e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e6a798a953af921a5b4e24e3f78bebae97819a85c90deb12ec505952faa42814\",\"dweb:/ipfs/QmVJhv4x3MXf4aDbMC5Q259K8kZNvxSXzmy8anoow7nS7k\"]}},\"version\":1}",
  "bytecode": "0x6080604052348015600e575f5ffd5b506111408061001c5f395ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634998f0381461004e5780634af63f021461007d5780635ba489e714610090578063d3933c29146100a3575b5f5ffd5b61006161005c366004610588565b6100b6565b6040516001600160a01b03909116815260200160405180910390f35b61006161008b36600461063e565b6100c6565b61006161009e366004610680565b610154565b6100616100b136600461063e565b61028f565b5f6100c0826102eb565b92915050565b5f6100d1838361028f565b9050806001600160a01b03163b5f036100c057818351602085015ff590506001600160a01b0381166100c05760405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c656044820152601960fa1b60648201526084015b60405180910390fd5b5f5f61015f856100b6565b9050806001600160a01b03163b5f036102365761019e85604051806020016101869061057b565b601f1982820381018352601f909101166040526103be565b50806001600160a01b0316636fbc15e98533866040516020016101c29291906106e0565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016101ee9291906106e0565b6020604051808303815f875af115801561020a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022e9190610724565b509050610288565b60405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a20616c72656164792070726f78696669656044820152601960fa1b606482015260840161014b565b9392505050565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012090565b604080518082018252601081526f67363d3d37363d34f03d5260086018f360801b60209182015281516001600160f81b03198183015230606090811b6bffffffffffffffffffffffff19908116602184015260358301959095527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f605580840191909152845180840390910181526075830185528051908401206135a560f21b6095840152901b9093166097840152600160f81b60ab8401528151608c81850301815260ac909301909152815191012090565b5f61028883835f5f6103cf846102eb565b90506001600160a01b0381163b156104295760405162461bcd60e51b815260206004820152601e60248201527f437265617465333a2074617267657420616c7265616479206578697374730000604482015260640161014b565b6040805180820190915260108082526f67363d3d37363d34f03d5260086018f360801b602083019081525f9291879184f591506001600160a01b0382166104b25760405162461bcd60e51b815260206004820152601f60248201527f437265617465333a206572726f72206372656174696e6720666163746f727900604482015260640161014b565b5f826001600160a01b031685876040516104cc9190610743565b5f6040518083038185875af1925050503d805f8114610506576040519150601f19603f3d011682016040523d82523d5f602084013e61050b565b606091505b5050905080801561052557506001600160a01b0384163b15155b6105715760405162461bcd60e51b815260206004820152601e60248201527f437265617465333a206572726f72206372656174696e67207461726765740000604482015260640161014b565b5050509392505050565b6109b18061075a83390190565b5f60208284031215610598575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126105c2575f5ffd5b813567ffffffffffffffff8111156105dc576105dc61059f565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561060b5761060b61059f565b604052818152838201602001851015610622575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561064f575f5ffd5b823567ffffffffffffffff811115610665575f5ffd5b610671858286016105b3565b95602094909401359450505050565b5f5f5f60608486031215610692575f5ffd5b8335925060208401356001600160a01b03811681146106af575f5ffd5b9150604084013567ffffffffffffffff8111156106ca575f5ffd5b6106d6868287016105b3565b9150509250925092565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f60208284031215610734575f5ffd5b81518015158114610288575f5ffd5b5f82518060208501845e5f92019182525091905056fe6080604052348015600e575f5ffd5b506109958061001c5f395ff3fe60806040526004361061002c575f3560e01c80635c60da1b146100605780636fbc15e91461009157610033565b3661003357005b5f61003c6100c0565b9050604051365f82375f5f3683855af43d805f843e81801561005c578184f35b8184fd5b34801561006b575f5ffd5b506100746100c0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561009c575f5ffd5b506100b06100ab366004610778565b6100ee565b6040519015158152602001610088565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b5f6001600160a01b03831661014a5760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b5f6101536100c0565b90506001600160a01b038116156104f757806001600160a01b0316846001600160a01b0316036101c55760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610141565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021f575060408051601f3d908101601f1916820190925261021c91810190610810565b60015b61027e5760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610141565b806102cb5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610141565b506040513360248201525f9081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b1790525161031c9190610836565b5f60405180830381855af49150503d805f8114610354576040519150601f19603f3d011682016040523d82523d5f602084013e610359565b606091505b50915091508161037b5760405162461bcd60e51b81526004016101419061084c565b8080602001905181019061038f9190610810565b6103db5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610141565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610417573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043b9190610893565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b9190610893565b146104f45760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610141565b50505b5f5f856001600160a01b03168560405160240161051491906108d8565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b179052516105499190610836565b5f60405180830381855af49150503d805f8114610581576040519150601f19603f3d011682016040523d82523d5f602084013e610586565b606091505b509150915081610620576044815110156105ed5760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610141565b6004810190508080602001905181019061060791906108ea565b60405162461bcd60e51b815260040161014191906108d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106df575060408051601f3d908101601f191682019092526106dc91810190610810565b60015b6106fb5760405162461bcd60e51b81526004016101419061084c565b935061070692505050565b92915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156107495761074961070c565b604052919050565b5f67ffffffffffffffff82111561076a5761076a61070c565b50601f01601f191660200190565b5f5f60408385031215610789575f5ffd5b82356001600160a01b038116811461079f575f5ffd5b9150602083013567ffffffffffffffff8111156107ba575f5ffd5b8301601f810185136107ca575f5ffd5b80356107dd6107d882610751565b610720565b8181528660208385010111156107f1575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610820575f5ffd5b8151801515811461082f575f5ffd5b9392505050565b5f82518060208501845e5f920191825250919050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b5f602082840312156108a3575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082f60208301846108aa565b5f602082840312156108fa575f5ffd5b815167ffffffffffffffff811115610910575f5ffd5b8201601f81018413610920575f5ffd5b805161092e6107d882610751565b818152856020838501011115610942575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220a8415d02311c8820d22429929d1fce9f26d5e64d00552717dedf051fcf03fde664736f6c634300081e0033a2646970667358221220e80533feb46320a297d49f94be0b43ce18e6aba543a689ff81103d4556721c6464736f6c634300081e0033",
  "deployedBytecode": "0x608060405234801561000f575f5ffd5b506004361061004a575f3560e01c80634998f0381461004e5780634af63f021461007d5780635ba489e714610090578063d3933c29146100a3575b5f5ffd5b61006161005c366004610588565b6100b6565b6040516001600160a01b03909116815260200160405180910390f35b61006161008b36600461063e565b6100c6565b61006161009e366004610680565b610154565b6100616100b136600461063e565b61028f565b5f6100c0826102eb565b92915050565b5f6100d1838361028f565b9050806001600160a01b03163b5f036100c057818351602085015ff590506001600160a01b0381166100c05760405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c656044820152601960fa1b60648201526084015b60405180910390fd5b5f5f61015f856100b6565b9050806001600160a01b03163b5f036102365761019e85604051806020016101869061057b565b601f1982820381018352601f909101166040526103be565b50806001600160a01b0316636fbc15e98533866040516020016101c29291906106e0565b6040516020818303038152906040526040518363ffffffff1660e01b81526004016101ee9291906106e0565b6020604051808303815f875af115801561020a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061022e9190610724565b509050610288565b60405162461bcd60e51b815260206004820152602160248201527f5769746e65744465706c6f7965723a20616c72656164792070726f78696669656044820152601960fa1b606482015260840161014b565b9392505050565b8151602092830120604080516001600160f81b0319818601523060601b6bffffffffffffffffffffffff191660218201526035810193909352605580840192909252805180840390920182526075909201909152805191012090565b604080518082018252601081526f67363d3d37363d34f03d5260086018f360801b60209182015281516001600160f81b03198183015230606090811b6bffffffffffffffffffffffff19908116602184015260358301959095527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f605580840191909152845180840390910181526075830185528051908401206135a560f21b6095840152901b9093166097840152600160f81b60ab8401528151608c81850301815260ac909301909152815191012090565b5f61028883835f5f6103cf846102eb565b90506001600160a01b0381163b156104295760405162461bcd60e51b815260206004820152601e60248201527f437265617465333a2074617267657420616c7265616479206578697374730000604482015260640161014b565b6040805180820190915260108082526f67363d3d37363d34f03d5260086018f360801b602083019081525f9291879184f591506001600160a01b0382166104b25760405162461bcd60e51b815260206004820152601f60248201527f437265617465333a206572726f72206372656174696e6720666163746f727900604482015260640161014b565b5f826001600160a01b031685876040516104cc9190610743565b5f6040518083038185875af1925050503d805f8114610506576040519150601f19603f3d011682016040523d82523d5f602084013e61050b565b606091505b5050905080801561052557506001600160a01b0384163b15155b6105715760405162461bcd60e51b815260206004820152601e60248201527f437265617465333a206572726f72206372656174696e67207461726765740000604482015260640161014b565b5050509392505050565b6109b18061075a83390190565b5f60208284031215610598575f5ffd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f8301126105c2575f5ffd5b813567ffffffffffffffff8111156105dc576105dc61059f565b604051601f8201601f19908116603f0116810167ffffffffffffffff8111828210171561060b5761060b61059f565b604052818152838201602001851015610622575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f6040838503121561064f575f5ffd5b823567ffffffffffffffff811115610665575f5ffd5b610671858286016105b3565b95602094909401359450505050565b5f5f5f60608486031215610692575f5ffd5b8335925060208401356001600160a01b03811681146106af575f5ffd5b9150604084013567ffffffffffffffff8111156106ca575f5ffd5b6106d6868287016105b3565b9150509250925092565b60018060a01b0383168152604060208201525f82518060408401528060208501606085015e5f606082850101526060601f19601f8301168401019150509392505050565b5f60208284031215610734575f5ffd5b81518015158114610288575f5ffd5b5f82518060208501845e5f92019182525091905056fe6080604052348015600e575f5ffd5b506109958061001c5f395ff3fe60806040526004361061002c575f3560e01c80635c60da1b146100605780636fbc15e91461009157610033565b3661003357005b5f61003c6100c0565b9050604051365f82375f5f3683855af43d805f843e81801561005c578184f35b8184fd5b34801561006b575f5ffd5b506100746100c0565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561009c575f5ffd5b506100b06100ab366004610778565b6100ee565b6040519015158152602001610088565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b5f6001600160a01b03831661014a5760405162461bcd60e51b815260206004820181905260248201527f5769746e657450726f78793a206e756c6c20696d706c656d656e746174696f6e60448201526064015b60405180910390fd5b5f6101536100c0565b90506001600160a01b038116156104f757806001600160a01b0316846001600160a01b0316036101c55760405162461bcd60e51b815260206004820152601f60248201527f5769746e657450726f78793a206e6f7468696e6720746f2075706772616465006044820152606401610141565b806001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561021f575060408051601f3d908101601f1916820190925261021c91810190610810565b60015b61027e5760405162461bcd60e51b815260206004820152602a60248201527f5769746e657450726f78793a20756e61626c6520746f20636865636b207570676044820152697261646162696c69747960b01b6064820152608401610141565b806102cb5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f742075706772616461626c6500000000006044820152606401610141565b506040513360248201525f9081906001600160a01b0384169060440160408051601f198184030181529181526020820180516001600160e01b03166335ac4b0560e11b1790525161031c9190610836565b5f60405180830381855af49150503d805f8114610354576040519150601f19603f3d011682016040523d82523d5f602084013e610359565b606091505b50915091508161037b5760405162461bcd60e51b81526004016101419061084c565b8080602001905181019061038f9190610810565b6103db5760405162461bcd60e51b815260206004820152601b60248201527f5769746e657450726f78793a206e6f7420617574686f72697a656400000000006044820152606401610141565b856001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610417573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061043b9190610893565b836001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610477573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061049b9190610893565b146104f45760405162461bcd60e51b8152602060048201526024808201527f5769746e657450726f78793a2070726f786961626c655555494473206d69736d6044820152630c2e8c6d60e31b6064820152608401610141565b50505b5f5f856001600160a01b03168560405160240161051491906108d8565b60408051601f198184030181529181526020820180516001600160e01b031663439fab9160e01b179052516105499190610836565b5f60405180830381855af49150503d805f8114610581576040519150601f19603f3d011682016040523d82523d5f602084013e610586565b606091505b509150915081610620576044815110156105ed5760405162461bcd60e51b815260206004820152602260248201527f5769746e657450726f78793a20696e697469616c697a6174696f6e206661696c604482015261195960f21b6064820152608401610141565b6004810190508080602001905181019061060791906108ea565b60405162461bcd60e51b815260040161014191906108d8565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0388169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2856001600160a01b0316635479d9406040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156106df575060408051601f3d908101601f191682019092526106dc91810190610810565b60015b6106fb5760405162461bcd60e51b81526004016101419061084c565b935061070692505050565b92915050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156107495761074961070c565b604052919050565b5f67ffffffffffffffff82111561076a5761076a61070c565b50601f01601f191660200190565b5f5f60408385031215610789575f5ffd5b82356001600160a01b038116811461079f575f5ffd5b9150602083013567ffffffffffffffff8111156107ba575f5ffd5b8301601f810185136107ca575f5ffd5b80356107dd6107d882610751565b610720565b8181528660208385010111156107f1575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60208284031215610820575f5ffd5b8151801515811461082f575f5ffd5b9392505050565b5f82518060208501845e5f920191825250919050565b60208082526027908201527f5769746e657450726f78793a20756e636f6d706c69616e7420696d706c656d65604082015266373a30ba34b7b760c91b606082015260800190565b5f602082840312156108a3575f5ffd5b5051919050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f61082f60208301846108aa565b5f602082840312156108fa575f5ffd5b815167ffffffffffffffff811115610910575f5ffd5b8201601f81018413610920575f5ffd5b805161092e6107d882610751565b818152856020838501011115610942575f5ffd5b8160208401602083015e5f9181016020019190915294935050505056fea2646970667358221220a8415d02311c8820d22429929d1fce9f26d5e64d00552717dedf051fcf03fde664736f6c634300081e0033a2646970667358221220e80533feb46320a297d49f94be0b43ce18e6aba543a689ff81103d4556721c6464736f6c634300081e0033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nativeSrc": "0:7073:136",
        "nodeType": "YulBlock",
        "src": "0:7073:136",
        "statements": [
          {
            "nativeSrc": "6:3:136",
            "nodeType": "YulBlock",
            "src": "6:3:136",
            "statements": []
          },
          {
            "body": {
              "nativeSrc": "84:156:136",
              "nodeType": "YulBlock",
              "src": "84:156:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "130:16:136",
                    "nodeType": "YulBlock",
                    "src": "130:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "139:1:136",
                              "nodeType": "YulLiteral",
                              "src": "139:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "142:1:136",
                              "nodeType": "YulLiteral",
                              "src": "142:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "132:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "132:6:136"
                          },
                          "nativeSrc": "132:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "132:12:136"
                        },
                        "nativeSrc": "132:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "132:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "105:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "105:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "114:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "114:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "101:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "101:3:136"
                        },
                        "nativeSrc": "101:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "101:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "126:2:136",
                        "nodeType": "YulLiteral",
                        "src": "126:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "97:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "97:3:136"
                    },
                    "nativeSrc": "97:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "97:32:136"
                  },
                  "nativeSrc": "94:52:136",
                  "nodeType": "YulIf",
                  "src": "94:52:136"
                },
                {
                  "nativeSrc": "155:14:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "155:14:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "168:1:136",
                    "nodeType": "YulLiteral",
                    "src": "168:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "159:5:136",
                      "nodeType": "YulTypedName",
                      "src": "159:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "178:32:136",
                  "nodeType": "YulAssignment",
                  "src": "178:32:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "200:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "200:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "187:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "187:12:136"
                    },
                    "nativeSrc": "187:23:136",
                    "nodeType": "YulFunctionCall",
                    "src": "187:23:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "178:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "178:5:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "219:15:136",
                  "nodeType": "YulAssignment",
                  "src": "219:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "229:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "229:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "219:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "219:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32",
            "nativeSrc": "14:226:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "50:9:136",
                "nodeType": "YulTypedName",
                "src": "50:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "61:7:136",
                "nodeType": "YulTypedName",
                "src": "61:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "73:6:136",
                "nodeType": "YulTypedName",
                "src": "73:6:136",
                "type": ""
              }
            ],
            "src": "14:226:136"
          },
          {
            "body": {
              "nativeSrc": "346:102:136",
              "nodeType": "YulBlock",
              "src": "346:102:136",
              "statements": [
                {
                  "nativeSrc": "356:26:136",
                  "nodeType": "YulAssignment",
                  "src": "356:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "368:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "368:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "379:2:136",
                        "nodeType": "YulLiteral",
                        "src": "379:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "364:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "364:3:136"
                    },
                    "nativeSrc": "364:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "364:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "356:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "356:4:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "398:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "398:9:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "413:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "413:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "429:3:136",
                                    "nodeType": "YulLiteral",
                                    "src": "429:3:136",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "434:1:136",
                                    "nodeType": "YulLiteral",
                                    "src": "434:1:136",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "425:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "425:3:136"
                                },
                                "nativeSrc": "425:11:136",
                                "nodeType": "YulFunctionCall",
                                "src": "425:11:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "438:1:136",
                                "nodeType": "YulLiteral",
                                "src": "438:1:136",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "421:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "421:3:136"
                            },
                            "nativeSrc": "421:19:136",
                            "nodeType": "YulFunctionCall",
                            "src": "421:19:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "409:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "409:3:136"
                        },
                        "nativeSrc": "409:32:136",
                        "nodeType": "YulFunctionCall",
                        "src": "409:32:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "391:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "391:6:136"
                    },
                    "nativeSrc": "391:51:136",
                    "nodeType": "YulFunctionCall",
                    "src": "391:51:136"
                  },
                  "nativeSrc": "391:51:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "391:51:136"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nativeSrc": "245:203:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "315:9:136",
                "nodeType": "YulTypedName",
                "src": "315:9:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "326:6:136",
                "nodeType": "YulTypedName",
                "src": "326:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "337:4:136",
                "nodeType": "YulTypedName",
                "src": "337:4:136",
                "type": ""
              }
            ],
            "src": "245:203:136"
          },
          {
            "body": {
              "nativeSrc": "485:95:136",
              "nodeType": "YulBlock",
              "src": "485:95:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "502:1:136",
                        "nodeType": "YulLiteral",
                        "src": "502:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "509:3:136",
                            "nodeType": "YulLiteral",
                            "src": "509:3:136",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "514:10:136",
                            "nodeType": "YulLiteral",
                            "src": "514:10:136",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "505:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "505:3:136"
                        },
                        "nativeSrc": "505:20:136",
                        "nodeType": "YulFunctionCall",
                        "src": "505:20:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "495:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "495:6:136"
                    },
                    "nativeSrc": "495:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "495:31:136"
                  },
                  "nativeSrc": "495:31:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "495:31:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "542:1:136",
                        "nodeType": "YulLiteral",
                        "src": "542:1:136",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "545:4:136",
                        "nodeType": "YulLiteral",
                        "src": "545:4:136",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "535:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "535:6:136"
                    },
                    "nativeSrc": "535:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "535:15:136"
                  },
                  "nativeSrc": "535:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "535:15:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "566:1:136",
                        "nodeType": "YulLiteral",
                        "src": "566:1:136",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "569:4:136",
                        "nodeType": "YulLiteral",
                        "src": "569:4:136",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nativeSrc": "559:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "559:6:136"
                    },
                    "nativeSrc": "559:15:136",
                    "nodeType": "YulFunctionCall",
                    "src": "559:15:136"
                  },
                  "nativeSrc": "559:15:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "559:15:136"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nativeSrc": "453:127:136",
            "nodeType": "YulFunctionDefinition",
            "src": "453:127:136"
          },
          {
            "body": {
              "nativeSrc": "637:673:136",
              "nodeType": "YulBlock",
              "src": "637:673:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "686:16:136",
                    "nodeType": "YulBlock",
                    "src": "686:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "695:1:136",
                              "nodeType": "YulLiteral",
                              "src": "695:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "698:1:136",
                              "nodeType": "YulLiteral",
                              "src": "698:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "688:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "688:6:136"
                          },
                          "nativeSrc": "688:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "688:12:136"
                        },
                        "nativeSrc": "688:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "688:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "665:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "665:6:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "673:4:136",
                                "nodeType": "YulLiteral",
                                "src": "673:4:136",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "661:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "661:3:136"
                            },
                            "nativeSrc": "661:17:136",
                            "nodeType": "YulFunctionCall",
                            "src": "661:17:136"
                          },
                          {
                            "name": "end",
                            "nativeSrc": "680:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "680:3:136"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nativeSrc": "657:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "657:3:136"
                        },
                        "nativeSrc": "657:27:136",
                        "nodeType": "YulFunctionCall",
                        "src": "657:27:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "650:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "650:6:136"
                    },
                    "nativeSrc": "650:35:136",
                    "nodeType": "YulFunctionCall",
                    "src": "650:35:136"
                  },
                  "nativeSrc": "647:55:136",
                  "nodeType": "YulIf",
                  "src": "647:55:136"
                },
                {
                  "nativeSrc": "711:34:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "711:34:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "738:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "738:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "725:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "725:12:136"
                    },
                    "nativeSrc": "725:20:136",
                    "nodeType": "YulFunctionCall",
                    "src": "725:20:136"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "715:6:136",
                      "nodeType": "YulTypedName",
                      "src": "715:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "788:22:136",
                    "nodeType": "YulBlock",
                    "src": "788:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "790:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "790:16:136"
                          },
                          "nativeSrc": "790:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "790:18:136"
                        },
                        "nativeSrc": "790:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "790:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nativeSrc": "760:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "760:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "768:18:136",
                        "nodeType": "YulLiteral",
                        "src": "768:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "757:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "757:2:136"
                    },
                    "nativeSrc": "757:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "757:30:136"
                  },
                  "nativeSrc": "754:56:136",
                  "nodeType": "YulIf",
                  "src": "754:56:136"
                },
                {
                  "nativeSrc": "819:23:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "819:23:136",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "839:2:136",
                        "nodeType": "YulLiteral",
                        "src": "839:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "833:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "833:5:136"
                    },
                    "nativeSrc": "833:9:136",
                    "nodeType": "YulFunctionCall",
                    "src": "833:9:136"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nativeSrc": "823:6:136",
                      "nodeType": "YulTypedName",
                      "src": "823:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "851:85:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "851:85:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "873:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "873:6:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "length",
                                        "nativeSrc": "897:6:136",
                                        "nodeType": "YulIdentifier",
                                        "src": "897:6:136"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "905:4:136",
                                        "nodeType": "YulLiteral",
                                        "src": "905:4:136",
                                        "type": "",
                                        "value": "0x1f"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "893:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "893:3:136"
                                    },
                                    "nativeSrc": "893:17:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "893:17:136"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "916:2:136",
                                        "nodeType": "YulLiteral",
                                        "src": "916:2:136",
                                        "type": "",
                                        "value": "31"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "not",
                                      "nativeSrc": "912:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "912:3:136"
                                    },
                                    "nativeSrc": "912:7:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "912:7:136"
                                  }
                                ],
                                "functionName": {
                                  "name": "and",
                                  "nativeSrc": "889:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "889:3:136"
                                },
                                "nativeSrc": "889:31:136",
                                "nodeType": "YulFunctionCall",
                                "src": "889:31:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "922:2:136",
                                "nodeType": "YulLiteral",
                                "src": "922:2:136",
                                "type": "",
                                "value": "63"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "885:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "885:3:136"
                            },
                            "nativeSrc": "885:40:136",
                            "nodeType": "YulFunctionCall",
                            "src": "885:40:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "931:2:136",
                                "nodeType": "YulLiteral",
                                "src": "931:2:136",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "927:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "927:3:136"
                            },
                            "nativeSrc": "927:7:136",
                            "nodeType": "YulFunctionCall",
                            "src": "927:7:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "881:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "881:3:136"
                        },
                        "nativeSrc": "881:54:136",
                        "nodeType": "YulFunctionCall",
                        "src": "881:54:136"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "869:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "869:3:136"
                    },
                    "nativeSrc": "869:67:136",
                    "nodeType": "YulFunctionCall",
                    "src": "869:67:136"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nativeSrc": "855:10:136",
                      "nodeType": "YulTypedName",
                      "src": "855:10:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1011:22:136",
                    "nodeType": "YulBlock",
                    "src": "1011:22:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nativeSrc": "1013:16:136",
                            "nodeType": "YulIdentifier",
                            "src": "1013:16:136"
                          },
                          "nativeSrc": "1013:18:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1013:18:136"
                        },
                        "nativeSrc": "1013:18:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1013:18:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "954:10:136",
                            "nodeType": "YulIdentifier",
                            "src": "954:10:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "966:18:136",
                            "nodeType": "YulLiteral",
                            "src": "966:18:136",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nativeSrc": "951:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "951:2:136"
                        },
                        "nativeSrc": "951:34:136",
                        "nodeType": "YulFunctionCall",
                        "src": "951:34:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nativeSrc": "990:10:136",
                            "nodeType": "YulIdentifier",
                            "src": "990:10:136"
                          },
                          {
                            "name": "memPtr",
                            "nativeSrc": "1002:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1002:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nativeSrc": "987:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "987:2:136"
                        },
                        "nativeSrc": "987:22:136",
                        "nodeType": "YulFunctionCall",
                        "src": "987:22:136"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nativeSrc": "948:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "948:2:136"
                    },
                    "nativeSrc": "948:62:136",
                    "nodeType": "YulFunctionCall",
                    "src": "948:62:136"
                  },
                  "nativeSrc": "945:88:136",
                  "nodeType": "YulIf",
                  "src": "945:88:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nativeSrc": "1049:2:136",
                        "nodeType": "YulLiteral",
                        "src": "1049:2:136",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nativeSrc": "1053:10:136",
                        "nodeType": "YulIdentifier",
                        "src": "1053:10:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1042:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1042:6:136"
                    },
                    "nativeSrc": "1042:22:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1042:22:136"
                  },
                  "nativeSrc": "1042:22:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1042:22:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nativeSrc": "1080:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "1080:6:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "1088:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "1088:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1073:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1073:6:136"
                    },
                    "nativeSrc": "1073:22:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1073:22:136"
                  },
                  "nativeSrc": "1073:22:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1073:22:136"
                },
                {
                  "body": {
                    "nativeSrc": "1147:16:136",
                    "nodeType": "YulBlock",
                    "src": "1147:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1156:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1156:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1159:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1159:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1149:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1149:6:136"
                          },
                          "nativeSrc": "1149:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1149:12:136"
                        },
                        "nativeSrc": "1149:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1149:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nativeSrc": "1118:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "1118:6:136"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "1126:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "1126:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1114:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "1114:3:136"
                            },
                            "nativeSrc": "1114:19:136",
                            "nodeType": "YulFunctionCall",
                            "src": "1114:19:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1135:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1135:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1110:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1110:3:136"
                        },
                        "nativeSrc": "1110:30:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1110:30:136"
                      },
                      {
                        "name": "end",
                        "nativeSrc": "1142:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "1142:3:136"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1107:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "1107:2:136"
                    },
                    "nativeSrc": "1107:39:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1107:39:136"
                  },
                  "nativeSrc": "1104:59:136",
                  "nodeType": "YulIf",
                  "src": "1104:59:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nativeSrc": "1189:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1189:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1197:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1197:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1185:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1185:3:136"
                        },
                        "nativeSrc": "1185:17:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1185:17:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nativeSrc": "1208:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1208:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1216:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1216:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1204:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1204:3:136"
                        },
                        "nativeSrc": "1204:17:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1204:17:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "1223:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "1223:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nativeSrc": "1172:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "1172:12:136"
                    },
                    "nativeSrc": "1172:58:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1172:58:136"
                  },
                  "nativeSrc": "1172:58:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1172:58:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nativeSrc": "1254:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "1254:6:136"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "1262:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "1262:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "1250:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "1250:3:136"
                            },
                            "nativeSrc": "1250:19:136",
                            "nodeType": "YulFunctionCall",
                            "src": "1250:19:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1271:4:136",
                            "nodeType": "YulLiteral",
                            "src": "1271:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1246:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1246:3:136"
                        },
                        "nativeSrc": "1246:30:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1246:30:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1278:1:136",
                        "nodeType": "YulLiteral",
                        "src": "1278:1:136",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "1239:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1239:6:136"
                    },
                    "nativeSrc": "1239:41:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1239:41:136"
                  },
                  "nativeSrc": "1239:41:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "1239:41:136"
                },
                {
                  "nativeSrc": "1289:15:136",
                  "nodeType": "YulAssignment",
                  "src": "1289:15:136",
                  "value": {
                    "name": "memPtr",
                    "nativeSrc": "1298:6:136",
                    "nodeType": "YulIdentifier",
                    "src": "1298:6:136"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nativeSrc": "1289:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "1289:5:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_bytes",
            "nativeSrc": "585:725:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nativeSrc": "611:6:136",
                "nodeType": "YulTypedName",
                "src": "611:6:136",
                "type": ""
              },
              {
                "name": "end",
                "nativeSrc": "619:3:136",
                "nodeType": "YulTypedName",
                "src": "619:3:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nativeSrc": "627:5:136",
                "nodeType": "YulTypedName",
                "src": "627:5:136",
                "type": ""
              }
            ],
            "src": "585:725:136"
          },
          {
            "body": {
              "nativeSrc": "1411:338:136",
              "nodeType": "YulBlock",
              "src": "1411:338:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "1457:16:136",
                    "nodeType": "YulBlock",
                    "src": "1457:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1466:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1466:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1469:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1469:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1459:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1459:6:136"
                          },
                          "nativeSrc": "1459:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1459:12:136"
                        },
                        "nativeSrc": "1459:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1459:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "1432:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "1432:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "1441:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1441:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "1428:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1428:3:136"
                        },
                        "nativeSrc": "1428:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1428:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1453:2:136",
                        "nodeType": "YulLiteral",
                        "src": "1453:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "1424:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "1424:3:136"
                    },
                    "nativeSrc": "1424:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1424:32:136"
                  },
                  "nativeSrc": "1421:52:136",
                  "nodeType": "YulIf",
                  "src": "1421:52:136"
                },
                {
                  "nativeSrc": "1482:37:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1482:37:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1509:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "1509:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1496:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "1496:12:136"
                    },
                    "nativeSrc": "1496:23:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1496:23:136"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "1486:6:136",
                      "nodeType": "YulTypedName",
                      "src": "1486:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "1562:16:136",
                    "nodeType": "YulBlock",
                    "src": "1562:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1571:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1571:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1574:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1574:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1564:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1564:6:136"
                          },
                          "nativeSrc": "1564:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1564:12:136"
                        },
                        "nativeSrc": "1564:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1564:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "1534:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "1534:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1542:18:136",
                        "nodeType": "YulLiteral",
                        "src": "1542:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "1531:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "1531:2:136"
                    },
                    "nativeSrc": "1531:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1531:30:136"
                  },
                  "nativeSrc": "1528:50:136",
                  "nodeType": "YulIf",
                  "src": "1528:50:136"
                },
                {
                  "nativeSrc": "1587:59:136",
                  "nodeType": "YulAssignment",
                  "src": "1587:59:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1618:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1618:9:136"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "1629:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1629:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1614:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1614:3:136"
                        },
                        "nativeSrc": "1614:22:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1614:22:136"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "1638:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "1638:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nativeSrc": "1597:16:136",
                      "nodeType": "YulIdentifier",
                      "src": "1597:16:136"
                    },
                    "nativeSrc": "1597:49:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1597:49:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "1587:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1587:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "1655:14:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1655:14:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "1668:1:136",
                    "nodeType": "YulLiteral",
                    "src": "1668:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "1659:5:136",
                      "nodeType": "YulTypedName",
                      "src": "1659:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1678:41:136",
                  "nodeType": "YulAssignment",
                  "src": "1678:41:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "1704:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1704:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "1715:2:136",
                            "nodeType": "YulLiteral",
                            "src": "1715:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "1700:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1700:3:136"
                        },
                        "nativeSrc": "1700:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1700:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1687:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "1687:12:136"
                    },
                    "nativeSrc": "1687:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1687:32:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "1678:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "1678:5:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "1728:15:136",
                  "nodeType": "YulAssignment",
                  "src": "1728:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "1738:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "1738:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "1728:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "1728:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes_memory_ptrt_bytes32",
            "nativeSrc": "1315:434:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1369:9:136",
                "nodeType": "YulTypedName",
                "src": "1369:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "1380:7:136",
                "nodeType": "YulTypedName",
                "src": "1380:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "1392:6:136",
                "nodeType": "YulTypedName",
                "src": "1392:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "1400:6:136",
                "nodeType": "YulTypedName",
                "src": "1400:6:136",
                "type": ""
              }
            ],
            "src": "1315:434:136"
          },
          {
            "body": {
              "nativeSrc": "1867:503:136",
              "nodeType": "YulBlock",
              "src": "1867:503:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "1913:16:136",
                    "nodeType": "YulBlock",
                    "src": "1913:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "1922:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1922:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "1925:1:136",
                              "nodeType": "YulLiteral",
                              "src": "1925:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "1915:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "1915:6:136"
                          },
                          "nativeSrc": "1915:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "1915:12:136"
                        },
                        "nativeSrc": "1915:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "1915:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "1888:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "1888:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "1897:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "1897:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "1884:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "1884:3:136"
                        },
                        "nativeSrc": "1884:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "1884:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "1909:2:136",
                        "nodeType": "YulLiteral",
                        "src": "1909:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "1880:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "1880:3:136"
                    },
                    "nativeSrc": "1880:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1880:32:136"
                  },
                  "nativeSrc": "1877:52:136",
                  "nodeType": "YulIf",
                  "src": "1877:52:136"
                },
                {
                  "nativeSrc": "1938:14:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "1938:14:136",
                  "value": {
                    "kind": "number",
                    "nativeSrc": "1951:1:136",
                    "nodeType": "YulLiteral",
                    "src": "1951:1:136",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "1942:5:136",
                      "nodeType": "YulTypedName",
                      "src": "1942:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "nativeSrc": "1961:32:136",
                  "nodeType": "YulAssignment",
                  "src": "1961:32:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "1983:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "1983:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "1970:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "1970:12:136"
                    },
                    "nativeSrc": "1970:23:136",
                    "nodeType": "YulFunctionCall",
                    "src": "1970:23:136"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nativeSrc": "1961:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "1961:5:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "2002:15:136",
                  "nodeType": "YulAssignment",
                  "src": "2002:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "2012:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "2012:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "2002:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2002:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "2026:47:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2026:47:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2058:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2058:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2069:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2069:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2054:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2054:3:136"
                        },
                        "nativeSrc": "2054:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2054:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2041:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "2041:12:136"
                    },
                    "nativeSrc": "2041:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2041:32:136"
                  },
                  "variables": [
                    {
                      "name": "value_1",
                      "nativeSrc": "2030:7:136",
                      "nodeType": "YulTypedName",
                      "src": "2030:7:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "2140:16:136",
                    "nodeType": "YulBlock",
                    "src": "2140:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2149:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2149:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2152:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2152:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2142:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2142:6:136"
                          },
                          "nativeSrc": "2142:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "2142:12:136"
                        },
                        "nativeSrc": "2142:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "2142:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value_1",
                            "nativeSrc": "2095:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "2095:7:136"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value_1",
                                "nativeSrc": "2108:7:136",
                                "nodeType": "YulIdentifier",
                                "src": "2108:7:136"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nativeSrc": "2125:3:136",
                                        "nodeType": "YulLiteral",
                                        "src": "2125:3:136",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "2130:1:136",
                                        "nodeType": "YulLiteral",
                                        "src": "2130:1:136",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nativeSrc": "2121:3:136",
                                      "nodeType": "YulIdentifier",
                                      "src": "2121:3:136"
                                    },
                                    "nativeSrc": "2121:11:136",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2121:11:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2134:1:136",
                                    "nodeType": "YulLiteral",
                                    "src": "2134:1:136",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nativeSrc": "2117:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "2117:3:136"
                                },
                                "nativeSrc": "2117:19:136",
                                "nodeType": "YulFunctionCall",
                                "src": "2117:19:136"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "2104:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "2104:3:136"
                            },
                            "nativeSrc": "2104:33:136",
                            "nodeType": "YulFunctionCall",
                            "src": "2104:33:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "2092:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "2092:2:136"
                        },
                        "nativeSrc": "2092:46:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2092:46:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "2085:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2085:6:136"
                    },
                    "nativeSrc": "2085:54:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2085:54:136"
                  },
                  "nativeSrc": "2082:74:136",
                  "nodeType": "YulIf",
                  "src": "2082:74:136"
                },
                {
                  "nativeSrc": "2165:17:136",
                  "nodeType": "YulAssignment",
                  "src": "2165:17:136",
                  "value": {
                    "name": "value_1",
                    "nativeSrc": "2175:7:136",
                    "nodeType": "YulIdentifier",
                    "src": "2175:7:136"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nativeSrc": "2165:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2165:6:136"
                    }
                  ]
                },
                {
                  "nativeSrc": "2191:46:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "2191:46:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2222:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2222:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2233:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2233:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2218:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2218:3:136"
                        },
                        "nativeSrc": "2218:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2218:18:136"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nativeSrc": "2205:12:136",
                      "nodeType": "YulIdentifier",
                      "src": "2205:12:136"
                    },
                    "nativeSrc": "2205:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2205:32:136"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nativeSrc": "2195:6:136",
                      "nodeType": "YulTypedName",
                      "src": "2195:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "2280:16:136",
                    "nodeType": "YulBlock",
                    "src": "2280:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "2289:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2289:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "2292:1:136",
                              "nodeType": "YulLiteral",
                              "src": "2292:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "2282:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2282:6:136"
                          },
                          "nativeSrc": "2282:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "2282:12:136"
                        },
                        "nativeSrc": "2282:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "2282:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nativeSrc": "2252:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "2252:6:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2260:18:136",
                        "nodeType": "YulLiteral",
                        "src": "2260:18:136",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nativeSrc": "2249:2:136",
                      "nodeType": "YulIdentifier",
                      "src": "2249:2:136"
                    },
                    "nativeSrc": "2249:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2249:30:136"
                  },
                  "nativeSrc": "2246:50:136",
                  "nodeType": "YulIf",
                  "src": "2246:50:136"
                },
                {
                  "nativeSrc": "2305:59:136",
                  "nodeType": "YulAssignment",
                  "src": "2305:59:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2336:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2336:9:136"
                          },
                          {
                            "name": "offset",
                            "nativeSrc": "2347:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2347:6:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2332:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2332:3:136"
                        },
                        "nativeSrc": "2332:22:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2332:22:136"
                      },
                      {
                        "name": "dataEnd",
                        "nativeSrc": "2356:7:136",
                        "nodeType": "YulIdentifier",
                        "src": "2356:7:136"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nativeSrc": "2315:16:136",
                      "nodeType": "YulIdentifier",
                      "src": "2315:16:136"
                    },
                    "nativeSrc": "2315:49:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2315:49:136"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nativeSrc": "2305:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2305:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes32t_addresst_bytes_memory_ptr",
            "nativeSrc": "1754:616:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "1817:9:136",
                "nodeType": "YulTypedName",
                "src": "1817:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "1828:7:136",
                "nodeType": "YulTypedName",
                "src": "1828:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "1840:6:136",
                "nodeType": "YulTypedName",
                "src": "1840:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "1848:6:136",
                "nodeType": "YulTypedName",
                "src": "1848:6:136",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "1856:6:136",
                "nodeType": "YulTypedName",
                "src": "1856:6:136",
                "type": ""
              }
            ],
            "src": "1754:616:136"
          },
          {
            "body": {
              "nativeSrc": "2504:102:136",
              "nodeType": "YulBlock",
              "src": "2504:102:136",
              "statements": [
                {
                  "nativeSrc": "2514:26:136",
                  "nodeType": "YulAssignment",
                  "src": "2514:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2526:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "2526:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2537:2:136",
                        "nodeType": "YulLiteral",
                        "src": "2537:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2522:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "2522:3:136"
                    },
                    "nativeSrc": "2522:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2522:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "2514:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "2514:4:136"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2556:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "2556:9:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "2571:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "2571:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2587:3:136",
                                    "nodeType": "YulLiteral",
                                    "src": "2587:3:136",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "2592:1:136",
                                    "nodeType": "YulLiteral",
                                    "src": "2592:1:136",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "2583:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "2583:3:136"
                                },
                                "nativeSrc": "2583:11:136",
                                "nodeType": "YulFunctionCall",
                                "src": "2583:11:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "2596:1:136",
                                "nodeType": "YulLiteral",
                                "src": "2596:1:136",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "2579:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "2579:3:136"
                            },
                            "nativeSrc": "2579:19:136",
                            "nodeType": "YulFunctionCall",
                            "src": "2579:19:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "2567:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2567:3:136"
                        },
                        "nativeSrc": "2567:32:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2567:32:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2549:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2549:6:136"
                    },
                    "nativeSrc": "2549:51:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2549:51:136"
                  },
                  "nativeSrc": "2549:51:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2549:51:136"
                }
              ]
            },
            "name": "abi_encode_tuple_t_contract$_WitnetProxy_$8994__to_t_address_payable__fromStack_reversed",
            "nativeSrc": "2375:231:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2473:9:136",
                "nodeType": "YulTypedName",
                "src": "2473:9:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "2484:6:136",
                "nodeType": "YulTypedName",
                "src": "2484:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "2495:4:136",
                "nodeType": "YulTypedName",
                "src": "2495:4:136",
                "type": ""
              }
            ],
            "src": "2375:231:136"
          },
          {
            "body": {
              "nativeSrc": "2785:223:136",
              "nodeType": "YulBlock",
              "src": "2785:223:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2802:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "2802:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2813:2:136",
                        "nodeType": "YulLiteral",
                        "src": "2813:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2795:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2795:6:136"
                    },
                    "nativeSrc": "2795:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2795:21:136"
                  },
                  "nativeSrc": "2795:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2795:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2836:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2836:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2847:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2847:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2832:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2832:3:136"
                        },
                        "nativeSrc": "2832:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2832:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2852:2:136",
                        "nodeType": "YulLiteral",
                        "src": "2852:2:136",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2825:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2825:6:136"
                    },
                    "nativeSrc": "2825:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2825:30:136"
                  },
                  "nativeSrc": "2825:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2825:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2875:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2875:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2886:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2886:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2871:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2871:3:136"
                        },
                        "nativeSrc": "2871:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2871:18:136"
                      },
                      {
                        "hexValue": "5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c65",
                        "kind": "string",
                        "nativeSrc": "2891:34:136",
                        "nodeType": "YulLiteral",
                        "src": "2891:34:136",
                        "type": "",
                        "value": "WitnetDeployer: deployment faile"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2864:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2864:6:136"
                    },
                    "nativeSrc": "2864:62:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2864:62:136"
                  },
                  "nativeSrc": "2864:62:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2864:62:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "2946:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "2946:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "2957:2:136",
                            "nodeType": "YulLiteral",
                            "src": "2957:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "2942:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "2942:3:136"
                        },
                        "nativeSrc": "2942:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "2942:18:136"
                      },
                      {
                        "hexValue": "64",
                        "kind": "string",
                        "nativeSrc": "2962:3:136",
                        "nodeType": "YulLiteral",
                        "src": "2962:3:136",
                        "type": "",
                        "value": "d"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "2935:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "2935:6:136"
                    },
                    "nativeSrc": "2935:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2935:31:136"
                  },
                  "nativeSrc": "2935:31:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "2935:31:136"
                },
                {
                  "nativeSrc": "2975:27:136",
                  "nodeType": "YulAssignment",
                  "src": "2975:27:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "2987:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "2987:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "2998:3:136",
                        "nodeType": "YulLiteral",
                        "src": "2998:3:136",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "2983:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "2983:3:136"
                    },
                    "nativeSrc": "2983:19:136",
                    "nodeType": "YulFunctionCall",
                    "src": "2983:19:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "2975:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "2975:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_a449f037473e66c93f74665b4547dc6279e787cd06aefbab4d74a9c55d42a13f__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "2611:397:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "2762:9:136",
                "nodeType": "YulTypedName",
                "src": "2762:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "2776:4:136",
                "nodeType": "YulTypedName",
                "src": "2776:4:136",
                "type": ""
              }
            ],
            "src": "2611:397:136"
          },
          {
            "body": {
              "nativeSrc": "3160:366:136",
              "nodeType": "YulBlock",
              "src": "3160:366:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "3177:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "3177:9:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "3192:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3192:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3208:3:136",
                                    "nodeType": "YulLiteral",
                                    "src": "3208:3:136",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3213:1:136",
                                    "nodeType": "YulLiteral",
                                    "src": "3213:1:136",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nativeSrc": "3204:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "3204:3:136"
                                },
                                "nativeSrc": "3204:11:136",
                                "nodeType": "YulFunctionCall",
                                "src": "3204:11:136"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "3217:1:136",
                                "nodeType": "YulLiteral",
                                "src": "3217:1:136",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nativeSrc": "3200:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "3200:3:136"
                            },
                            "nativeSrc": "3200:19:136",
                            "nodeType": "YulFunctionCall",
                            "src": "3200:19:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "3188:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3188:3:136"
                        },
                        "nativeSrc": "3188:32:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3188:32:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3170:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3170:6:136"
                    },
                    "nativeSrc": "3170:51:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3170:51:136"
                  },
                  "nativeSrc": "3170:51:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3170:51:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3241:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3241:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3252:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3252:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3237:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3237:3:136"
                        },
                        "nativeSrc": "3237:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3237:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3257:2:136",
                        "nodeType": "YulLiteral",
                        "src": "3257:2:136",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3230:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3230:6:136"
                    },
                    "nativeSrc": "3230:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3230:30:136"
                  },
                  "nativeSrc": "3230:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3230:30:136"
                },
                {
                  "nativeSrc": "3269:27:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3269:27:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nativeSrc": "3289:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "3289:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "3283:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "3283:5:136"
                    },
                    "nativeSrc": "3283:13:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3283:13:136"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "3273:6:136",
                      "nodeType": "YulTypedName",
                      "src": "3273:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3316:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3316:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3327:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3327:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3312:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3312:3:136"
                        },
                        "nativeSrc": "3312:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3312:18:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "3332:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "3332:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3305:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3305:6:136"
                    },
                    "nativeSrc": "3305:34:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3305:34:136"
                  },
                  "nativeSrc": "3305:34:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3305:34:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3358:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3358:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3369:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3369:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3354:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3354:3:136"
                        },
                        "nativeSrc": "3354:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3354:18:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nativeSrc": "3378:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3378:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3386:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3386:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3374:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3374:3:136"
                        },
                        "nativeSrc": "3374:15:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3374:15:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "3391:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "3391:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mcopy",
                      "nativeSrc": "3348:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "3348:5:136"
                    },
                    "nativeSrc": "3348:50:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3348:50:136"
                  },
                  "nativeSrc": "3348:50:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3348:50:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nativeSrc": "3422:9:136",
                                "nodeType": "YulIdentifier",
                                "src": "3422:9:136"
                              },
                              {
                                "name": "length",
                                "nativeSrc": "3433:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "3433:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nativeSrc": "3418:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "3418:3:136"
                            },
                            "nativeSrc": "3418:22:136",
                            "nodeType": "YulFunctionCall",
                            "src": "3418:22:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "3442:2:136",
                            "nodeType": "YulLiteral",
                            "src": "3442:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3414:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3414:3:136"
                        },
                        "nativeSrc": "3414:31:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3414:31:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3447:1:136",
                        "nodeType": "YulLiteral",
                        "src": "3447:1:136",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3407:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3407:6:136"
                    },
                    "nativeSrc": "3407:42:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3407:42:136"
                  },
                  "nativeSrc": "3407:42:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3407:42:136"
                },
                {
                  "nativeSrc": "3458:62:136",
                  "nodeType": "YulAssignment",
                  "src": "3458:62:136",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "3474:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3474:9:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nativeSrc": "3493:6:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "3493:6:136"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3501:2:136",
                                    "nodeType": "YulLiteral",
                                    "src": "3501:2:136",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "3489:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "3489:3:136"
                                },
                                "nativeSrc": "3489:15:136",
                                "nodeType": "YulFunctionCall",
                                "src": "3489:15:136"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "3510:2:136",
                                    "nodeType": "YulLiteral",
                                    "src": "3510:2:136",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nativeSrc": "3506:3:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "3506:3:136"
                                },
                                "nativeSrc": "3506:7:136",
                                "nodeType": "YulFunctionCall",
                                "src": "3506:7:136"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nativeSrc": "3485:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "3485:3:136"
                            },
                            "nativeSrc": "3485:29:136",
                            "nodeType": "YulFunctionCall",
                            "src": "3485:29:136"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "3470:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3470:3:136"
                        },
                        "nativeSrc": "3470:45:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3470:45:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3517:2:136",
                        "nodeType": "YulLiteral",
                        "src": "3517:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "3466:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "3466:3:136"
                    },
                    "nativeSrc": "3466:54:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3466:54:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "3458:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "3458:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed",
            "nativeSrc": "3013:513:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "3121:9:136",
                "nodeType": "YulTypedName",
                "src": "3121:9:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "3132:6:136",
                "nodeType": "YulTypedName",
                "src": "3132:6:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "3140:6:136",
                "nodeType": "YulTypedName",
                "src": "3140:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "3151:4:136",
                "nodeType": "YulTypedName",
                "src": "3151:4:136",
                "type": ""
              }
            ],
            "src": "3013:513:136"
          },
          {
            "body": {
              "nativeSrc": "3609:199:136",
              "nodeType": "YulBlock",
              "src": "3609:199:136",
              "statements": [
                {
                  "body": {
                    "nativeSrc": "3655:16:136",
                    "nodeType": "YulBlock",
                    "src": "3655:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3664:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3664:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3667:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3667:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3657:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3657:6:136"
                          },
                          "nativeSrc": "3657:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "3657:12:136"
                        },
                        "nativeSrc": "3657:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "3657:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nativeSrc": "3630:7:136",
                            "nodeType": "YulIdentifier",
                            "src": "3630:7:136"
                          },
                          {
                            "name": "headStart",
                            "nativeSrc": "3639:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "3639:9:136"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nativeSrc": "3626:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "3626:3:136"
                        },
                        "nativeSrc": "3626:23:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3626:23:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "3651:2:136",
                        "nodeType": "YulLiteral",
                        "src": "3651:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nativeSrc": "3622:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "3622:3:136"
                    },
                    "nativeSrc": "3622:32:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3622:32:136"
                  },
                  "nativeSrc": "3619:52:136",
                  "nodeType": "YulIf",
                  "src": "3619:52:136"
                },
                {
                  "nativeSrc": "3680:29:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "3680:29:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "3699:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "3699:9:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "3693:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "3693:5:136"
                    },
                    "nativeSrc": "3693:16:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3693:16:136"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nativeSrc": "3684:5:136",
                      "nodeType": "YulTypedName",
                      "src": "3684:5:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nativeSrc": "3762:16:136",
                    "nodeType": "YulBlock",
                    "src": "3762:16:136",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "3771:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3771:1:136",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "3774:1:136",
                              "nodeType": "YulLiteral",
                              "src": "3774:1:136",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nativeSrc": "3764:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "3764:6:136"
                          },
                          "nativeSrc": "3764:12:136",
                          "nodeType": "YulFunctionCall",
                          "src": "3764:12:136"
                        },
                        "nativeSrc": "3764:12:136",
                        "nodeType": "YulExpressionStatement",
                        "src": "3764:12:136"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nativeSrc": "3731:5:136",
                            "nodeType": "YulIdentifier",
                            "src": "3731:5:136"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "value",
                                    "nativeSrc": "3752:5:136",
                                    "nodeType": "YulIdentifier",
                                    "src": "3752:5:136"
                                  }
                                ],
                                "functionName": {
                                  "name": "iszero",
                                  "nativeSrc": "3745:6:136",
                                  "nodeType": "YulIdentifier",
                                  "src": "3745:6:136"
                                },
                                "nativeSrc": "3745:13:136",
                                "nodeType": "YulFunctionCall",
                                "src": "3745:13:136"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nativeSrc": "3738:6:136",
                              "nodeType": "YulIdentifier",
                              "src": "3738:6:136"
                            },
                            "nativeSrc": "3738:21:136",
                            "nodeType": "YulFunctionCall",
                            "src": "3738:21:136"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nativeSrc": "3728:2:136",
                          "nodeType": "YulIdentifier",
                          "src": "3728:2:136"
                        },
                        "nativeSrc": "3728:32:136",
                        "nodeType": "YulFunctionCall",
                        "src": "3728:32:136"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nativeSrc": "3721:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3721:6:136"
                    },
                    "nativeSrc": "3721:40:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3721:40:136"
                  },
                  "nativeSrc": "3718:60:136",
                  "nodeType": "YulIf",
                  "src": "3718:60:136"
                },
                {
                  "nativeSrc": "3787:15:136",
                  "nodeType": "YulAssignment",
                  "src": "3787:15:136",
                  "value": {
                    "name": "value",
                    "nativeSrc": "3797:5:136",
                    "nodeType": "YulIdentifier",
                    "src": "3797:5:136"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nativeSrc": "3787:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3787:6:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bool_fromMemory",
            "nativeSrc": "3531:277:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "3575:9:136",
                "nodeType": "YulTypedName",
                "src": "3575:9:136",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nativeSrc": "3586:7:136",
                "nodeType": "YulTypedName",
                "src": "3586:7:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nativeSrc": "3598:6:136",
                "nodeType": "YulTypedName",
                "src": "3598:6:136",
                "type": ""
              }
            ],
            "src": "3531:277:136"
          },
          {
            "body": {
              "nativeSrc": "3987:223:136",
              "nodeType": "YulBlock",
              "src": "3987:223:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4004:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "4004:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4015:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4015:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "3997:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "3997:6:136"
                    },
                    "nativeSrc": "3997:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "3997:21:136"
                  },
                  "nativeSrc": "3997:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "3997:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4038:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "4038:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4049:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4049:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4034:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4034:3:136"
                        },
                        "nativeSrc": "4034:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4034:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4054:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4054:2:136",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4027:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4027:6:136"
                    },
                    "nativeSrc": "4027:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4027:30:136"
                  },
                  "nativeSrc": "4027:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4027:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4077:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "4077:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4088:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4088:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4073:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4073:3:136"
                        },
                        "nativeSrc": "4073:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4073:18:136"
                      },
                      {
                        "hexValue": "5769746e65744465706c6f7965723a20616c72656164792070726f7869666965",
                        "kind": "string",
                        "nativeSrc": "4093:34:136",
                        "nodeType": "YulLiteral",
                        "src": "4093:34:136",
                        "type": "",
                        "value": "WitnetDeployer: already proxifie"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4066:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4066:6:136"
                    },
                    "nativeSrc": "4066:62:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4066:62:136"
                  },
                  "nativeSrc": "4066:62:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4066:62:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "4148:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "4148:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4159:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4159:2:136",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4144:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4144:3:136"
                        },
                        "nativeSrc": "4144:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4144:18:136"
                      },
                      {
                        "hexValue": "64",
                        "kind": "string",
                        "nativeSrc": "4164:3:136",
                        "nodeType": "YulLiteral",
                        "src": "4164:3:136",
                        "type": "",
                        "value": "d"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4137:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4137:6:136"
                    },
                    "nativeSrc": "4137:31:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4137:31:136"
                  },
                  "nativeSrc": "4137:31:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4137:31:136"
                },
                {
                  "nativeSrc": "4177:27:136",
                  "nodeType": "YulAssignment",
                  "src": "4177:27:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "4189:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "4189:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4200:3:136",
                        "nodeType": "YulLiteral",
                        "src": "4200:3:136",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "4185:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "4185:3:136"
                    },
                    "nativeSrc": "4185:19:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4185:19:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "4177:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "4177:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_07010c659982893c2bfaa9066955408f5c67d963251677f65ceecaf6871b6734__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "3813:397:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "3964:9:136",
                "nodeType": "YulTypedName",
                "src": "3964:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "3978:4:136",
                "nodeType": "YulTypedName",
                "src": "3978:4:136",
                "type": ""
              }
            ],
            "src": "3813:397:136"
          },
          {
            "body": {
              "nativeSrc": "4416:240:136",
              "nodeType": "YulBlock",
              "src": "4416:240:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "4433:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "4433:3:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "4442:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "4442:6:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4454:3:136",
                                "nodeType": "YulLiteral",
                                "src": "4454:3:136",
                                "type": "",
                                "value": "248"
                              },
                              {
                                "kind": "number",
                                "nativeSrc": "4459:3:136",
                                "nodeType": "YulLiteral",
                                "src": "4459:3:136",
                                "type": "",
                                "value": "255"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "4450:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "4450:3:136"
                            },
                            "nativeSrc": "4450:13:136",
                            "nodeType": "YulFunctionCall",
                            "src": "4450:13:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "4438:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4438:3:136"
                        },
                        "nativeSrc": "4438:26:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4438:26:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4426:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4426:6:136"
                    },
                    "nativeSrc": "4426:39:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4426:39:136"
                  },
                  "nativeSrc": "4426:39:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4426:39:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4485:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "4485:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4490:1:136",
                            "nodeType": "YulLiteral",
                            "src": "4490:1:136",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4481:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4481:3:136"
                        },
                        "nativeSrc": "4481:11:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4481:11:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4502:2:136",
                                "nodeType": "YulLiteral",
                                "src": "4502:2:136",
                                "type": "",
                                "value": "96"
                              },
                              {
                                "name": "value1",
                                "nativeSrc": "4506:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "4506:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "4498:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "4498:3:136"
                            },
                            "nativeSrc": "4498:15:136",
                            "nodeType": "YulFunctionCall",
                            "src": "4498:15:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "4519:26:136",
                                "nodeType": "YulLiteral",
                                "src": "4519:26:136",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "4515:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "4515:3:136"
                            },
                            "nativeSrc": "4515:31:136",
                            "nodeType": "YulFunctionCall",
                            "src": "4515:31:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "4494:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4494:3:136"
                        },
                        "nativeSrc": "4494:53:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4494:53:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4474:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4474:6:136"
                    },
                    "nativeSrc": "4474:74:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4474:74:136"
                  },
                  "nativeSrc": "4474:74:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4474:74:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4568:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "4568:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4573:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4573:2:136",
                            "type": "",
                            "value": "21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4564:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4564:3:136"
                        },
                        "nativeSrc": "4564:12:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4564:12:136"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "4578:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "4578:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4557:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4557:6:136"
                    },
                    "nativeSrc": "4557:28:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4557:28:136"
                  },
                  "nativeSrc": "4557:28:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4557:28:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4605:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "4605:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4610:2:136",
                            "nodeType": "YulLiteral",
                            "src": "4610:2:136",
                            "type": "",
                            "value": "53"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4601:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4601:3:136"
                        },
                        "nativeSrc": "4601:12:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4601:12:136"
                      },
                      {
                        "name": "value3",
                        "nativeSrc": "4615:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "4615:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4594:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4594:6:136"
                    },
                    "nativeSrc": "4594:28:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4594:28:136"
                  },
                  "nativeSrc": "4594:28:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4594:28:136"
                },
                {
                  "nativeSrc": "4631:19:136",
                  "nodeType": "YulAssignment",
                  "src": "4631:19:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "4642:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "4642:3:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "4647:2:136",
                        "nodeType": "YulLiteral",
                        "src": "4647:2:136",
                        "type": "",
                        "value": "85"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "4638:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "4638:3:136"
                    },
                    "nativeSrc": "4638:12:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4638:12:136"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "4631:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "4631:3:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "4215:441:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "4368:3:136",
                "nodeType": "YulTypedName",
                "src": "4368:3:136",
                "type": ""
              },
              {
                "name": "value3",
                "nativeSrc": "4373:6:136",
                "nodeType": "YulTypedName",
                "src": "4373:6:136",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "4381:6:136",
                "nodeType": "YulTypedName",
                "src": "4381:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "4389:6:136",
                "nodeType": "YulTypedName",
                "src": "4389:6:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "4397:6:136",
                "nodeType": "YulTypedName",
                "src": "4397:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "4408:3:136",
                "nodeType": "YulTypedName",
                "src": "4408:3:136",
                "type": ""
              }
            ],
            "src": "4215:441:136"
          },
          {
            "body": {
              "nativeSrc": "4937:227:136",
              "nodeType": "YulBlock",
              "src": "4937:227:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "4954:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "4954:3:136"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "4963:3:136",
                            "nodeType": "YulLiteral",
                            "src": "4963:3:136",
                            "type": "",
                            "value": "248"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4968:3:136",
                            "nodeType": "YulLiteral",
                            "src": "4968:3:136",
                            "type": "",
                            "value": "255"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "4959:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4959:3:136"
                        },
                        "nativeSrc": "4959:13:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4959:13:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4947:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4947:6:136"
                    },
                    "nativeSrc": "4947:26:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4947:26:136"
                  },
                  "nativeSrc": "4947:26:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4947:26:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "4993:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "4993:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "4998:1:136",
                            "nodeType": "YulLiteral",
                            "src": "4998:1:136",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "4989:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "4989:3:136"
                        },
                        "nativeSrc": "4989:11:136",
                        "nodeType": "YulFunctionCall",
                        "src": "4989:11:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "5010:2:136",
                                "nodeType": "YulLiteral",
                                "src": "5010:2:136",
                                "type": "",
                                "value": "96"
                              },
                              {
                                "name": "value0",
                                "nativeSrc": "5014:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "5014:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "5006:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "5006:3:136"
                            },
                            "nativeSrc": "5006:15:136",
                            "nodeType": "YulFunctionCall",
                            "src": "5006:15:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "5027:26:136",
                                "nodeType": "YulLiteral",
                                "src": "5027:26:136",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "5023:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "5023:3:136"
                            },
                            "nativeSrc": "5023:31:136",
                            "nodeType": "YulFunctionCall",
                            "src": "5023:31:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "5002:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5002:3:136"
                        },
                        "nativeSrc": "5002:53:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5002:53:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "4982:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "4982:6:136"
                    },
                    "nativeSrc": "4982:74:136",
                    "nodeType": "YulFunctionCall",
                    "src": "4982:74:136"
                  },
                  "nativeSrc": "4982:74:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "4982:74:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "5076:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "5076:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5081:2:136",
                            "nodeType": "YulLiteral",
                            "src": "5081:2:136",
                            "type": "",
                            "value": "21"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5072:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5072:3:136"
                        },
                        "nativeSrc": "5072:12:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5072:12:136"
                      },
                      {
                        "name": "value1",
                        "nativeSrc": "5086:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "5086:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5065:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5065:6:136"
                    },
                    "nativeSrc": "5065:28:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5065:28:136"
                  },
                  "nativeSrc": "5065:28:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "5065:28:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "5113:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "5113:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5118:2:136",
                            "nodeType": "YulLiteral",
                            "src": "5118:2:136",
                            "type": "",
                            "value": "53"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5109:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5109:3:136"
                        },
                        "nativeSrc": "5109:12:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5109:12:136"
                      },
                      {
                        "name": "value2",
                        "nativeSrc": "5123:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "5123:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5102:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5102:6:136"
                    },
                    "nativeSrc": "5102:28:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5102:28:136"
                  },
                  "nativeSrc": "5102:28:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "5102:28:136"
                },
                {
                  "nativeSrc": "5139:19:136",
                  "nodeType": "YulAssignment",
                  "src": "5139:19:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "5150:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "5150:3:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5155:2:136",
                        "nodeType": "YulLiteral",
                        "src": "5155:2:136",
                        "type": "",
                        "value": "85"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "5146:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "5146:3:136"
                    },
                    "nativeSrc": "5146:12:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5146:12:136"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "5139:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "5139:3:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9_t_address_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "4661:503:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "4897:3:136",
                "nodeType": "YulTypedName",
                "src": "4897:3:136",
                "type": ""
              },
              {
                "name": "value2",
                "nativeSrc": "4902:6:136",
                "nodeType": "YulTypedName",
                "src": "4902:6:136",
                "type": ""
              },
              {
                "name": "value1",
                "nativeSrc": "4910:6:136",
                "nodeType": "YulTypedName",
                "src": "4910:6:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "4918:6:136",
                "nodeType": "YulTypedName",
                "src": "4918:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "4929:3:136",
                "nodeType": "YulTypedName",
                "src": "4929:3:136",
                "type": ""
              }
            ],
            "src": "4661:503:136"
          },
          {
            "body": {
              "nativeSrc": "5490:197:136",
              "nodeType": "YulBlock",
              "src": "5490:197:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "5507:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "5507:3:136"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "5516:3:136",
                            "nodeType": "YulLiteral",
                            "src": "5516:3:136",
                            "type": "",
                            "value": "242"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5521:5:136",
                            "nodeType": "YulLiteral",
                            "src": "5521:5:136",
                            "type": "",
                            "value": "13733"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "5512:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5512:3:136"
                        },
                        "nativeSrc": "5512:15:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5512:15:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5500:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5500:6:136"
                    },
                    "nativeSrc": "5500:28:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5500:28:136"
                  },
                  "nativeSrc": "5500:28:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "5500:28:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "5548:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "5548:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5553:1:136",
                            "nodeType": "YulLiteral",
                            "src": "5553:1:136",
                            "type": "",
                            "value": "2"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5544:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5544:3:136"
                        },
                        "nativeSrc": "5544:11:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5544:11:136"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "5565:2:136",
                                "nodeType": "YulLiteral",
                                "src": "5565:2:136",
                                "type": "",
                                "value": "96"
                              },
                              {
                                "name": "value0",
                                "nativeSrc": "5569:6:136",
                                "nodeType": "YulIdentifier",
                                "src": "5569:6:136"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nativeSrc": "5561:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "5561:3:136"
                            },
                            "nativeSrc": "5561:15:136",
                            "nodeType": "YulFunctionCall",
                            "src": "5561:15:136"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nativeSrc": "5582:26:136",
                                "nodeType": "YulLiteral",
                                "src": "5582:26:136",
                                "type": "",
                                "value": "0xffffffffffffffffffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nativeSrc": "5578:3:136",
                              "nodeType": "YulIdentifier",
                              "src": "5578:3:136"
                            },
                            "nativeSrc": "5578:31:136",
                            "nodeType": "YulFunctionCall",
                            "src": "5578:31:136"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nativeSrc": "5557:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5557:3:136"
                        },
                        "nativeSrc": "5557:53:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5557:53:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5537:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5537:6:136"
                    },
                    "nativeSrc": "5537:74:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5537:74:136"
                  },
                  "nativeSrc": "5537:74:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "5537:74:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nativeSrc": "5631:3:136",
                            "nodeType": "YulIdentifier",
                            "src": "5631:3:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5636:2:136",
                            "nodeType": "YulLiteral",
                            "src": "5636:2:136",
                            "type": "",
                            "value": "22"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5627:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5627:3:136"
                        },
                        "nativeSrc": "5627:12:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5627:12:136"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nativeSrc": "5645:3:136",
                            "nodeType": "YulLiteral",
                            "src": "5645:3:136",
                            "type": "",
                            "value": "248"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5650:1:136",
                            "nodeType": "YulLiteral",
                            "src": "5650:1:136",
                            "type": "",
                            "value": "1"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nativeSrc": "5641:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5641:3:136"
                        },
                        "nativeSrc": "5641:11:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5641:11:136"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5620:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5620:6:136"
                    },
                    "nativeSrc": "5620:33:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5620:33:136"
                  },
                  "nativeSrc": "5620:33:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "5620:33:136"
                },
                {
                  "nativeSrc": "5662:19:136",
                  "nodeType": "YulAssignment",
                  "src": "5662:19:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "5673:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "5673:3:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5678:2:136",
                        "nodeType": "YulLiteral",
                        "src": "5678:2:136",
                        "type": "",
                        "value": "23"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "5669:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "5669:3:136"
                    },
                    "nativeSrc": "5669:12:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5669:12:136"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "5662:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "5662:3:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_stringliteral_4fdc04d28c8d22070e5fd0f23f00bae0b21cc4e5091b5fd7a9cad9babd3668cf_t_address_t_stringliteral_5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2__to_t_string_memory_ptr_t_address_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "5169:518:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "5466:3:136",
                "nodeType": "YulTypedName",
                "src": "5466:3:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "5471:6:136",
                "nodeType": "YulTypedName",
                "src": "5471:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "5482:3:136",
                "nodeType": "YulTypedName",
                "src": "5482:3:136",
                "type": ""
              }
            ],
            "src": "5169:518:136"
          },
          {
            "body": {
              "nativeSrc": "5866:180:136",
              "nodeType": "YulBlock",
              "src": "5866:180:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "5883:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "5883:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5894:2:136",
                        "nodeType": "YulLiteral",
                        "src": "5894:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5876:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5876:6:136"
                    },
                    "nativeSrc": "5876:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5876:21:136"
                  },
                  "nativeSrc": "5876:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "5876:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "5917:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "5917:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5928:2:136",
                            "nodeType": "YulLiteral",
                            "src": "5928:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5913:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5913:3:136"
                        },
                        "nativeSrc": "5913:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5913:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "5933:2:136",
                        "nodeType": "YulLiteral",
                        "src": "5933:2:136",
                        "type": "",
                        "value": "30"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5906:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5906:6:136"
                    },
                    "nativeSrc": "5906:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5906:30:136"
                  },
                  "nativeSrc": "5906:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "5906:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "5956:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "5956:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "5967:2:136",
                            "nodeType": "YulLiteral",
                            "src": "5967:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "5952:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "5952:3:136"
                        },
                        "nativeSrc": "5952:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "5952:18:136"
                      },
                      {
                        "hexValue": "437265617465333a2074617267657420616c726561647920657869737473",
                        "kind": "string",
                        "nativeSrc": "5972:32:136",
                        "nodeType": "YulLiteral",
                        "src": "5972:32:136",
                        "type": "",
                        "value": "Create3: target already exists"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "5945:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "5945:6:136"
                    },
                    "nativeSrc": "5945:60:136",
                    "nodeType": "YulFunctionCall",
                    "src": "5945:60:136"
                  },
                  "nativeSrc": "5945:60:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "5945:60:136"
                },
                {
                  "nativeSrc": "6014:26:136",
                  "nodeType": "YulAssignment",
                  "src": "6014:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "6026:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "6026:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6037:2:136",
                        "nodeType": "YulLiteral",
                        "src": "6037:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "6022:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "6022:3:136"
                    },
                    "nativeSrc": "6022:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6022:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "6014:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "6014:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_eff5890756d2c5621f001169bb16c941329db031eba2edbb4865370c160b3eae__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "5692:354:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "5843:9:136",
                "nodeType": "YulTypedName",
                "src": "5843:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "5857:4:136",
                "nodeType": "YulTypedName",
                "src": "5857:4:136",
                "type": ""
              }
            ],
            "src": "5692:354:136"
          },
          {
            "body": {
              "nativeSrc": "6225:181:136",
              "nodeType": "YulBlock",
              "src": "6225:181:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "6242:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "6242:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6253:2:136",
                        "nodeType": "YulLiteral",
                        "src": "6253:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6235:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "6235:6:136"
                    },
                    "nativeSrc": "6235:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6235:21:136"
                  },
                  "nativeSrc": "6235:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "6235:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6276:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "6276:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6287:2:136",
                            "nodeType": "YulLiteral",
                            "src": "6287:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6272:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "6272:3:136"
                        },
                        "nativeSrc": "6272:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "6272:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6292:2:136",
                        "nodeType": "YulLiteral",
                        "src": "6292:2:136",
                        "type": "",
                        "value": "31"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6265:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "6265:6:136"
                    },
                    "nativeSrc": "6265:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6265:30:136"
                  },
                  "nativeSrc": "6265:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "6265:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6315:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "6315:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6326:2:136",
                            "nodeType": "YulLiteral",
                            "src": "6326:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6311:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "6311:3:136"
                        },
                        "nativeSrc": "6311:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "6311:18:136"
                      },
                      {
                        "hexValue": "437265617465333a206572726f72206372656174696e6720666163746f7279",
                        "kind": "string",
                        "nativeSrc": "6331:33:136",
                        "nodeType": "YulLiteral",
                        "src": "6331:33:136",
                        "type": "",
                        "value": "Create3: error creating factory"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6304:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "6304:6:136"
                    },
                    "nativeSrc": "6304:61:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6304:61:136"
                  },
                  "nativeSrc": "6304:61:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "6304:61:136"
                },
                {
                  "nativeSrc": "6374:26:136",
                  "nodeType": "YulAssignment",
                  "src": "6374:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "6386:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "6386:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6397:2:136",
                        "nodeType": "YulLiteral",
                        "src": "6397:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "6382:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "6382:3:136"
                    },
                    "nativeSrc": "6382:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6382:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "6374:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "6374:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9c800ce8d486c3397a1a9cc324cfcd264ced53e7b922ccf3390ef85c645102b0__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "6051:355:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "6202:9:136",
                "nodeType": "YulTypedName",
                "src": "6202:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "6216:4:136",
                "nodeType": "YulTypedName",
                "src": "6216:4:136",
                "type": ""
              }
            ],
            "src": "6051:355:136"
          },
          {
            "body": {
              "nativeSrc": "6548:164:136",
              "nodeType": "YulBlock",
              "src": "6548:164:136",
              "statements": [
                {
                  "nativeSrc": "6558:27:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6558:27:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nativeSrc": "6578:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "6578:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nativeSrc": "6572:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "6572:5:136"
                    },
                    "nativeSrc": "6572:13:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6572:13:136"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nativeSrc": "6562:6:136",
                      "nodeType": "YulTypedName",
                      "src": "6562:6:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "6600:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "6600:3:136"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nativeSrc": "6609:6:136",
                            "nodeType": "YulIdentifier",
                            "src": "6609:6:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6617:4:136",
                            "nodeType": "YulLiteral",
                            "src": "6617:4:136",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6605:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "6605:3:136"
                        },
                        "nativeSrc": "6605:17:136",
                        "nodeType": "YulFunctionCall",
                        "src": "6605:17:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "6624:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "6624:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "mcopy",
                      "nativeSrc": "6594:5:136",
                      "nodeType": "YulIdentifier",
                      "src": "6594:5:136"
                    },
                    "nativeSrc": "6594:37:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6594:37:136"
                  },
                  "nativeSrc": "6594:37:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "6594:37:136"
                },
                {
                  "nativeSrc": "6640:26:136",
                  "nodeType": "YulVariableDeclaration",
                  "src": "6640:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nativeSrc": "6654:3:136",
                        "nodeType": "YulIdentifier",
                        "src": "6654:3:136"
                      },
                      {
                        "name": "length",
                        "nativeSrc": "6659:6:136",
                        "nodeType": "YulIdentifier",
                        "src": "6659:6:136"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "6650:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "6650:3:136"
                    },
                    "nativeSrc": "6650:16:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6650:16:136"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nativeSrc": "6644:2:136",
                      "nodeType": "YulTypedName",
                      "src": "6644:2:136",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nativeSrc": "6682:2:136",
                        "nodeType": "YulIdentifier",
                        "src": "6682:2:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6686:1:136",
                        "nodeType": "YulLiteral",
                        "src": "6686:1:136",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6675:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "6675:6:136"
                    },
                    "nativeSrc": "6675:13:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6675:13:136"
                  },
                  "nativeSrc": "6675:13:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "6675:13:136"
                },
                {
                  "nativeSrc": "6697:9:136",
                  "nodeType": "YulAssignment",
                  "src": "6697:9:136",
                  "value": {
                    "name": "_1",
                    "nativeSrc": "6704:2:136",
                    "nodeType": "YulIdentifier",
                    "src": "6704:2:136"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nativeSrc": "6697:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "6697:3:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nativeSrc": "6411:301:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nativeSrc": "6524:3:136",
                "nodeType": "YulTypedName",
                "src": "6524:3:136",
                "type": ""
              },
              {
                "name": "value0",
                "nativeSrc": "6529:6:136",
                "nodeType": "YulTypedName",
                "src": "6529:6:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nativeSrc": "6540:3:136",
                "nodeType": "YulTypedName",
                "src": "6540:3:136",
                "type": ""
              }
            ],
            "src": "6411:301:136"
          },
          {
            "body": {
              "nativeSrc": "6891:180:136",
              "nodeType": "YulBlock",
              "src": "6891:180:136",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "6908:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "6908:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6919:2:136",
                        "nodeType": "YulLiteral",
                        "src": "6919:2:136",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6901:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "6901:6:136"
                    },
                    "nativeSrc": "6901:21:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6901:21:136"
                  },
                  "nativeSrc": "6901:21:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "6901:21:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6942:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "6942:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6953:2:136",
                            "nodeType": "YulLiteral",
                            "src": "6953:2:136",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6938:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "6938:3:136"
                        },
                        "nativeSrc": "6938:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "6938:18:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "6958:2:136",
                        "nodeType": "YulLiteral",
                        "src": "6958:2:136",
                        "type": "",
                        "value": "30"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6931:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "6931:6:136"
                    },
                    "nativeSrc": "6931:30:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6931:30:136"
                  },
                  "nativeSrc": "6931:30:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "6931:30:136"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nativeSrc": "6981:9:136",
                            "nodeType": "YulIdentifier",
                            "src": "6981:9:136"
                          },
                          {
                            "kind": "number",
                            "nativeSrc": "6992:2:136",
                            "nodeType": "YulLiteral",
                            "src": "6992:2:136",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nativeSrc": "6977:3:136",
                          "nodeType": "YulIdentifier",
                          "src": "6977:3:136"
                        },
                        "nativeSrc": "6977:18:136",
                        "nodeType": "YulFunctionCall",
                        "src": "6977:18:136"
                      },
                      {
                        "hexValue": "437265617465333a206572726f72206372656174696e6720746172676574",
                        "kind": "string",
                        "nativeSrc": "6997:32:136",
                        "nodeType": "YulLiteral",
                        "src": "6997:32:136",
                        "type": "",
                        "value": "Create3: error creating target"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nativeSrc": "6970:6:136",
                      "nodeType": "YulIdentifier",
                      "src": "6970:6:136"
                    },
                    "nativeSrc": "6970:60:136",
                    "nodeType": "YulFunctionCall",
                    "src": "6970:60:136"
                  },
                  "nativeSrc": "6970:60:136",
                  "nodeType": "YulExpressionStatement",
                  "src": "6970:60:136"
                },
                {
                  "nativeSrc": "7039:26:136",
                  "nodeType": "YulAssignment",
                  "src": "7039:26:136",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nativeSrc": "7051:9:136",
                        "nodeType": "YulIdentifier",
                        "src": "7051:9:136"
                      },
                      {
                        "kind": "number",
                        "nativeSrc": "7062:2:136",
                        "nodeType": "YulLiteral",
                        "src": "7062:2:136",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nativeSrc": "7047:3:136",
                      "nodeType": "YulIdentifier",
                      "src": "7047:3:136"
                    },
                    "nativeSrc": "7047:18:136",
                    "nodeType": "YulFunctionCall",
                    "src": "7047:18:136"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nativeSrc": "7039:4:136",
                      "nodeType": "YulIdentifier",
                      "src": "7039:4:136"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_1398d0fda5c4dd82767513d52fb4e190bf03bb7a57b33af8f2bf0a3f254cffa0__to_t_string_memory_ptr__fromStack_reversed",
            "nativeSrc": "6717:354:136",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nativeSrc": "6868:9:136",
                "nodeType": "YulTypedName",
                "src": "6868:9:136",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nativeSrc": "6882:4:136",
                "nodeType": "YulTypedName",
                "src": "6882:4:136",
                "type": ""
              }
            ],
            "src": "6717:354:136"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_tuple_t_bytes32(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        let newFreePtr := add(memPtr, and(add(and(add(length, 0x1f), not(31)), 63), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n        mstore(memPtr, length)\n        if gt(add(add(offset, length), 0x20), end) { revert(0, 0) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), length)\n        mstore(add(add(memPtr, length), 0x20), 0)\n        array := memPtr\n    }\n    function abi_decode_tuple_t_bytes_memory_ptrt_bytes32(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let value := 0\n        value := calldataload(add(headStart, 32))\n        value1 := value\n    }\n    function abi_decode_tuple_t_bytes32t_addresst_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2\n    {\n        if slt(sub(dataEnd, headStart), 96) { revert(0, 0) }\n        let value := 0\n        value := calldataload(headStart)\n        value0 := value\n        let value_1 := calldataload(add(headStart, 32))\n        if iszero(eq(value_1, and(value_1, sub(shl(160, 1), 1)))) { revert(0, 0) }\n        value1 := value_1\n        let offset := calldataload(add(headStart, 64))\n        if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n        value2 := abi_decode_bytes(add(headStart, offset), dataEnd)\n    }\n    function abi_encode_tuple_t_contract$_WitnetProxy_$8994__to_t_address_payable__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_stringliteral_a449f037473e66c93f74665b4547dc6279e787cd06aefbab4d74a9c55d42a13f__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"WitnetDeployer: deployment faile\")\n        mstore(add(headStart, 96), \"d\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_address_t_bytes_memory_ptr__to_t_address_t_bytes_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        let length := mload(value1)\n        mstore(add(headStart, 64), length)\n        mcopy(add(headStart, 96), add(value1, 32), length)\n        mstore(add(add(headStart, length), 96), 0)\n        tail := add(add(headStart, and(add(length, 31), not(31))), 96)\n    }\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n        let value := mload(headStart)\n        if iszero(eq(value, iszero(iszero(value)))) { revert(0, 0) }\n        value0 := value\n    }\n    function abi_encode_tuple_t_stringliteral_07010c659982893c2bfaa9066955408f5c67d963251677f65ceecaf6871b6734__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 33)\n        mstore(add(headStart, 64), \"WitnetDeployer: already proxifie\")\n        mstore(add(headStart, 96), \"d\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_packed_t_bytes1_t_address_t_bytes32_t_bytes32__to_t_bytes1_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value3, value2, value1, value0) -> end\n    {\n        mstore(pos, and(value0, shl(248, 255)))\n        mstore(add(pos, 1), and(shl(96, value1), not(0xffffffffffffffffffffffff)))\n        mstore(add(pos, 21), value2)\n        mstore(add(pos, 53), value3)\n        end := add(pos, 85)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9_t_address_t_bytes32_t_bytes32__to_t_string_memory_ptr_t_address_t_bytes32_t_bytes32__nonPadded_inplace_fromStack_reversed(pos, value2, value1, value0) -> end\n    {\n        mstore(pos, shl(248, 255))\n        mstore(add(pos, 1), and(shl(96, value0), not(0xffffffffffffffffffffffff)))\n        mstore(add(pos, 21), value1)\n        mstore(add(pos, 53), value2)\n        end := add(pos, 85)\n    }\n    function abi_encode_tuple_packed_t_stringliteral_4fdc04d28c8d22070e5fd0f23f00bae0b21cc4e5091b5fd7a9cad9babd3668cf_t_address_t_stringliteral_5fe7f977e71dba2ea1a68e21057beebb9be2ac30c6410aa38d4f3fbe41dcffd2__to_t_string_memory_ptr_t_address_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        mstore(pos, shl(242, 13733))\n        mstore(add(pos, 2), and(shl(96, value0), not(0xffffffffffffffffffffffff)))\n        mstore(add(pos, 22), shl(248, 1))\n        end := add(pos, 23)\n    }\n    function abi_encode_tuple_t_stringliteral_eff5890756d2c5621f001169bb16c941329db031eba2edbb4865370c160b3eae__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"Create3: target already exists\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_9c800ce8d486c3397a1a9cc324cfcd264ced53e7b922ccf3390ef85c645102b0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 31)\n        mstore(add(headStart, 64), \"Create3: error creating factory\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        mcopy(pos, add(value0, 0x20), length)\n        let _1 := add(pos, length)\n        mstore(_1, 0)\n        end := _1\n    }\n    function abi_encode_tuple_t_stringliteral_1398d0fda5c4dd82767513d52fb4e190bf03bb7a57b33af8f2bf0a3f254cffa0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"Create3: error creating target\")\n        tail := add(headStart, 96)\n    }\n}",
      "id": 136,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "349:2917:21:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "349:2917:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2112:159;;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;409:32:136;;;391:51;;379:2;364:18;2112:159:21;;;;;;;893:448;;;;;;:::i;:::-;;:::i;2279:982::-;;;;;;:::i;:::-;;:::i;1687:417::-;;;;;;:::i;:::-;;:::i;2112:159::-;2203:7;2235:28;2257:5;2235:21;:28::i;:::-;2228:35;2112:159;-1:-1:-1;;2112:159:21:o;893:448::-;990:17;1037:31;1051:9;1062:5;1037:13;:31::i;:::-;1025:43;;1083:9;-1:-1:-1;;;;;1083:21:21;;1108:1;1083:26;1079:255;;1218:5;1206:9;1200:16;1193:4;1182:9;1178:20;1175:1;1167:57;1154:70;-1:-1:-1;;;;;;1261:23:21;;1253:69;;;;-1:-1:-1;;;1253:69:21;;2813:2:136;1253:69:21;;;2795:21:136;2852:2;2832:18;;;2825:30;2891:34;2871:18;;;2864:62;-1:-1:-1;;;2942:18:136;;;2935:31;2983:19;;1253:69:21;;;;;;;;2279:982;2415:11;2444:18;2465:30;2484:10;2465:18;:30::i;:::-;2444:51;;2510:10;-1:-1:-1;;;;;2510:22:21;;2536:1;2510:27;2506:748;;2593:58;2608:10;2620:30;;;;;;;;:::i;:::-;-1:-1:-1;;2620:30:21;;;;;;;;;;;;;;2593:14;:58::i;:::-;;2739:10;-1:-1:-1;;;;;2719:42:21;;2780:20;2971:10;3069:9;2869:228;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2719:393;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3154:10:21;-1:-1:-1;3127:39:21;;2506:748;3199:43;;-1:-1:-1;;;3199:43:21;;4015:2:136;3199:43:21;;;3997:21:136;4054:2;4034:18;;;4027:30;4093:34;4073:18;;;4066:62;-1:-1:-1;;;4144:18:136;;;4137:31;4185:19;;3199:43:21;3813:397:136;2279:982:21;;;;;;:::o;1687:417::-;2029:20;;;;;;;1891:177;;;-1:-1:-1;;;;;;1891:177:21;;;4426:39:136;1973:4:21;4502:2:136;4498:15;-1:-1:-1;;4494:53:136;4481:11;;;4474:74;4564:12;;;4557:28;;;;4601:12;;;;4594:28;;;;1891:177:21;;;;;;;;;;4638:12:136;;;;1891:177:21;;;1863:220;;;;;;1687:417::o;5013:1163:111:-;2439:24;;;;;;;;;;;-1:-1:-1;;;2439:24:111;;;;;5227:216;;-1:-1:-1;;;;;;5227:216:111;;;4947:26:136;5320:4:111;5010:2:136;5006:15;;;-1:-1:-1;;5002:53:136;;;4989:11;;;4982:74;5072:12;;;5065:28;;;;2429:35:111;5109:12:136;;;;5102:28;;;;5227:216:111;;;;;;;;;;5146:12:136;;;5227:216:111;;5191:275;;;;;;-1:-1:-1;;;5643:457:111;;;5500:28:136;5561:15;;5557:53;;;5544:11;;;5537:74;-1:-1:-1;;;5627:12:136;;;5620:33;5643:457:111;;;;;;;;;5669:12:136;;;;5643:457:111;;;5607:516;;;;;;5013:1163::o;2865:167::-;2961:7;2993:31;3000:5;3007:13;3022:1;3626:17;3710:20;3724:5;3710:13;:20::i;:::-;3698:32;-1:-1:-1;;;;;;3745:21:111;;;:26;3741:72;;3773:40;;-1:-1:-1;;;3773:40:111;;5894:2:136;3773:40:111;;;5876:21:136;5933:2;5913:18;;;5906:30;5972:32;5952:18;;;5945:60;6022:18;;3773:40:111;5692:354:136;3741:72:111;3912:24;;;;;;;;;;;;;-1:-1:-1;;;3912:24:111;;;;;;3853:16;;3912:24;4254:5;;3853:16;4191:69;4179:81;-1:-1:-1;;;;;;4289:22:111;;4281:66;;;;-1:-1:-1;;;4281:66:111;;6253:2:136;4281:66:111;;;6235:21:136;6292:2;6272:18;;;6265:30;6331:33;6311:18;;;6304:61;6382:18;;4281:66:111;6051:355:136;4281:66:111;4409:13;4428:8;-1:-1:-1;;;;;4428:13:111;4449:6;4457:13;4428:43;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4408:63;;;4490:8;:38;;;;-1:-1:-1;;;;;;4502:21:111;;;:26;;4490:38;4482:81;;;;-1:-1:-1;;;4482:81:111;;6919:2:136;4482:81:111;;;6901:21:136;6958:2;6938:18;;;6931:30;6997:32;6977:18;;;6970:60;7047:18;;4482:81:111;6717:354:136;4482:81:111;3650:921;;;3515:1056;;;;;:::o;-1:-1:-1:-;;;;;;;;:::o;14:226:136:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;187:23:136;;14:226;-1:-1:-1;14:226:136:o;453:127::-;514:10;509:3;505:20;502:1;495:31;545:4;542:1;535:15;569:4;566:1;559:15;585:725;627:5;680:3;673:4;665:6;661:17;657:27;647:55;;698:1;695;688:12;647:55;738:6;725:20;768:18;760:6;757:30;754:56;;;790:18;;:::i;:::-;839:2;833:9;931:2;893:17;;-1:-1:-1;;889:31:136;;;922:2;885:40;881:54;869:67;;966:18;951:34;;987:22;;;948:62;945:88;;;1013:18;;:::i;:::-;1049:2;1042:22;1073;;;1114:19;;;1135:4;1110:30;1107:39;-1:-1:-1;1104:59:136;;;1159:1;1156;1149:12;1104:59;1223:6;1216:4;1208:6;1204:17;1197:4;1189:6;1185:17;1172:58;1278:1;1250:19;;;1271:4;1246:30;1239:41;;;;1254:6;585:725;-1:-1:-1;;;585:725:136:o;1315:434::-;1392:6;1400;1453:2;1441:9;1432:7;1428:23;1424:32;1421:52;;;1469:1;1466;1459:12;1421:52;1509:9;1496:23;1542:18;1534:6;1531:30;1528:50;;;1574:1;1571;1564:12;1528:50;1597:49;1638:7;1629:6;1618:9;1614:22;1597:49;:::i;:::-;1587:59;1715:2;1700:18;;;;1687:32;;-1:-1:-1;;;;1315:434:136:o;1754:616::-;1840:6;1848;1856;1909:2;1897:9;1888:7;1884:23;1880:32;1877:52;;;1925:1;1922;1915:12;1877:52;1970:23;;;-1:-1:-1;2069:2:136;2054:18;;2041:32;-1:-1:-1;;;;;2104:33:136;;2092:46;;2082:74;;2152:1;2149;2142:12;2082:74;2175:7;-1:-1:-1;2233:2:136;2218:18;;2205:32;2260:18;2249:30;;2246:50;;;2292:1;2289;2282:12;2246:50;2315:49;2356:7;2347:6;2336:9;2332:22;2315:49;:::i;:::-;2305:59;;;1754:616;;;;;:::o;3013:513::-;3217:1;3213;3208:3;3204:11;3200:19;3192:6;3188:32;3177:9;3170:51;3257:2;3252;3241:9;3237:18;3230:30;3151:4;3289:6;3283:13;3332:6;3327:2;3316:9;3312:18;3305:34;3391:6;3386:2;3378:6;3374:15;3369:2;3358:9;3354:18;3348:50;3447:1;3442:2;3433:6;3422:9;3418:22;3414:31;3407:42;3517:2;3510;3506:7;3501:2;3493:6;3489:15;3485:29;3474:9;3470:45;3466:54;3458:62;;;3013:513;;;;;:::o;3531:277::-;3598:6;3651:2;3639:9;3630:7;3626:23;3622:32;3619:52;;;3667:1;3664;3657:12;3619:52;3699:9;3693:16;3752:5;3745:13;3738:21;3731:5;3728:32;3718:60;;3774:1;3771;3764:12;6411:301;6540:3;6578:6;6572:13;6624:6;6617:4;6609:6;6605:17;6600:3;6594:37;6686:1;6650:16;;6675:13;;;-1:-1:-1;6650:16:136;6411:301;-1:-1:-1;6411:301:136:o",
  "source": "// SPDX-License-Identifier: MIT\r\n\r\npragma solidity >=0.8.0 <0.9.0;\r\n\r\nimport \"./WitnetProxy.sol\";\r\nimport \"../libs/Create3.sol\";\r\n\r\n/// @notice WitnetDeployer contract used both as CREATE2 (EIP-1014) factory for Witnet artifacts, \r\n/// @notice and CREATE3 (EIP-3171) factory for Witnet proxies.\r\n/// @author Guillermo Díaz <guillermo@witnet.io>\r\n\r\ncontract WitnetDeployer {\r\n\r\n    /// @notice Use given `_initCode` and `_salt` to deploy a contract into a deterministic address. \r\n    /// @dev The address of deployed address will be determined by both the `_initCode` and the `_salt`, but not the address\r\n    /// @dev nor the nonce of the caller (i.e. see EIP-1014). \r\n    /// @param _initCode Creation code, including construction logic and input parameters.\r\n    /// @param _salt Arbitrary value to modify resulting address.\r\n    /// @return _deployed Just deployed contract address.\r\n    function deploy(bytes memory _initCode, bytes32 _salt)\r\n        virtual public\r\n        returns (address _deployed)\r\n    {\r\n        _deployed = determineAddr(_initCode, _salt);\r\n        if (_deployed.code.length == 0) {\r\n            assembly {\r\n                _deployed := create2(0, add(_initCode, 0x20), mload(_initCode), _salt)\r\n            }\r\n            require(_deployed != address(0), \"WitnetDeployer: deployment failed\");\r\n        }\r\n    }\r\n\r\n    /// @notice Determine counter-factual address of the contract that would be deployed by the given `_initCode` and a `_salt`.\r\n    /// @param _initCode Creation code, including construction logic and input parameters.\r\n    /// @param _salt Arbitrary value to modify resulting address.\r\n    /// @return Deterministic contract address.\r\n    function determineAddr(bytes memory _initCode, bytes32 _salt)\r\n        virtual public view\r\n        returns (address)\r\n    {\r\n        return address(\r\n            uint160(uint(keccak256(\r\n                abi.encodePacked(\r\n                    bytes1(0xff),\r\n                    address(this),\r\n                    _salt,\r\n                    keccak256(_initCode)\r\n                )\r\n            )))\r\n        );\r\n    }\r\n\r\n    function determineProxyAddr(bytes32 _salt) \r\n        virtual public view\r\n        returns (address)\r\n    {\r\n        return Create3.determineAddr(_salt);\r\n    }\r\n\r\n    function proxify(bytes32 _proxySalt, address _firstImplementation, bytes memory _initData)\r\n        virtual external \r\n        returns (WitnetProxy)\r\n    {\r\n        address _proxyAddr = determineProxyAddr(_proxySalt);\r\n        if (_proxyAddr.code.length == 0) {\r\n            // deploy the WitnetProxy\r\n            Create3.deploy(_proxySalt, type(WitnetProxy).creationCode);\r\n            // settle first implementation address,\r\n            WitnetProxy(payable(_proxyAddr)).upgradeTo(\r\n                _firstImplementation, \r\n                // and initialize it, providing\r\n                abi.encode(\r\n                    // the owner (i.e. the caller of this function)\r\n                    msg.sender,\r\n                    // and some (optional) initialization data\r\n                     _initData\r\n                )\r\n            );\r\n            return WitnetProxy(payable(_proxyAddr));\r\n        } else {\r\n            revert(\"WitnetDeployer: already proxified\");\r\n        }\r\n    }\r\n\r\n}",
  "sourcePath": "C:\\Users\\guill\\github\\guidiaz\\witnet-solidity-bridge\\contracts\\core\\WitnetDeployer.sol",
  "ast": {
    "absolutePath": "project:/contracts/core/WitnetDeployer.sol",
    "exportedSymbols": {
      "Create3": [
        31519
      ],
      "ERC165": [
        616
      ],
      "IERC165": [
        628
      ],
      "Initializable": [
        267
      ],
      "Proxiable": [
        45810
      ],
      "Upgradeable": [
        45930
      ],
      "WitnetDeployer": [
        8396
      ],
      "WitnetProxy": [
        8994
      ]
    },
    "id": 8397,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 8241,
        "literals": [
          "solidity",
          ">=",
          "0.8",
          ".0",
          "<",
          "0.9",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "35:31:21"
      },
      {
        "absolutePath": "project:/contracts/core/WitnetProxy.sol",
        "file": "./WitnetProxy.sol",
        "id": 8242,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 8397,
        "sourceUnit": 8995,
        "src": "70:27:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/libs/Create3.sol",
        "file": "../libs/Create3.sol",
        "id": 8243,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 8397,
        "sourceUnit": 31520,
        "src": "99:29:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "WitnetDeployer",
        "contractDependencies": [
          8994
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 8244,
          "nodeType": "StructuredDocumentation",
          "src": "132:215:21",
          "text": "@notice WitnetDeployer contract used both as CREATE2 (EIP-1014) factory for Witnet artifacts, \n @notice and CREATE3 (EIP-3171) factory for Witnet proxies.\n @author Guillermo Díaz <guillermo@witnet.io>"
        },
        "fullyImplemented": true,
        "id": 8396,
        "linearizedBaseContracts": [
          8396
        ],
        "name": "WitnetDeployer",
        "nameLocation": "358:14:21",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 8279,
              "nodeType": "Block",
              "src": "1014:327:21",
              "statements": [
                {
                  "expression": {
                    "id": 8259,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 8254,
                      "name": "_deployed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8252,
                      "src": "1025:9:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 8256,
                          "name": "_initCode",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8247,
                          "src": "1051:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        {
                          "id": 8257,
                          "name": "_salt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8249,
                          "src": "1062:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "id": 8255,
                        "name": "determineAddr",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8318,
                        "src": "1037:13:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$_t_bytes32_$returns$_t_address_$",
                          "typeString": "function (bytes memory,bytes32) view returns (address)"
                        }
                      },
                      "id": 8258,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1037:31:21",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "1025:43:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 8260,
                  "nodeType": "ExpressionStatement",
                  "src": "1025:43:21"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8265,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "expression": {
                          "id": 8261,
                          "name": "_deployed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8252,
                          "src": "1083:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8262,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "1093:4:21",
                        "memberName": "code",
                        "nodeType": "MemberAccess",
                        "src": "1083:14:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 8263,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1098:6:21",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "1083:21:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 8264,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1108:1:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1083:26:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 8278,
                  "nodeType": "IfStatement",
                  "src": "1079:255:21",
                  "trueBody": {
                    "id": 8277,
                    "nodeType": "Block",
                    "src": "1111:223:21",
                    "statements": [
                      {
                        "AST": {
                          "nativeSrc": "1135:104:21",
                          "nodeType": "YulBlock",
                          "src": "1135:104:21",
                          "statements": [
                            {
                              "nativeSrc": "1154:70:21",
                              "nodeType": "YulAssignment",
                              "src": "1154:70:21",
                              "value": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "1175:1:21",
                                    "nodeType": "YulLiteral",
                                    "src": "1175:1:21",
                                    "type": "",
                                    "value": "0"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_initCode",
                                        "nativeSrc": "1182:9:21",
                                        "nodeType": "YulIdentifier",
                                        "src": "1182:9:21"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "1193:4:21",
                                        "nodeType": "YulLiteral",
                                        "src": "1193:4:21",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "1178:3:21",
                                      "nodeType": "YulIdentifier",
                                      "src": "1178:3:21"
                                    },
                                    "nativeSrc": "1178:20:21",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1178:20:21"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "name": "_initCode",
                                        "nativeSrc": "1206:9:21",
                                        "nodeType": "YulIdentifier",
                                        "src": "1206:9:21"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "1200:5:21",
                                      "nodeType": "YulIdentifier",
                                      "src": "1200:5:21"
                                    },
                                    "nativeSrc": "1200:16:21",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1200:16:21"
                                  },
                                  {
                                    "name": "_salt",
                                    "nativeSrc": "1218:5:21",
                                    "nodeType": "YulIdentifier",
                                    "src": "1218:5:21"
                                  }
                                ],
                                "functionName": {
                                  "name": "create2",
                                  "nativeSrc": "1167:7:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "1167:7:21"
                                },
                                "nativeSrc": "1167:57:21",
                                "nodeType": "YulFunctionCall",
                                "src": "1167:57:21"
                              },
                              "variableNames": [
                                {
                                  "name": "_deployed",
                                  "nativeSrc": "1154:9:21",
                                  "nodeType": "YulIdentifier",
                                  "src": "1154:9:21"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "prague",
                        "externalReferences": [
                          {
                            "declaration": 8252,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1154:9:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8247,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1182:9:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8247,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1206:9:21",
                            "valueSize": 1
                          },
                          {
                            "declaration": 8249,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "1218:5:21",
                            "valueSize": 1
                          }
                        ],
                        "id": 8266,
                        "nodeType": "InlineAssembly",
                        "src": "1126:113:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 8273,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 8268,
                                "name": "_deployed",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8252,
                                "src": "1261:9:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "arguments": [
                                  {
                                    "hexValue": "30",
                                    "id": 8271,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1282:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 8270,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1274:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 8269,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1274:7:21",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 8272,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1274:10:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "1261:23:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "5769746e65744465706c6f7965723a206465706c6f796d656e74206661696c6564",
                              "id": 8274,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1286:35:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a449f037473e66c93f74665b4547dc6279e787cd06aefbab4d74a9c55d42a13f",
                                "typeString": "literal_string \"WitnetDeployer: deployment failed\""
                              },
                              "value": "WitnetDeployer: deployment failed"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_a449f037473e66c93f74665b4547dc6279e787cd06aefbab4d74a9c55d42a13f",
                                "typeString": "literal_string \"WitnetDeployer: deployment failed\""
                              }
                            ],
                            "id": 8267,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "1253:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 8275,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1253:69:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8276,
                        "nodeType": "ExpressionStatement",
                        "src": "1253:69:21"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 8245,
              "nodeType": "StructuredDocumentation",
              "src": "382:505:21",
              "text": "@notice Use given `_initCode` and `_salt` to deploy a contract into a deterministic address. \n @dev The address of deployed address will be determined by both the `_initCode` and the `_salt`, but not the address\n @dev nor the nonce of the caller (i.e. see EIP-1014). \n @param _initCode Creation code, including construction logic and input parameters.\n @param _salt Arbitrary value to modify resulting address.\n @return _deployed Just deployed contract address."
            },
            "functionSelector": "4af63f02",
            "id": 8280,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deploy",
            "nameLocation": "902:6:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8250,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8247,
                  "mutability": "mutable",
                  "name": "_initCode",
                  "nameLocation": "922:9:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 8280,
                  "src": "909:22:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8246,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "909:5:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8249,
                  "mutability": "mutable",
                  "name": "_salt",
                  "nameLocation": "941:5:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 8280,
                  "src": "933:13:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8248,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "933:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "908:39:21"
            },
            "returnParameters": {
              "id": 8253,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8252,
                  "mutability": "mutable",
                  "name": "_deployed",
                  "nameLocation": "998:9:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 8280,
                  "src": "990:17:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8251,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "990:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "989:19:21"
            },
            "scope": 8396,
            "src": "893:448:21",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8317,
              "nodeType": "Block",
              "src": "1810:294:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "hexValue": "30786666",
                                            "id": 8301,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1937:4:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_255_by_1",
                                              "typeString": "int_const 255"
                                            },
                                            "value": "0xff"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_rational_255_by_1",
                                              "typeString": "int_const 255"
                                            }
                                          ],
                                          "id": 8300,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1930:6:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_bytes1_$",
                                            "typeString": "type(bytes1)"
                                          },
                                          "typeName": {
                                            "id": 8299,
                                            "name": "bytes1",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1930:6:21",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 8302,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1930:12:21",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "id": 8305,
                                            "name": "this",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4294967268,
                                            "src": "1973:4:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_WitnetDeployer_$8396",
                                              "typeString": "contract WitnetDeployer"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_WitnetDeployer_$8396",
                                              "typeString": "contract WitnetDeployer"
                                            }
                                          ],
                                          "id": 8304,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "1965:7:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_address_$",
                                            "typeString": "type(address)"
                                          },
                                          "typeName": {
                                            "id": 8303,
                                            "name": "address",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "1965:7:21",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 8306,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1965:13:21",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "id": 8307,
                                        "name": "_salt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8285,
                                        "src": "2001:5:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "id": 8309,
                                            "name": "_initCode",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8283,
                                            "src": "2039:9:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_bytes_memory_ptr",
                                              "typeString": "bytes memory"
                                            }
                                          ],
                                          "id": 8308,
                                          "name": "keccak256",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4294967288,
                                          "src": "2029:9:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                            "typeString": "function (bytes memory) pure returns (bytes32)"
                                          }
                                        },
                                        "id": 8310,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2029:20:21",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes1",
                                          "typeString": "bytes1"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "expression": {
                                        "id": 8297,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967295,
                                        "src": "1891:3:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 8298,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "1895:12:21",
                                      "memberName": "encodePacked",
                                      "nodeType": "MemberAccess",
                                      "src": "1891:16:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 8311,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1891:177:21",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 8296,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967288,
                                  "src": "1863:9:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 8312,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1863:220:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 8295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1858:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 8294,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "1858:4:21",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 8313,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1858:226:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1850:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint160_$",
                            "typeString": "type(uint160)"
                          },
                          "typeName": {
                            "id": 8292,
                            "name": "uint160",
                            "nodeType": "ElementaryTypeName",
                            "src": "1850:7:21",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 8314,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1850:235:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      ],
                      "id": 8291,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1828:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 8290,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1828:7:21",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 8315,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1828:268:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 8289,
                  "id": 8316,
                  "nodeType": "Return",
                  "src": "1821:275:21"
                }
              ]
            },
            "documentation": {
              "id": 8281,
              "nodeType": "StructuredDocumentation",
              "src": "1349:332:21",
              "text": "@notice Determine counter-factual address of the contract that would be deployed by the given `_initCode` and a `_salt`.\n @param _initCode Creation code, including construction logic and input parameters.\n @param _salt Arbitrary value to modify resulting address.\n @return Deterministic contract address."
            },
            "functionSelector": "d3933c29",
            "id": 8318,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "determineAddr",
            "nameLocation": "1696:13:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8283,
                  "mutability": "mutable",
                  "name": "_initCode",
                  "nameLocation": "1723:9:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 8318,
                  "src": "1710:22:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8282,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1710:5:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8285,
                  "mutability": "mutable",
                  "name": "_salt",
                  "nameLocation": "1742:5:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 8318,
                  "src": "1734:13:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8284,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1734:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1709:39:21"
            },
            "returnParameters": {
              "id": 8289,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8288,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8318,
                  "src": "1796:7:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8287,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1796:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1795:9:21"
            },
            "scope": 8396,
            "src": "1687:417:21",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8330,
              "nodeType": "Block",
              "src": "2217:54:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 8327,
                        "name": "_salt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8320,
                        "src": "2257:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "id": 8325,
                        "name": "Create3",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 31519,
                        "src": "2235:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Create3_$31519_$",
                          "typeString": "type(library Create3)"
                        }
                      },
                      "id": 8326,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2243:13:21",
                      "memberName": "determineAddr",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 31518,
                      "src": "2235:21:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 8328,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2235:28:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 8324,
                  "id": 8329,
                  "nodeType": "Return",
                  "src": "2228:35:21"
                }
              ]
            },
            "functionSelector": "4998f038",
            "id": 8331,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "determineProxyAddr",
            "nameLocation": "2121:18:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8321,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8320,
                  "mutability": "mutable",
                  "name": "_salt",
                  "nameLocation": "2148:5:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 8331,
                  "src": "2140:13:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8319,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2140:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2139:15:21"
            },
            "returnParameters": {
              "id": 8324,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8323,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8331,
                  "src": "2203:7:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8322,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2203:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2202:9:21"
            },
            "scope": 8396,
            "src": "2112:159:21",
            "stateMutability": "view",
            "virtual": true,
            "visibility": "public"
          },
          {
            "body": {
              "id": 8394,
              "nodeType": "Block",
              "src": "2433:828:21",
              "statements": [
                {
                  "assignments": [
                    8344
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 8344,
                      "mutability": "mutable",
                      "name": "_proxyAddr",
                      "nameLocation": "2452:10:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 8394,
                      "src": "2444:18:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8343,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2444:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 8348,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 8346,
                        "name": "_proxySalt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 8333,
                        "src": "2484:10:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 8345,
                      "name": "determineProxyAddr",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 8331,
                      "src": "2465:18:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view returns (address)"
                      }
                    },
                    "id": 8347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2465:30:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2444:51:21"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 8353,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "expression": {
                          "id": 8349,
                          "name": "_proxyAddr",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8344,
                          "src": "2510:10:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8350,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2521:4:21",
                        "memberName": "code",
                        "nodeType": "MemberAccess",
                        "src": "2510:15:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 8351,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "2526:6:21",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "2510:22:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 8352,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2536:1:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2510:27:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 8392,
                    "nodeType": "Block",
                    "src": "3184:70:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "hexValue": "5769746e65744465706c6f7965723a20616c72656164792070726f786966696564",
                              "id": 8389,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3206:35:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_07010c659982893c2bfaa9066955408f5c67d963251677f65ceecaf6871b6734",
                                "typeString": "literal_string \"WitnetDeployer: already proxified\""
                              },
                              "value": "WitnetDeployer: already proxified"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_07010c659982893c2bfaa9066955408f5c67d963251677f65ceecaf6871b6734",
                                "typeString": "literal_string \"WitnetDeployer: already proxified\""
                              }
                            ],
                            "id": 8388,
                            "name": "revert",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967277,
                              4294967277
                            ],
                            "referencedDeclaration": 4294967277,
                            "src": "3199:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (string memory) pure"
                            }
                          },
                          "id": 8390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3199:43:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 8391,
                        "nodeType": "ExpressionStatement",
                        "src": "3199:43:21"
                      }
                    ]
                  },
                  "id": 8393,
                  "nodeType": "IfStatement",
                  "src": "2506:748:21",
                  "trueBody": {
                    "id": 8387,
                    "nodeType": "Block",
                    "src": "2539:639:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8357,
                              "name": "_proxySalt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8333,
                              "src": "2608:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 8359,
                                    "name": "WitnetProxy",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8994,
                                    "src": "2625:11:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$8994_$",
                                      "typeString": "type(contract WitnetProxy)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$8994_$",
                                      "typeString": "type(contract WitnetProxy)"
                                    }
                                  ],
                                  "id": 8358,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967269,
                                  "src": "2620:4:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 8360,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2620:17:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_WitnetProxy_$8994",
                                  "typeString": "type(contract WitnetProxy)"
                                }
                              },
                              "id": 8361,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberLocation": "2638:12:21",
                              "memberName": "creationCode",
                              "nodeType": "MemberAccess",
                              "src": "2620:30:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "id": 8354,
                              "name": "Create3",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 31519,
                              "src": "2593:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Create3_$31519_$",
                                "typeString": "type(library Create3)"
                              }
                            },
                            "id": 8356,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2601:6:21",
                            "memberName": "deploy",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 31400,
                            "src": "2593:14:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$_t_address_$",
                              "typeString": "function (bytes32,bytes memory) returns (address)"
                            }
                          },
                          "id": 8362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2593:58:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 8363,
                        "nodeType": "ExpressionStatement",
                        "src": "2593:58:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 8371,
                              "name": "_firstImplementation",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8335,
                              "src": "2780:20:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "arguments": [
                                {
                                  "expression": {
                                    "id": 8374,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4294967281,
                                    "src": "2971:3:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 8375,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberLocation": "2975:6:21",
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "src": "2971:10:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 8376,
                                  "name": "_initData",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8337,
                                  "src": "3069:9:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "id": 8372,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967295,
                                  "src": "2869:3:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 8373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberLocation": "2873:6:21",
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "src": "2869:10:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 8377,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2869:228:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 8367,
                                      "name": "_proxyAddr",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8344,
                                      "src": "2739:10:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 8366,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2731:8:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_payable_$",
                                      "typeString": "type(address payable)"
                                    },
                                    "typeName": {
                                      "id": 8365,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2731:8:21",
                                      "stateMutability": "payable",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 8368,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2731:19:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                ],
                                "id": 8364,
                                "name": "WitnetProxy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8994,
                                "src": "2719:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$8994_$",
                                  "typeString": "type(contract WitnetProxy)"
                                }
                              },
                              "id": 8369,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2719:32:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_WitnetProxy_$8994",
                                "typeString": "contract WitnetProxy"
                              }
                            },
                            "id": 8370,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "2752:9:21",
                            "memberName": "upgradeTo",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 8984,
                            "src": "2719:42:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (address,bytes memory) external returns (bool)"
                            }
                          },
                          "id": 8378,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2719:393:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 8379,
                        "nodeType": "ExpressionStatement",
                        "src": "2719:393:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 8383,
                                  "name": "_proxyAddr",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8344,
                                  "src": "3154:10:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 8382,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3146:8:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_payable_$",
                                  "typeString": "type(address payable)"
                                },
                                "typeName": {
                                  "id": 8381,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3146:8:21",
                                  "stateMutability": "payable",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 8384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3146:19:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 8380,
                            "name": "WitnetProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8994,
                            "src": "3134:11:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_WitnetProxy_$8994_$",
                              "typeString": "type(contract WitnetProxy)"
                            }
                          },
                          "id": 8385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3134:32:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_WitnetProxy_$8994",
                            "typeString": "contract WitnetProxy"
                          }
                        },
                        "functionReturnParameters": 8342,
                        "id": 8386,
                        "nodeType": "Return",
                        "src": "3127:39:21"
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "5ba489e7",
            "id": 8395,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "proxify",
            "nameLocation": "2288:7:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 8338,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8333,
                  "mutability": "mutable",
                  "name": "_proxySalt",
                  "nameLocation": "2304:10:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 8395,
                  "src": "2296:18:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 8332,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2296:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8335,
                  "mutability": "mutable",
                  "name": "_firstImplementation",
                  "nameLocation": "2324:20:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 8395,
                  "src": "2316:28:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8334,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2316:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 8337,
                  "mutability": "mutable",
                  "name": "_initData",
                  "nameLocation": "2359:9:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 8395,
                  "src": "2346:22:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 8336,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2346:5:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2295:74:21"
            },
            "returnParameters": {
              "id": 8342,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 8341,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 8395,
                  "src": "2415:11:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_WitnetProxy_$8994",
                    "typeString": "contract WitnetProxy"
                  },
                  "typeName": {
                    "id": 8340,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 8339,
                      "name": "WitnetProxy",
                      "nameLocations": [
                        "2415:11:21"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 8994,
                      "src": "2415:11:21"
                    },
                    "referencedDeclaration": 8994,
                    "src": "2415:11:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_WitnetProxy_$8994",
                      "typeString": "contract WitnetProxy"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2414:13:21"
            },
            "scope": 8396,
            "src": "2279:982:21",
            "stateMutability": "nonpayable",
            "virtual": true,
            "visibility": "external"
          }
        ],
        "scope": 8397,
        "src": "349:2917:21",
        "usedErrors": [],
        "usedEvents": []
      }
    ],
    "src": "35:3231:21"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.30+commit.73712a01.Emscripten.clang"
  },
  "networks": {
    "1": {
      "events": {},
      "links": {},
      "address": "0x03232aBE800D1638B30432FeEF300581De323a4E"
    },
    "1285": {
      "events": {},
      "links": {},
      "address": "0x03232aBE800D1638B30432FeEF300581De323a4E"
    },
    "1287": {
      "events": {},
      "links": {},
      "address": "0x03232aBE800D1638B30432FeEF300581De323a4E"
    },
    "4801": {
      "events": {},
      "links": {},
      "address": "0x03232aBE800D1638B30432FeEF300581De323a4E"
    },
    "5777": {
      "events": {},
      "links": {},
      "address": "0x0CFCA2cE0472e6cCE2ab82c1E95A207794E819f3",
      "transactionHash": "0x1b0f05d3cb57a3102b160026ec4e3af88f6dd17d263207d70b1c8f6ecca03ba5"
    },
    "84532": {
      "events": {},
      "links": {},
      "address": "0x03232aBE800D1638B30432FeEF300581De323a4E"
    },
    "11142220": {
      "events": {},
      "links": {},
      "address": "0x03232aBE800D1638B30432FeEF300581De323a4E",
      "transactionHash": "0x7f1f90f325c7a5c338684672f469d12d405ff3ffb239eda98c82081dd2071abb"
    },
    "11155111": {
      "events": {},
      "links": {},
      "address": "0x03232aBE800D1638B30432FeEF300581De323a4E"
    },
    "11155420": {
      "events": {},
      "links": {},
      "address": "0x03232aBE800D1638B30432FeEF300581De323a4E"
    }
  },
  "schemaVersion": "3.4.16",
  "updatedAt": "2025-10-15T14:34:45.452Z",
  "devdoc": {
    "author": "Guillermo Díaz <guillermo@witnet.io>",
    "kind": "dev",
    "methods": {
      "deploy(bytes,bytes32)": {
        "details": "The address of deployed address will be determined by both the `_initCode` and the `_salt`, but not the addressnor the nonce of the caller (i.e. see EIP-1014). ",
        "params": {
          "_initCode": "Creation code, including construction logic and input parameters.",
          "_salt": "Arbitrary value to modify resulting address."
        },
        "returns": {
          "_deployed": "Just deployed contract address."
        }
      },
      "determineAddr(bytes,bytes32)": {
        "params": {
          "_initCode": "Creation code, including construction logic and input parameters.",
          "_salt": "Arbitrary value to modify resulting address."
        },
        "returns": {
          "_0": "Deterministic contract address."
        }
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "deploy(bytes,bytes32)": {
        "notice": "Use given `_initCode` and `_salt` to deploy a contract into a deterministic address. "
      },
      "determineAddr(bytes,bytes32)": {
        "notice": "Determine counter-factual address of the contract that would be deployed by the given `_initCode` and a `_salt`."
      }
    },
    "notice": "WitnetDeployer contract used both as CREATE2 (EIP-1014) factory for Witnet artifacts, and CREATE3 (EIP-3171) factory for Witnet proxies.",
    "version": 1
  }
}