{
  "contractName": "StateRent",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "contract_address",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "new_maintainer",
          "type": "address"
        }
      ],
      "name": "TransferredMaintainer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "newContractExtraBytes",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "storageDepositPerByte",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "contract_address",
          "type": "address"
        }
      ],
      "name": "maintainerOf",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "developerDeposit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "deploymentFee",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "contract_address",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "new_maintainer",
          "type": "address"
        }
      ],
      "name": "transferMaintainer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.0+commit.c7dfd78e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"contract_address\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"new_maintainer\",\"type\":\"address\"}],\"name\":\"TransferredMaintainer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"deploymentFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"developerDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_address\",\"type\":\"address\"}],\"name\":\"maintainerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"newContractExtraBytes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"storageDepositPerByte\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"contract_address\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"new_maintainer\",\"type\":\"address\"}],\"name\":\"transferMaintainer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"deploymentFee()\":{\"details\":\"Returns the const of DeploymentFee.\"},\"developerDeposit()\":{\"details\":\"Returns the const of DeveloperDeposit.\"},\"maintainerOf(address)\":{\"details\":\"Returns the maintainer of the contract.\"},\"newContractExtraBytes()\":{\"details\":\"Returns the const of NewContractExtraBytes.\"},\"storageDepositPerByte()\":{\"details\":\"Returns the const of StorageDepositPerByte.\"},\"transferMaintainer(address,address)\":{\"details\":\"Transfer the maintainer of the contract. Returns a boolean value indicating whether the operation succeeded.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/state_rent/StateRent.sol\":\"StateRent\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/state_rent/IStateRent.sol\":{\"keccak256\":\"0x4090f835c79e9b7018a8fe11686052ece8b8cc019655f2e51e66312b4082036d\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://38118d2291be8475d409d5aa139b64565e93b011b6e5978af54aad71dd63ae95\",\"dweb:/ipfs/QmVrSCDMoRvteZgZXb5uuDJdR5UquSNJnqqHX8pAm32r7i\"]},\"/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/state_rent/StateRent.sol\":{\"keccak256\":\"0xcf1a2e63fa8e8eb7f3a81943314c8e9507e6a56960c8c2f153eda08bbce0f111\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f25c214c5f424336eca67f79612cb48a478339807d22d314911ba3216e07b4b6\",\"dweb:/ipfs/QmaK9qP9R61X5wi1Mt9KMewnNf5LkDfx9eSi9rFk7E7Uei\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50610d69806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806306ad13551461006757806368a18855146100975780636e043998146100b5578063a23e8b82146100d3578063cfbd33d7146100f1578063f2cff57f14610121575b600080fd5b610081600480360381019061007c919061097a565b61013f565b60405161008e9190610b72565b60405180910390f35b61009f61026a565b6040516100ac9190610c1f565b60405180910390f35b6100bd610388565b6040516100ca9190610c1f565b60405180910390f35b6100db6104a6565b6040516100e89190610c1f565b60405180910390f35b61010b600480360381019061010691906109cc565b6105c4565b6040516101189190610bc4565b60405180910390f35b61012961081d565b6040516101369190610c1f565b60405180910390f35b600080600061040273ffffffffffffffffffffffffffffffffffffffff168460405160240161016e9190610b72565b6040516020818303038152906040527f06ad1355000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516101f89190610b5b565b600060405180830381855afa9150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5091509150600082141561024d573d60208201fd5b8080602001905181019061026191906109a3565b92505050919050565b600080600061040273ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f68a18855000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516103189190610b5b565b600060405180830381855afa9150503d8060008114610353576040519150601f19603f3d011682016040523d82523d6000602084013e610358565b606091505b5091509150600082141561036d573d60208201fd5b808060200190518101906103819190610a08565b9250505090565b600080600061040273ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f6e043998000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516104369190610b5b565b600060405180830381855afa9150503d8060008114610471576040519150601f19603f3d011682016040523d82523d6000602084013e610476565b606091505b5091509150600082141561048b573d60208201fd5b8080602001905181019061049f9190610a08565b9250505090565b600080600061040273ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527fa23e8b82000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516105549190610b5b565b600060405180830381855afa9150503d806000811461058f576040519150601f19603f3d011682016040523d82523d6000602084013e610594565b606091505b509150915060008214156105a9573d60208201fd5b808060200190518101906105bd9190610a08565b9250505090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062c90610bff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069c90610bdf565b60405180910390fd5b60008061040273ffffffffffffffffffffffffffffffffffffffff163386866040516024016106d693929190610b8d565b6040516020818303038152906040527fee0d2e12000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516107609190610b5b565b6000604051808303816000865af19150503d806000811461079d576040519150601f19603f3d011682016040523d82523d6000602084013e6107a2565b606091505b509150915060008214156107b7573d60208201fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8cee443d7a0c7dbd8a490dab604d0ed84f4138ba66b3dce2f78ed58bb63f56b760405160405180910390a360019250505092915050565b600080600061040273ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ff2cff57f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516108cb9190610b5b565b600060405180830381855afa9150503d8060008114610906576040519150601f19603f3d011682016040523d82523d6000602084013e61090b565b606091505b50915091506000821415610920573d60208201fd5b808060200190518101906109349190610a08565b9250505090565b60008135905061094a81610cee565b92915050565b60008151905061095f81610d05565b92915050565b60008151905061097481610d1c565b92915050565b60006020828403121561098c57600080fd5b600061099a8482850161093b565b91505092915050565b6000602082840312156109b557600080fd5b60006109c384828501610950565b91505092915050565b600080604083850312156109df57600080fd5b60006109ed8582860161093b565b92505060206109fe8582860161093b565b9150509250929050565b600060208284031215610a1a57600080fd5b6000610a2884828501610965565b91505092915050565b610a3a81610c61565b82525050565b610a4981610c85565b82525050565b6000610a5a82610c3a565b610a648185610c45565b9350610a74818560208601610cbb565b80840191505092915050565b6000610a8d603183610c50565b91507f537461746552656e743a20746865206e65775f6d61696e7461696e657220697360008301527f20746865207a65726f20616464726573730000000000000000000000000000006020830152604082019050919050565b6000610af3603383610c50565b91507f537461746552656e743a2074686520636f6e74726163745f616464726573732060008301527f697320746865207a65726f2061646472657373000000000000000000000000006020830152604082019050919050565b610b5581610cb1565b82525050565b6000610b678284610a4f565b915081905092915050565b6000602082019050610b876000830184610a31565b92915050565b6000606082019050610ba26000830186610a31565b610baf6020830185610a31565b610bbc6040830184610a31565b949350505050565b6000602082019050610bd96000830184610a40565b92915050565b60006020820190508181036000830152610bf881610a80565b9050919050565b60006020820190508181036000830152610c1881610ae6565b9050919050565b6000602082019050610c346000830184610b4c565b92915050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000610c6c82610c91565b9050919050565b6000610c7e82610c91565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610cd9578082015181840152602081019050610cbe565b83811115610ce8576000848401525b50505050565b610cf781610c61565b8114610d0257600080fd5b50565b610d0e81610c73565b8114610d1957600080fd5b50565b610d2581610cb1565b8114610d3057600080fd5b5056fea2646970667358221220da49937d105ea88995a72b3faebeba66eb1fcc20b1c5305080492f34af698b0764736f6c63430008000033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c806306ad13551461006757806368a18855146100975780636e043998146100b5578063a23e8b82146100d3578063cfbd33d7146100f1578063f2cff57f14610121575b600080fd5b610081600480360381019061007c919061097a565b61013f565b60405161008e9190610b72565b60405180910390f35b61009f61026a565b6040516100ac9190610c1f565b60405180910390f35b6100bd610388565b6040516100ca9190610c1f565b60405180910390f35b6100db6104a6565b6040516100e89190610c1f565b60405180910390f35b61010b600480360381019061010691906109cc565b6105c4565b6040516101189190610bc4565b60405180910390f35b61012961081d565b6040516101369190610c1f565b60405180910390f35b600080600061040273ffffffffffffffffffffffffffffffffffffffff168460405160240161016e9190610b72565b6040516020818303038152906040527f06ad1355000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516101f89190610b5b565b600060405180830381855afa9150503d8060008114610233576040519150601f19603f3d011682016040523d82523d6000602084013e610238565b606091505b5091509150600082141561024d573d60208201fd5b8080602001905181019061026191906109a3565b92505050919050565b600080600061040273ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f68a18855000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516103189190610b5b565b600060405180830381855afa9150503d8060008114610353576040519150601f19603f3d011682016040523d82523d6000602084013e610358565b606091505b5091509150600082141561036d573d60208201fd5b808060200190518101906103819190610a08565b9250505090565b600080600061040273ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527f6e043998000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516104369190610b5b565b600060405180830381855afa9150503d8060008114610471576040519150601f19603f3d011682016040523d82523d6000602084013e610476565b606091505b5091509150600082141561048b573d60208201fd5b8080602001905181019061049f9190610a08565b9250505090565b600080600061040273ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527fa23e8b82000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516105549190610b5b565b600060405180830381855afa9150503d806000811461058f576040519150601f19603f3d011682016040523d82523d6000602084013e610594565b606091505b509150915060008214156105a9573d60208201fd5b808060200190518101906105bd9190610a08565b9250505090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610635576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062c90610bff565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156106a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069c90610bdf565b60405180910390fd5b60008061040273ffffffffffffffffffffffffffffffffffffffff163386866040516024016106d693929190610b8d565b6040516020818303038152906040527fee0d2e12000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516107609190610b5b565b6000604051808303816000865af19150503d806000811461079d576040519150601f19603f3d011682016040523d82523d6000602084013e6107a2565b606091505b509150915060008214156107b7573d60208201fd5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8cee443d7a0c7dbd8a490dab604d0ed84f4138ba66b3dce2f78ed58bb63f56b760405160405180910390a360019250505092915050565b600080600061040273ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ff2cff57f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516108cb9190610b5b565b600060405180830381855afa9150503d8060008114610906576040519150601f19603f3d011682016040523d82523d6000602084013e61090b565b606091505b50915091506000821415610920573d60208201fd5b808060200190518101906109349190610a08565b9250505090565b60008135905061094a81610cee565b92915050565b60008151905061095f81610d05565b92915050565b60008151905061097481610d1c565b92915050565b60006020828403121561098c57600080fd5b600061099a8482850161093b565b91505092915050565b6000602082840312156109b557600080fd5b60006109c384828501610950565b91505092915050565b600080604083850312156109df57600080fd5b60006109ed8582860161093b565b92505060206109fe8582860161093b565b9150509250929050565b600060208284031215610a1a57600080fd5b6000610a2884828501610965565b91505092915050565b610a3a81610c61565b82525050565b610a4981610c85565b82525050565b6000610a5a82610c3a565b610a648185610c45565b9350610a74818560208601610cbb565b80840191505092915050565b6000610a8d603183610c50565b91507f537461746552656e743a20746865206e65775f6d61696e7461696e657220697360008301527f20746865207a65726f20616464726573730000000000000000000000000000006020830152604082019050919050565b6000610af3603383610c50565b91507f537461746552656e743a2074686520636f6e74726163745f616464726573732060008301527f697320746865207a65726f2061646472657373000000000000000000000000006020830152604082019050919050565b610b5581610cb1565b82525050565b6000610b678284610a4f565b915081905092915050565b6000602082019050610b876000830184610a31565b92915050565b6000606082019050610ba26000830186610a31565b610baf6020830185610a31565b610bbc6040830184610a31565b949350505050565b6000602082019050610bd96000830184610a40565b92915050565b60006020820190508181036000830152610bf881610a80565b9050919050565b60006020820190508181036000830152610c1881610ae6565b9050919050565b6000602082019050610c346000830184610b4c565b92915050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000610c6c82610c91565b9050919050565b6000610c7e82610c91565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015610cd9578082015181840152602081019050610cbe565b83811115610ce8576000848401525b50505050565b610cf781610c61565b8114610d0257600080fd5b50565b610d0e81610c73565b8114610d1957600080fd5b50565b610d2581610cb1565b8114610d3057600080fd5b5056fea2646970667358221220da49937d105ea88995a72b3faebeba66eb1fcc20b1c5305080492f34af698b0764736f6c63430008000033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:7173:20",
        "statements": [
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "59:87:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "69:29:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "91:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "78:12:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "78:20:20"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "69:5:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "134:5:20"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "107:26:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "107:33:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "107:33:20"
                }
              ]
            },
            "name": "abi_decode_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "37:6:20",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "45:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "53:5:20",
                "type": ""
              }
            ],
            "src": "7:139:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "223:88:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "233:22:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "248:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "242:5:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "242:13:20"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "233:5:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "299:5:20"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address_payable",
                      "nodeType": "YulIdentifier",
                      "src": "264:34:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "264:41:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "264:41:20"
                }
              ]
            },
            "name": "abi_decode_t_address_payable_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "201:6:20",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "209:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "217:5:20",
                "type": ""
              }
            ],
            "src": "152:159:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "380:80:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "390:22:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "405:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "399:5:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "399:13:20"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "390:5:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "448:5:20"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "421:26:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "421:33:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "421:33:20"
                }
              ]
            },
            "name": "abi_decode_t_uint256_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "358:6:20",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "366:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "374:5:20",
                "type": ""
              }
            ],
            "src": "317:143:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "532:196:20",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "578:16:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "587:1:20",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "590:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "580:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "580:12:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "580:12:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "553:7:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "562:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "549:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "549:23:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "574:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "545:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "545:32:20"
                  },
                  "nodeType": "YulIf",
                  "src": "542:2:20"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "604:117:20",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "619:15:20",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "633:1:20",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "623:6:20",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "648:63:20",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "683:9:20"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "694:6:20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "679:3:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "679:22:20"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "703:7:20"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "658:20:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "658:53:20"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "648:6:20"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "502:9:20",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "513:7:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "525:6:20",
                "type": ""
              }
            ],
            "src": "466:262:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "819:215:20",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "865:16:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "874:1:20",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "877:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "867:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "867:12:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "867:12:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "840:7:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "849:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "836:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "836:23:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "861:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "832:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "832:32:20"
                  },
                  "nodeType": "YulIf",
                  "src": "829:2:20"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "891:136:20",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "906:15:20",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "920:1:20",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "910:6:20",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "935:82:20",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "989:9:20"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1000:6:20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "985:3:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "985:22:20"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1009:7:20"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address_payable_fromMemory",
                          "nodeType": "YulIdentifier",
                          "src": "945:39:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "945:72:20"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "935:6:20"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_payable_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "789:9:20",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "800:7:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "812:6:20",
                "type": ""
              }
            ],
            "src": "734:300:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1123:324:20",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1169:16:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1178:1:20",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1181:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1171:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1171:12:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1171:12:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1144:7:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1153:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1140:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1140:23:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1165:2:20",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1136:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1136:32:20"
                  },
                  "nodeType": "YulIf",
                  "src": "1133:2:20"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "1195:117:20",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1210:15:20",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1224:1:20",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "1214:6:20",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1239:63:20",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1274:9:20"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1285:6:20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1270:3:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1270:22:20"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1294:7:20"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "1249:20:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1249:53:20"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "1239:6:20"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "1322:118:20",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1337:16:20",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1351:2:20",
                        "type": "",
                        "value": "32"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "1341:6:20",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1367:63:20",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1402:9:20"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1413:6:20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1398:3:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1398:22:20"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1422:7:20"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "1377:20:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1377:53:20"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "1367:6:20"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1085:9:20",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1096:7:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1108:6:20",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "1116:6:20",
                "type": ""
              }
            ],
            "src": "1040:407:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1530:207:20",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1576:16:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1585:1:20",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1588:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1578:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1578:12:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1578:12:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1551:7:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1560:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1547:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1547:23:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1572:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1543:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1543:32:20"
                  },
                  "nodeType": "YulIf",
                  "src": "1540:2:20"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "1602:128:20",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1617:15:20",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1631:1:20",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "1621:6:20",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1646:74:20",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1692:9:20"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1703:6:20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1688:3:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1688:22:20"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1712:7:20"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_uint256_fromMemory",
                          "nodeType": "YulIdentifier",
                          "src": "1656:31:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1656:64:20"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "1646:6:20"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1500:9:20",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1511:7:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1523:6:20",
                "type": ""
              }
            ],
            "src": "1453:284:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1808:53:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "1825:3:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "1848:5:20"
                          }
                        ],
                        "functionName": {
                          "name": "cleanup_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "1830:17:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1830:24:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1818:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1818:37:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1818:37:20"
                }
              ]
            },
            "name": "abi_encode_t_address_to_t_address_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1796:5:20",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "1803:3:20",
                "type": ""
              }
            ],
            "src": "1743:118:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1926:50:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "1943:3:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "1963:5:20"
                          }
                        ],
                        "functionName": {
                          "name": "cleanup_t_bool",
                          "nodeType": "YulIdentifier",
                          "src": "1948:14:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1948:21:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1936:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1936:34:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1936:34:20"
                }
              ]
            },
            "name": "abi_encode_t_bool_to_t_bool_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1914:5:20",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "1921:3:20",
                "type": ""
              }
            ],
            "src": "1867:109:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2090:265:20",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2100:52:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "2146:5:20"
                      }
                    ],
                    "functionName": {
                      "name": "array_length_t_bytes_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "2114:31:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2114:38:20"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "2104:6:20",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2161:95:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "2244:3:20"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2249:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "2168:75:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2168:88:20"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "2161:3:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "2291:5:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2298:4:20",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2287:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2287:16:20"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "2305:3:20"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2310:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "2265:21:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2265:52:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2265:52:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2326:23:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "2337:3:20"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "2342:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2333:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2333:16:20"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "2326:3:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "2071:5:20",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "2078:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "2086:3:20",
                "type": ""
              }
            ],
            "src": "1982:373:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2507:235:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2517:74:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "2583:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2588:2:20",
                        "type": "",
                        "value": "49"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "2524:58:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2524:67:20"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "2517:3:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "2612:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2617:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2608:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2608:11:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "2621:34:20",
                        "type": "",
                        "value": "StateRent: the new_maintainer is"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2601:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2601:55:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2601:55:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "2677:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2682:2:20",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2673:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2673:12:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "2687:19:20",
                        "type": "",
                        "value": " the zero address"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2666:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2666:41:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2666:41:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2717:19:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "2728:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2733:2:20",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "2724:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2724:12:20"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "2717:3:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_2f15ee5b66fda5a6fe58bc59ea2e40dbd490974800ee8b88b65bff2b15710029_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "2495:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "2503:3:20",
                "type": ""
              }
            ],
            "src": "2361:381:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2894:237:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2904:74:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "2970:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2975:2:20",
                        "type": "",
                        "value": "51"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "2911:58:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2911:67:20"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "2904:3:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "2999:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3004:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2995:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2995:11:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "3008:34:20",
                        "type": "",
                        "value": "StateRent: the contract_address "
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2988:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2988:55:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2988:55:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "3064:3:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3069:2:20",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3060:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3060:12:20"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "3074:21:20",
                        "type": "",
                        "value": "is the zero address"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3053:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3053:43:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3053:43:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3106:19:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3117:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3122:2:20",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3113:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3113:12:20"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "3106:3:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_f478f172e5af71333c41ab3f363c53929becde4da96e89c5244cca13d187db33_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "2882:3:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "2890:3:20",
                "type": ""
              }
            ],
            "src": "2748:383:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3202:53:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3219:3:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "3242:5:20"
                          }
                        ],
                        "functionName": {
                          "name": "cleanup_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "3224:17:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3224:24:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "3212:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3212:37:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3212:37:20"
                }
              ]
            },
            "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "3190:5:20",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "3197:3:20",
                "type": ""
              }
            ],
            "src": "3137:118:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3395:137:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "3406:100:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "3493:6:20"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "3502:3:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "3413:79:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3413:93:20"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "3406:3:20"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3516:10:20",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "3523:3:20"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "3516:3:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_bytes_memory_ptr__to_t_bytes_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "3374:3:20",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3380:6:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "3391:3:20",
                "type": ""
              }
            ],
            "src": "3261:271:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3636:124:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "3646:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3658:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3669:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3654:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3654:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "3646:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "3726:6:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3739:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3750:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3735:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3735:17:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_address_to_t_address_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "3682:43:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3682:71:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3682:71:20"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3608:9:20",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3620:6:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3631:4:20",
                "type": ""
              }
            ],
            "src": "3538:222:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3920:288:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "3930:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3942:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3953:2:20",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "3938:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3938:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "3930:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "4010:6:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4023:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4034:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4019:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4019:17:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_address_to_t_address_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "3966:43:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3966:71:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3966:71:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "4091:6:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4104:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4115:2:20",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4100:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4100:18:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_address_to_t_address_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "4047:43:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4047:72:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4047:72:20"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "4173:6:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4186:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4197:2:20",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4182:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4182:18:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_address_to_t_address_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "4129:43:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4129:72:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4129:72:20"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3876:9:20",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "3888:6:20",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3896:6:20",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3904:6:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "3915:4:20",
                "type": ""
              }
            ],
            "src": "3766:442:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4306:118:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4316:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4328:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4339:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4324:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4324:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4316:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "4390:6:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4403:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4414:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4399:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4399:17:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_bool_to_t_bool_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "4352:37:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4352:65:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4352:65:20"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4278:9:20",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4290:6:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "4301:4:20",
                "type": ""
              }
            ],
            "src": "4214:210:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4601:248:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4611:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4623:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4634:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4619:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4619:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4611:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4658:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4669:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4654:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4654:17:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "4677:4:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4683:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4673:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4673:20:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4647:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4647:47:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4647:47:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4703:139:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "4837:4:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_2f15ee5b66fda5a6fe58bc59ea2e40dbd490974800ee8b88b65bff2b15710029_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "4711:124:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4711:131:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "4703:4:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_2f15ee5b66fda5a6fe58bc59ea2e40dbd490974800ee8b88b65bff2b15710029__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4581:9:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "4596:4:20",
                "type": ""
              }
            ],
            "src": "4430:419:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5026:248:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5036:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5048:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5059:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5044:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5044:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5036:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5083:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5094:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5079:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5079:17:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "5102:4:20"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5108:9:20"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5098:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5098:20:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5072:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5072:47:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5072:47:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5128:139:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "5262:4:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_f478f172e5af71333c41ab3f363c53929becde4da96e89c5244cca13d187db33_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "5136:124:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5136:131:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5128:4:20"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_f478f172e5af71333c41ab3f363c53929becde4da96e89c5244cca13d187db33__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5006:9:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5021:4:20",
                "type": ""
              }
            ],
            "src": "4855:419:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5378:124:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5388:26:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5400:9:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5411:2:20",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5396:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5396:18:20"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "5388:4:20"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "5468:6:20"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5481:9:20"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5492:1:20",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5477:3:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5477:17:20"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "5424:43:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5424:71:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5424:71:20"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5350:9:20",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5362:6:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "5373:4:20",
                "type": ""
              }
            ],
            "src": "5280:222:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5566:40:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5577:22:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "5593:5:20"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "5587:5:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5587:12:20"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "5577:6:20"
                    }
                  ]
                }
              ]
            },
            "name": "array_length_t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "5549:5:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "5559:6:20",
                "type": ""
              }
            ],
            "src": "5508:98:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5725:34:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5735:18:20",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "5750:3:20"
                  },
                  "variableNames": [
                    {
                      "name": "updated_pos",
                      "nodeType": "YulIdentifier",
                      "src": "5735:11:20"
                    }
                  ]
                }
              ]
            },
            "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "5697:3:20",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "5702:6:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "updated_pos",
                "nodeType": "YulTypedName",
                "src": "5713:11:20",
                "type": ""
              }
            ],
            "src": "5612:147:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5861:73:20",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "5878:3:20"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "5883:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5871:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5871:19:20"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5871:19:20"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5899:29:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "5918:3:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5923:4:20",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "5914:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5914:14:20"
                  },
                  "variableNames": [
                    {
                      "name": "updated_pos",
                      "nodeType": "YulIdentifier",
                      "src": "5899:11:20"
                    }
                  ]
                }
              ]
            },
            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "5833:3:20",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "5838:6:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "updated_pos",
                "nodeType": "YulTypedName",
                "src": "5849:11:20",
                "type": ""
              }
            ],
            "src": "5765:169:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5985:51:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "5995:35:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "6024:5:20"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint160",
                      "nodeType": "YulIdentifier",
                      "src": "6006:17:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6006:24:20"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "5995:7:20"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "5967:5:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "5977:7:20",
                "type": ""
              }
            ],
            "src": "5940:96:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6095:51:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "6105:35:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "6134:5:20"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint160",
                      "nodeType": "YulIdentifier",
                      "src": "6116:17:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6116:24:20"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "6105:7:20"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_address_payable",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "6077:5:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "6087:7:20",
                "type": ""
              }
            ],
            "src": "6042:104:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6194:48:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "6204:32:20",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "6229:5:20"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "6222:6:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6222:13:20"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "6215:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6215:21:20"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "6204:7:20"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "6176:5:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "6186:7:20",
                "type": ""
              }
            ],
            "src": "6152:90:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6293:81:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "6303:65:20",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "6318:5:20"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6325:42:20",
                        "type": "",
                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "6314:3:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6314:54:20"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "6303:7:20"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_uint160",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "6275:5:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "6285:7:20",
                "type": ""
              }
            ],
            "src": "6248:126:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6425:32:20",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "6435:16:20",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "6446:5:20"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "6435:7:20"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "6407:5:20",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "6417:7:20",
                "type": ""
              }
            ],
            "src": "6380:77:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6512:258:20",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6522:10:20",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "6531:1:20",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "6526:1:20",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6591:63:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "6616:3:20"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "6621:1:20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "6612:3:20"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6612:11:20"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "6635:3:20"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "6640:1:20"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "6631:3:20"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "6631:11:20"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "6625:5:20"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6625:18:20"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "6605:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6605:39:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6605:39:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "6552:1:20"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "6555:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "6549:2:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6549:13:20"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "6563:19:20",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "6565:15:20",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "6574:1:20"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6577:2:20",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "6570:3:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6570:10:20"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "6565:1:20"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "6545:3:20",
                    "statements": []
                  },
                  "src": "6541:113:20"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6688:76:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "6738:3:20"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "6743:6:20"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "6734:3:20"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6734:16:20"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6752:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "6727:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6727:27:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6727:27:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "6669:1:20"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "6672:6:20"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6666:2:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6666:13:20"
                  },
                  "nodeType": "YulIf",
                  "src": "6663:2:20"
                }
              ]
            },
            "name": "copy_memory_to_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "6494:3:20",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "6499:3:20",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "6504:6:20",
                "type": ""
              }
            ],
            "src": "6463:307:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6819:79:20",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6876:16:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6885:1:20",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6888:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6878:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6878:12:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6878:12:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "6842:5:20"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "6867:5:20"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_address",
                              "nodeType": "YulIdentifier",
                              "src": "6849:17:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6849:24:20"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "6839:2:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6839:35:20"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "6832:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6832:43:20"
                  },
                  "nodeType": "YulIf",
                  "src": "6829:2:20"
                }
              ]
            },
            "name": "validator_revert_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "6812:5:20",
                "type": ""
              }
            ],
            "src": "6776:122:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6955:87:20",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7020:16:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7029:1:20",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7032:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7022:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7022:12:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7022:12:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "6978:5:20"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "7011:5:20"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_address_payable",
                              "nodeType": "YulIdentifier",
                              "src": "6985:25:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "6985:32:20"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "6975:2:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6975:43:20"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "6968:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6968:51:20"
                  },
                  "nodeType": "YulIf",
                  "src": "6965:2:20"
                }
              ]
            },
            "name": "validator_revert_t_address_payable",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "6948:5:20",
                "type": ""
              }
            ],
            "src": "6904:138:20"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7091:79:20",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7148:16:20",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7157:1:20",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7160:1:20",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7150:6:20"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7150:12:20"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7150:12:20"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "7114:5:20"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "7139:5:20"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_uint256",
                              "nodeType": "YulIdentifier",
                              "src": "7121:17:20"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "7121:24:20"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "7111:2:20"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7111:35:20"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "7104:6:20"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7104:43:20"
                  },
                  "nodeType": "YulIf",
                  "src": "7101:2:20"
                }
              ]
            },
            "name": "validator_revert_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "7084:5:20",
                "type": ""
              }
            ],
            "src": "7048:122:20"
          }
        ]
      },
      "contents": "{\n\n    function abi_decode_t_address(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_address(value)\n    }\n\n    function abi_decode_t_address_payable_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_address_payable(value)\n    }\n\n    function abi_decode_t_uint256_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_uint256(value)\n    }\n\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_address_payable_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address_payable_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_addresst_address(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n\n            let offset := 32\n\n            value1 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n        {\n\n            let offset := 0\n\n            value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n        mstore(pos, cleanup_t_address(value))\n    }\n\n    function abi_encode_t_bool_to_t_bool_fromStack(value, pos) {\n        mstore(pos, cleanup_t_bool(value))\n    }\n\n    function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value, pos) -> end {\n        let length := array_length_t_bytes_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length)\n        copy_memory_to_memory(add(value, 0x20), pos, length)\n        end := add(pos, length)\n    }\n\n    function abi_encode_t_stringliteral_2f15ee5b66fda5a6fe58bc59ea2e40dbd490974800ee8b88b65bff2b15710029_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 49)\n\n        mstore(add(pos, 0), \"StateRent: the new_maintainer is\")\n\n        mstore(add(pos, 32), \" the zero address\")\n\n        end := add(pos, 64)\n    }\n\n    function abi_encode_t_stringliteral_f478f172e5af71333c41ab3f363c53929becde4da96e89c5244cca13d187db33_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 51)\n\n        mstore(add(pos, 0), \"StateRent: the contract_address \")\n\n        mstore(add(pos, 32), \"is the zero address\")\n\n        end := add(pos, 64)\n    }\n\n    function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {\n        mstore(pos, cleanup_t_uint256(value))\n    }\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        pos := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack(value0,  pos)\n\n        end := pos\n    }\n\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function abi_encode_tuple_t_address_t_address_t_address__to_t_address_t_address_t_address__fromStack_reversed(headStart , value2, value1, value0) -> tail {\n        tail := add(headStart, 96)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_address_to_t_address_fromStack(value1,  add(headStart, 32))\n\n        abi_encode_t_address_to_t_address_fromStack(value2,  add(headStart, 64))\n\n    }\n\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_bool_to_t_bool_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_2f15ee5b66fda5a6fe58bc59ea2e40dbd490974800ee8b88b65bff2b15710029__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_2f15ee5b66fda5a6fe58bc59ea2e40dbd490974800ee8b88b65bff2b15710029_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_f478f172e5af71333c41ab3f363c53929becde4da96e89c5244cca13d187db33__to_t_string_memory_ptr__fromStack_reversed(headStart ) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_stringliteral_f478f172e5af71333c41ab3f363c53929becde4da96e89c5244cca13d187db33_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value0,  add(headStart, 0))\n\n    }\n\n    function array_length_t_bytes_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack(pos, length) -> updated_pos {\n        updated_pos := pos\n    }\n\n    function array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function cleanup_t_address(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function cleanup_t_address_payable(value) -> cleaned {\n        cleaned := cleanup_t_uint160(value)\n    }\n\n    function cleanup_t_bool(value) -> cleaned {\n        cleaned := iszero(iszero(value))\n    }\n\n    function cleanup_t_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\n    }\n\n    function cleanup_t_uint256(value) -> cleaned {\n        cleaned := value\n    }\n\n    function copy_memory_to_memory(src, dst, length) {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length)\n        {\n            // clear end\n            mstore(add(dst, length), 0)\n        }\n    }\n\n    function validator_revert_t_address(value) {\n        if iszero(eq(value, cleanup_t_address(value))) { revert(0, 0) }\n    }\n\n    function validator_revert_t_address_payable(value) {\n        if iszero(eq(value, cleanup_t_address_payable(value))) { revert(0, 0) }\n    }\n\n    function validator_revert_t_uint256(value) {\n        if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }\n    }\n\n}\n",
      "id": 20,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "99:3424:8:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "99:3424:8:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1246:461;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1780:384;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;778:394;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;306;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2762:759;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2234:378;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1246:461;1356:7;1380:12;1394:23;184:42;1421:21;;1492:16;1443:66;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1421:89;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1379:131;;;;1558:1;1549:7;1546:14;1543:2;;;1609:16;1602:4;1590:10;1586:21;1579:47;1543:2;1678:10;1667:33;;;;;;;;;;;;:::i;:::-;1660:40;;;;1246:461;;;:::o;1780:384::-;1838:7;1858:12;1872:23;184:42;1899:21;;1921:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1899:68;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1857:110;;;;2015:1;2006:7;2003:14;2000:2;;;2066:16;2059:4;2047:10;2043:21;2036:47;2000:2;2135:10;2124:33;;;;;;;;;;;;:::i;:::-;2117:40;;;;1780:384;:::o;778:394::-;841:7;861:12;875:23;184:42;902:21;;924:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;902:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;860:115;;;;1023:1;1014:7;1011:14;1008:2;;;1074:16;1067:4;1055:10;1051:21;1044:47;1008:2;1143:10;1132:33;;;;;;;;;;;;:::i;:::-;1125:40;;;;778:394;:::o;306:::-;369:7;389:12;403:23;184:42;430:21;;452:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;430:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;388:115;;;;551:1;542:7;539:14;536:2;;;602:16;595:4;583:10;579:21;572:47;536:2;671:10;660:33;;;;;;;;;;;;:::i;:::-;653:40;;;;306:394;:::o;2762:759::-;2887:4;2939:1;2911:30;;:16;:30;;;;2903:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;3041:1;3015:28;;:14;:28;;;;3007:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;3109:12;3123:23;184:42;3150:15;;3237:10;3249:16;3267:14;3166:116;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3150:133;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3108:175;;;;3331:1;3322:7;3319:14;3316:2;;;3382:16;3375:4;3363:10;3359:21;3352:47;3316:2;3478:14;3438:55;;3460:16;3438:55;;;;;;;;;;;;3510:4;3503:11;;;;2762:759;;;;:::o;2234:378::-;2289:7;2309:12;2323:23;184:42;2350:21;;2372:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2350:65;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2308:107;;;;2463:1;2454:7;2451:14;2448:2;;;2514:16;2507:4;2495:10;2491:21;2484:47;2448:2;2583:10;2572:33;;;;;;;;;;;;:::i;:::-;2565:40;;;;2234:378;:::o;7:139:20:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:159::-;;248:6;242:13;233:22;;264:41;299:5;264:41;:::i;:::-;223:88;;;;:::o;317:143::-;;405:6;399:13;390:22;;421:33;448:5;421:33;:::i;:::-;380:80;;;;:::o;466:262::-;;574:2;562:9;553:7;549:23;545:32;542:2;;;590:1;587;580:12;542:2;633:1;658:53;703:7;694:6;683:9;679:22;658:53;:::i;:::-;648:63;;604:117;532:196;;;;:::o;734:300::-;;861:2;849:9;840:7;836:23;832:32;829:2;;;877:1;874;867:12;829:2;920:1;945:72;1009:7;1000:6;989:9;985:22;945:72;:::i;:::-;935:82;;891:136;819:215;;;;:::o;1040:407::-;;;1165:2;1153:9;1144:7;1140:23;1136:32;1133:2;;;1181:1;1178;1171:12;1133:2;1224:1;1249:53;1294:7;1285:6;1274:9;1270:22;1249:53;:::i;:::-;1239:63;;1195:117;1351:2;1377:53;1422:7;1413:6;1402:9;1398:22;1377:53;:::i;:::-;1367:63;;1322:118;1123:324;;;;;:::o;1453:284::-;;1572:2;1560:9;1551:7;1547:23;1543:32;1540:2;;;1588:1;1585;1578:12;1540:2;1631:1;1656:64;1712:7;1703:6;1692:9;1688:22;1656:64;:::i;:::-;1646:74;;1602:128;1530:207;;;;:::o;1743:118::-;1830:24;1848:5;1830:24;:::i;:::-;1825:3;1818:37;1808:53;;:::o;1867:109::-;1948:21;1963:5;1948:21;:::i;:::-;1943:3;1936:34;1926:50;;:::o;1982:373::-;;2114:38;2146:5;2114:38;:::i;:::-;2168:88;2249:6;2244:3;2168:88;:::i;:::-;2161:95;;2265:52;2310:6;2305:3;2298:4;2291:5;2287:16;2265:52;:::i;:::-;2342:6;2337:3;2333:16;2326:23;;2090:265;;;;;:::o;2361:381::-;;2524:67;2588:2;2583:3;2524:67;:::i;:::-;2517:74;;2621:34;2617:1;2612:3;2608:11;2601:55;2687:19;2682:2;2677:3;2673:12;2666:41;2733:2;2728:3;2724:12;2717:19;;2507:235;;;:::o;2748:383::-;;2911:67;2975:2;2970:3;2911:67;:::i;:::-;2904:74;;3008:34;3004:1;2999:3;2995:11;2988:55;3074:21;3069:2;3064:3;3060:12;3053:43;3122:2;3117:3;3113:12;3106:19;;2894:237;;;:::o;3137:118::-;3224:24;3242:5;3224:24;:::i;:::-;3219:3;3212:37;3202:53;;:::o;3261:271::-;;3413:93;3502:3;3493:6;3413:93;:::i;:::-;3406:100;;3523:3;3516:10;;3395:137;;;;:::o;3538:222::-;;3669:2;3658:9;3654:18;3646:26;;3682:71;3750:1;3739:9;3735:17;3726:6;3682:71;:::i;:::-;3636:124;;;;:::o;3766:442::-;;3953:2;3942:9;3938:18;3930:26;;3966:71;4034:1;4023:9;4019:17;4010:6;3966:71;:::i;:::-;4047:72;4115:2;4104:9;4100:18;4091:6;4047:72;:::i;:::-;4129;4197:2;4186:9;4182:18;4173:6;4129:72;:::i;:::-;3920:288;;;;;;:::o;4214:210::-;;4339:2;4328:9;4324:18;4316:26;;4352:65;4414:1;4403:9;4399:17;4390:6;4352:65;:::i;:::-;4306:118;;;;:::o;4430:419::-;;4634:2;4623:9;4619:18;4611:26;;4683:9;4677:4;4673:20;4669:1;4658:9;4654:17;4647:47;4711:131;4837:4;4711:131;:::i;:::-;4703:139;;4601:248;;;:::o;4855:419::-;;5059:2;5048:9;5044:18;5036:26;;5108:9;5102:4;5098:20;5094:1;5083:9;5079:17;5072:47;5136:131;5262:4;5136:131;:::i;:::-;5128:139;;5026:248;;;:::o;5280:222::-;;5411:2;5400:9;5396:18;5388:26;;5424:71;5492:1;5481:9;5477:17;5468:6;5424:71;:::i;:::-;5378:124;;;;:::o;5508:98::-;;5593:5;5587:12;5577:22;;5566:40;;;:::o;5612:147::-;;5750:3;5735:18;;5725:34;;;;:::o;5765:169::-;;5883:6;5878:3;5871:19;5923:4;5918:3;5914:14;5899:29;;5861:73;;;;:::o;5940:96::-;;6006:24;6024:5;6006:24;:::i;:::-;5995:35;;5985:51;;;:::o;6042:104::-;;6116:24;6134:5;6116:24;:::i;:::-;6105:35;;6095:51;;;:::o;6152:90::-;;6229:5;6222:13;6215:21;6204:32;;6194:48;;;:::o;6248:126::-;;6325:42;6318:5;6314:54;6303:65;;6293:81;;;:::o;6380:77::-;;6446:5;6435:16;;6425:32;;;:::o;6463:307::-;6531:1;6541:113;6555:6;6552:1;6549:13;6541:113;;;6640:1;6635:3;6631:11;6625:18;6621:1;6616:3;6612:11;6605:39;6577:2;6574:1;6570:10;6565:15;;6541:113;;;6672:6;6669:1;6666:13;6663:2;;;6752:1;6743:6;6738:3;6734:16;6727:27;6663:2;6512:258;;;;:::o;6776:122::-;6849:24;6867:5;6849:24;:::i;:::-;6842:5;6839:35;6829:2;;6888:1;6885;6878:12;6829:2;6819:79;:::o;6904:138::-;6985:32;7011:5;6985:32;:::i;:::-;6978:5;6975:43;6965:2;;7032:1;7029;7022:12;6965:2;6955:87;:::o;7048:122::-;7121:24;7139:5;7121:24;:::i;:::-;7114:5;7111:35;7101:2;;7160:1;7157;7150:12;7101:2;7091:79;:::o",
  "source": "// SPDX-License-Identifier: GPL-3.0-or-later\n\npragma solidity ^0.8.0;\n\nimport \"./IStateRent.sol\";\n\ncontract StateRent is IStateRent {\n    address constant private precompile = address(0x0000000000000000000000000000000000000402);\n\n    /**\n     * @dev Returns the const of NewContractExtraBytes.\n     */\n    function newContractExtraBytes() public view override returns (uint256) {\n        (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature(\"newContractExtraBytes()\"));\n        assembly {\n            if eq(success, 0) {\n                revert(add(returnData, 0x20), returndatasize())\n            }\n        }\n\n        return abi.decode(returnData, (uint256));\n    }\n\n    /**\n     * @dev Returns the const of StorageDepositPerByte.\n     */\n    function storageDepositPerByte() public view override returns (uint256) {\n        (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature(\"storageDepositPerByte()\"));\n        assembly {\n            if eq(success, 0) {\n                revert(add(returnData, 0x20), returndatasize())\n            }\n        }\n\n        return abi.decode(returnData, (uint256));\n    }\n\n    /**\n     * @dev Returns the maintainer of the contract.\n     */\n    function maintainerOf(address contract_address)\n        public\n        view\n        override\n        returns (address)\n    {\n        (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature(\"maintainerOf(address)\", contract_address));\n        assembly {\n            if eq(success, 0) {\n                revert(add(returnData, 0x20), returndatasize())\n            }\n        }\n\n        return abi.decode(returnData, (address));\n    }\n\n    /**\n     * @dev Returns the const of DeveloperDeposit.\n     */\n    function developerDeposit() public view override returns (uint256) {\n        (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature(\"developerDeposit()\"));\n        assembly {\n            if eq(success, 0) {\n                revert(add(returnData, 0x20), returndatasize())\n            }\n        }\n\n        return abi.decode(returnData, (uint256));\n    }\n\n    /**\n     * @dev Returns the const of DeploymentFee.\n     */\n    function deploymentFee() public view override returns (uint256) {\n        (bool success, bytes memory returnData) = precompile.staticcall(abi.encodeWithSignature(\"deploymentFee()\"));\n        assembly {\n            if eq(success, 0) {\n                revert(add(returnData, 0x20), returndatasize())\n            }\n        }\n\n        return abi.decode(returnData, (uint256));\n    }\n\n    /**\n     * @dev Transfer the maintainer of the contract.\n     * Returns a boolean value indicating whether the operation succeeded.\n     */\n    function transferMaintainer(\n        address contract_address,\n        address new_maintainer\n    ) public override returns (bool) {\n        require(contract_address != address(0), \"StateRent: the contract_address is the zero address\");\n        require(new_maintainer != address(0), \"StateRent: the new_maintainer is the zero address\");\n\n        (bool success, bytes memory returnData) = precompile.call(abi.encodeWithSignature(\"transferMaintainer(address,address,address)\", msg.sender, contract_address, new_maintainer));\n        assembly {\n            if eq(success, 0) {\n                revert(add(returnData, 0x20), returndatasize())\n            }\n        }\n\n        emit TransferredMaintainer(contract_address, new_maintainer);\n        return true;\n    }\n}\n",
  "sourcePath": "/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/state_rent/StateRent.sol",
  "ast": {
    "absolutePath": "/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/state_rent/StateRent.sol",
    "exportedSymbols": {
      "IStateRent": [
        1138
      ],
      "StateRent": [
        1354
      ]
    },
    "id": 1355,
    "license": "GPL-3.0-or-later",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1140,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "46:23:8"
      },
      {
        "absolutePath": "/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/state_rent/IStateRent.sol",
        "file": "./IStateRent.sol",
        "id": 1141,
        "nodeType": "ImportDirective",
        "scope": 1355,
        "sourceUnit": 1139,
        "src": "71:26:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 1142,
              "name": "IStateRent",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 1138,
              "src": "121:10:8"
            },
            "id": 1143,
            "nodeType": "InheritanceSpecifier",
            "src": "121:10:8"
          }
        ],
        "contractDependencies": [
          1138
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 1354,
        "linearizedBaseContracts": [
          1354,
          1138
        ],
        "name": "StateRent",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 1149,
            "mutability": "constant",
            "name": "precompile",
            "nodeType": "VariableDeclaration",
            "scope": 1354,
            "src": "138:89:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1144,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "138:7:8",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "307830303030303030303030303030303030303030303030303030303030303030303030303030343032",
                  "id": 1147,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "184:42:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "value": "0x0000000000000000000000000000000000000402"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 1146,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "176:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": {
                  "id": 1145,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "176:7:8",
                  "typeDescriptions": {}
                }
              },
              "id": 1148,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "176:51:8",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "private"
          },
          {
            "baseFunctions": [
              1106
            ],
            "body": {
              "id": 1177,
              "nodeType": "Block",
              "src": "378:322:8",
              "statements": [
                {
                  "assignments": [
                    1157,
                    1159
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1157,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1177,
                      "src": "389:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1156,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "389:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1159,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 1177,
                      "src": "403:23:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1158,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "403:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1167,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6e6577436f6e7472616374457874726142797465732829",
                            "id": 1164,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "476:25:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a23e8b820de0fa18f94f52347ab4bb12fba2282b6015e74720b391522508d4e6",
                              "typeString": "literal_string \"newContractExtraBytes()\""
                            },
                            "value": "newContractExtraBytes()"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a23e8b820de0fa18f94f52347ab4bb12fba2282b6015e74720b391522508d4e6",
                              "typeString": "literal_string \"newContractExtraBytes()\""
                            }
                          ],
                          "expression": {
                            "id": 1162,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "452:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1163,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "452:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 1165,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "452:50:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 1160,
                        "name": "precompile",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1149,
                        "src": "430:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1161,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "src": "430:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 1166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "430:73:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "388:115:8"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "522:121:8",
                    "statements": [
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "554:79:8",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "returnData",
                                        "nodeType": "YulIdentifier",
                                        "src": "583:10:8"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "595:4:8",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "579:3:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "579:21:8"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "602:14:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "602:16:8"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "572:6:8"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "572:47:8"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "572:47:8"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "success",
                              "nodeType": "YulIdentifier",
                              "src": "542:7:8"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "551:1:8",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "eq",
                            "nodeType": "YulIdentifier",
                            "src": "539:2:8"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "539:14:8"
                        },
                        "nodeType": "YulIf",
                        "src": "536:2:8"
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 1159,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "583:10:8",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1157,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "542:7:8",
                      "valueSize": 1
                    }
                  ],
                  "id": 1168,
                  "nodeType": "InlineAssembly",
                  "src": "513:130:8"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1171,
                        "name": "returnData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1159,
                        "src": "671:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 1173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "684:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 1172,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "684:7:8",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 1174,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "683:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      ],
                      "expression": {
                        "id": 1169,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "660:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 1170,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "660:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 1175,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "660:33:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1155,
                  "id": 1176,
                  "nodeType": "Return",
                  "src": "653:40:8"
                }
              ]
            },
            "documentation": {
              "id": 1150,
              "nodeType": "StructuredDocumentation",
              "src": "234:67:8",
              "text": " @dev Returns the const of NewContractExtraBytes."
            },
            "functionSelector": "a23e8b82",
            "id": 1178,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "newContractExtraBytes",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1152,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "351:8:8"
            },
            "parameters": {
              "id": 1151,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "336:2:8"
            },
            "returnParameters": {
              "id": 1155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1154,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1178,
                  "src": "369:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1153,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "369:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "368:9:8"
            },
            "scope": 1354,
            "src": "306:394:8",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              1111
            ],
            "body": {
              "id": 1206,
              "nodeType": "Block",
              "src": "850:322:8",
              "statements": [
                {
                  "assignments": [
                    1186,
                    1188
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1186,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1206,
                      "src": "861:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1185,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "861:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1188,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 1206,
                      "src": "875:23:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1187,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "875:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1196,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "73746f726167654465706f736974506572427974652829",
                            "id": 1193,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "948:25:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6e0439984405766a0b66bb3679168ea89231985741029aeeb99cf122bccaf5a9",
                              "typeString": "literal_string \"storageDepositPerByte()\""
                            },
                            "value": "storageDepositPerByte()"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6e0439984405766a0b66bb3679168ea89231985741029aeeb99cf122bccaf5a9",
                              "typeString": "literal_string \"storageDepositPerByte()\""
                            }
                          ],
                          "expression": {
                            "id": 1191,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "924:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "924:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 1194,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "924:50:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 1189,
                        "name": "precompile",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1149,
                        "src": "902:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1190,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "src": "902:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 1195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "902:73:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "860:115:8"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "994:121:8",
                    "statements": [
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1026:79:8",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "returnData",
                                        "nodeType": "YulIdentifier",
                                        "src": "1055:10:8"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1067:4:8",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1051:3:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1051:21:8"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "1074:14:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1074:16:8"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1044:6:8"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1044:47:8"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1044:47:8"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "success",
                              "nodeType": "YulIdentifier",
                              "src": "1014:7:8"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1023:1:8",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "eq",
                            "nodeType": "YulIdentifier",
                            "src": "1011:2:8"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1011:14:8"
                        },
                        "nodeType": "YulIf",
                        "src": "1008:2:8"
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 1188,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1055:10:8",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1186,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1014:7:8",
                      "valueSize": 1
                    }
                  ],
                  "id": 1197,
                  "nodeType": "InlineAssembly",
                  "src": "985:130:8"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1200,
                        "name": "returnData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1188,
                        "src": "1143:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 1202,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1156:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 1201,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1156:7:8",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 1203,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1155:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      ],
                      "expression": {
                        "id": 1198,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "1132:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 1199,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1132:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 1204,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1132:33:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1184,
                  "id": 1205,
                  "nodeType": "Return",
                  "src": "1125:40:8"
                }
              ]
            },
            "documentation": {
              "id": 1179,
              "nodeType": "StructuredDocumentation",
              "src": "706:67:8",
              "text": " @dev Returns the const of StorageDepositPerByte."
            },
            "functionSelector": "6e043998",
            "id": 1207,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "storageDepositPerByte",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1181,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "823:8:8"
            },
            "parameters": {
              "id": 1180,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "808:2:8"
            },
            "returnParameters": {
              "id": 1184,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1183,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1207,
                  "src": "841:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1182,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "841:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "840:9:8"
            },
            "scope": 1354,
            "src": "778:394:8",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              1118
            ],
            "body": {
              "id": 1238,
              "nodeType": "Block",
              "src": "1369:338:8",
              "statements": [
                {
                  "assignments": [
                    1217,
                    1219
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1217,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1238,
                      "src": "1380:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1216,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1380:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1219,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 1238,
                      "src": "1394:23:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1218,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1394:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1228,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6d61696e7461696e65724f66286164647265737329",
                            "id": 1224,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1467:23:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_06ad135544d090f810b37751fbffd25c80d0fa03d76a41e76f117f2b201a3d64",
                              "typeString": "literal_string \"maintainerOf(address)\""
                            },
                            "value": "maintainerOf(address)"
                          },
                          {
                            "id": 1225,
                            "name": "contract_address",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1210,
                            "src": "1492:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_06ad135544d090f810b37751fbffd25c80d0fa03d76a41e76f117f2b201a3d64",
                              "typeString": "literal_string \"maintainerOf(address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 1222,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "1443:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1443:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 1226,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1443:66:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 1220,
                        "name": "precompile",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1149,
                        "src": "1421:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1221,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "src": "1421:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 1227,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1421:89:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1379:131:8"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "1529:121:8",
                    "statements": [
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1561:79:8",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "returnData",
                                        "nodeType": "YulIdentifier",
                                        "src": "1590:10:8"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1602:4:8",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1586:3:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1586:21:8"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "1609:14:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1609:16:8"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1579:6:8"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1579:47:8"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1579:47:8"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "success",
                              "nodeType": "YulIdentifier",
                              "src": "1549:7:8"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1558:1:8",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "eq",
                            "nodeType": "YulIdentifier",
                            "src": "1546:2:8"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1546:14:8"
                        },
                        "nodeType": "YulIf",
                        "src": "1543:2:8"
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 1219,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1590:10:8",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1217,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1549:7:8",
                      "valueSize": 1
                    }
                  ],
                  "id": 1229,
                  "nodeType": "InlineAssembly",
                  "src": "1520:130:8"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1232,
                        "name": "returnData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1219,
                        "src": "1678:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 1234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1691:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1233,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1691:7:8",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 1235,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1690:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        }
                      ],
                      "expression": {
                        "id": 1230,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "1667:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 1231,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1667:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 1236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1667:33:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 1215,
                  "id": 1237,
                  "nodeType": "Return",
                  "src": "1660:40:8"
                }
              ]
            },
            "documentation": {
              "id": 1208,
              "nodeType": "StructuredDocumentation",
              "src": "1178:63:8",
              "text": " @dev Returns the maintainer of the contract."
            },
            "functionSelector": "06ad1355",
            "id": 1239,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "maintainerOf",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1212,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1330:8:8"
            },
            "parameters": {
              "id": 1211,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1210,
                  "mutability": "mutable",
                  "name": "contract_address",
                  "nodeType": "VariableDeclaration",
                  "scope": 1239,
                  "src": "1268:24:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1209,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1268:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1267:26:8"
            },
            "returnParameters": {
              "id": 1215,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1214,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1239,
                  "src": "1356:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1213,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1356:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1355:9:8"
            },
            "scope": 1354,
            "src": "1246:461:8",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              1123
            ],
            "body": {
              "id": 1267,
              "nodeType": "Block",
              "src": "1847:317:8",
              "statements": [
                {
                  "assignments": [
                    1247,
                    1249
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1247,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1267,
                      "src": "1858:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1246,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1858:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1249,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 1267,
                      "src": "1872:23:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1248,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1872:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1257,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "646576656c6f7065724465706f7369742829",
                            "id": 1254,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1945:20:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_68a188555ef73f807c4687e8df06f685079a49c05ea78098ad47cc042fda0a32",
                              "typeString": "literal_string \"developerDeposit()\""
                            },
                            "value": "developerDeposit()"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_68a188555ef73f807c4687e8df06f685079a49c05ea78098ad47cc042fda0a32",
                              "typeString": "literal_string \"developerDeposit()\""
                            }
                          ],
                          "expression": {
                            "id": 1252,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "1921:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1921:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 1255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1921:45:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 1250,
                        "name": "precompile",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1149,
                        "src": "1899:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1251,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "src": "1899:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 1256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1899:68:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1857:110:8"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "1986:121:8",
                    "statements": [
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2018:79:8",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "returnData",
                                        "nodeType": "YulIdentifier",
                                        "src": "2047:10:8"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2059:4:8",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2043:3:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2043:21:8"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "2066:14:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2066:16:8"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2036:6:8"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2036:47:8"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2036:47:8"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "success",
                              "nodeType": "YulIdentifier",
                              "src": "2006:7:8"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2015:1:8",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "eq",
                            "nodeType": "YulIdentifier",
                            "src": "2003:2:8"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2003:14:8"
                        },
                        "nodeType": "YulIf",
                        "src": "2000:2:8"
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 1249,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "2047:10:8",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1247,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "2006:7:8",
                      "valueSize": 1
                    }
                  ],
                  "id": 1258,
                  "nodeType": "InlineAssembly",
                  "src": "1977:130:8"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1261,
                        "name": "returnData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1249,
                        "src": "2135:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 1263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2148:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 1262,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2148:7:8",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 1264,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2147:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      ],
                      "expression": {
                        "id": 1259,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "2124:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 1260,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "2124:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 1265,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2124:33:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1245,
                  "id": 1266,
                  "nodeType": "Return",
                  "src": "2117:40:8"
                }
              ]
            },
            "documentation": {
              "id": 1240,
              "nodeType": "StructuredDocumentation",
              "src": "1713:62:8",
              "text": " @dev Returns the const of DeveloperDeposit."
            },
            "functionSelector": "68a18855",
            "id": 1268,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "developerDeposit",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1242,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1820:8:8"
            },
            "parameters": {
              "id": 1241,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1805:2:8"
            },
            "returnParameters": {
              "id": 1245,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1244,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1268,
                  "src": "1838:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1243,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1838:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1837:9:8"
            },
            "scope": 1354,
            "src": "1780:384:8",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              1128
            ],
            "body": {
              "id": 1296,
              "nodeType": "Block",
              "src": "2298:314:8",
              "statements": [
                {
                  "assignments": [
                    1276,
                    1278
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1276,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1296,
                      "src": "2309:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1275,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2309:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1278,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 1296,
                      "src": "2323:23:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1277,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2323:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1286,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6465706c6f796d656e744665652829",
                            "id": 1283,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2396:17:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f2cff57f0abc25f3c2a8e5c35e406e8af803a06a53ecbe494f2cb682b509c33f",
                              "typeString": "literal_string \"deploymentFee()\""
                            },
                            "value": "deploymentFee()"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f2cff57f0abc25f3c2a8e5c35e406e8af803a06a53ecbe494f2cb682b509c33f",
                              "typeString": "literal_string \"deploymentFee()\""
                            }
                          ],
                          "expression": {
                            "id": 1281,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "2372:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2372:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 1284,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2372:42:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 1279,
                        "name": "precompile",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1149,
                        "src": "2350:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1280,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "src": "2350:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 1285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2350:65:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2308:107:8"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "2434:121:8",
                    "statements": [
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2466:79:8",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "returnData",
                                        "nodeType": "YulIdentifier",
                                        "src": "2495:10:8"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2507:4:8",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2491:3:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2491:21:8"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "2514:14:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2514:16:8"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2484:6:8"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2484:47:8"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2484:47:8"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "success",
                              "nodeType": "YulIdentifier",
                              "src": "2454:7:8"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2463:1:8",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "eq",
                            "nodeType": "YulIdentifier",
                            "src": "2451:2:8"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2451:14:8"
                        },
                        "nodeType": "YulIf",
                        "src": "2448:2:8"
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 1278,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "2495:10:8",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1276,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "2454:7:8",
                      "valueSize": 1
                    }
                  ],
                  "id": 1287,
                  "nodeType": "InlineAssembly",
                  "src": "2425:130:8"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1290,
                        "name": "returnData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1278,
                        "src": "2583:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 1292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2596:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 1291,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2596:7:8",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 1293,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2595:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      ],
                      "expression": {
                        "id": 1288,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "2572:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 1289,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "2572:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 1294,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2572:33:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1274,
                  "id": 1295,
                  "nodeType": "Return",
                  "src": "2565:40:8"
                }
              ]
            },
            "documentation": {
              "id": 1269,
              "nodeType": "StructuredDocumentation",
              "src": "2170:59:8",
              "text": " @dev Returns the const of DeploymentFee."
            },
            "functionSelector": "f2cff57f",
            "id": 1297,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deploymentFee",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1271,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2271:8:8"
            },
            "parameters": {
              "id": 1270,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2256:2:8"
            },
            "returnParameters": {
              "id": 1274,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1273,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1297,
                  "src": "2289:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1272,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2289:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2288:9:8"
            },
            "scope": 1354,
            "src": "2234:378:8",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              1137
            ],
            "body": {
              "id": 1352,
              "nodeType": "Block",
              "src": "2893:628:8",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1314,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1309,
                          "name": "contract_address",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1300,
                          "src": "2911:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 1312,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2939:1:8",
                              "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": 1311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2931:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1310,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2931:7:8",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2931:10:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2911:30:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "537461746552656e743a2074686520636f6e74726163745f6164647265737320697320746865207a65726f2061646472657373",
                        "id": 1315,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2943:53:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f478f172e5af71333c41ab3f363c53929becde4da96e89c5244cca13d187db33",
                          "typeString": "literal_string \"StateRent: the contract_address is the zero address\""
                        },
                        "value": "StateRent: the contract_address is the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f478f172e5af71333c41ab3f363c53929becde4da96e89c5244cca13d187db33",
                          "typeString": "literal_string \"StateRent: the contract_address is the zero address\""
                        }
                      ],
                      "id": 1308,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2903:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2903:94:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1317,
                  "nodeType": "ExpressionStatement",
                  "src": "2903:94:8"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1324,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1319,
                          "name": "new_maintainer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1302,
                          "src": "3015:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 1322,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3041:1:8",
                              "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": 1321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3033:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1320,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3033:7:8",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1323,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3033:10:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3015:28:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "537461746552656e743a20746865206e65775f6d61696e7461696e657220697320746865207a65726f2061646472657373",
                        "id": 1325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3045:51:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2f15ee5b66fda5a6fe58bc59ea2e40dbd490974800ee8b88b65bff2b15710029",
                          "typeString": "literal_string \"StateRent: the new_maintainer is the zero address\""
                        },
                        "value": "StateRent: the new_maintainer is the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2f15ee5b66fda5a6fe58bc59ea2e40dbd490974800ee8b88b65bff2b15710029",
                          "typeString": "literal_string \"StateRent: the new_maintainer is the zero address\""
                        }
                      ],
                      "id": 1318,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3007:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1326,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3007:90:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1327,
                  "nodeType": "ExpressionStatement",
                  "src": "3007:90:8"
                },
                {
                  "assignments": [
                    1329,
                    1331
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1329,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1352,
                      "src": "3109:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1328,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3109:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1331,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 1352,
                      "src": "3123:23:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1330,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3123:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1343,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "7472616e736665724d61696e7461696e657228616464726573732c616464726573732c6164647265737329",
                            "id": 1336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3190:45:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ee0d2e124942e77e13cc7a858ab527317024b0429fdaf314e734ad3499c03944",
                              "typeString": "literal_string \"transferMaintainer(address,address,address)\""
                            },
                            "value": "transferMaintainer(address,address,address)"
                          },
                          {
                            "expression": {
                              "id": 1337,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "3237:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1338,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "3237:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1339,
                            "name": "contract_address",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1300,
                            "src": "3249:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1340,
                            "name": "new_maintainer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1302,
                            "src": "3267:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ee0d2e124942e77e13cc7a858ab527317024b0429fdaf314e734ad3499c03944",
                              "typeString": "literal_string \"transferMaintainer(address,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 1334,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "3166:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3166:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 1341,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3166:116:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 1332,
                        "name": "precompile",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1149,
                        "src": "3150:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1333,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "call",
                      "nodeType": "MemberAccess",
                      "src": "3150:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                      }
                    },
                    "id": 1342,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3150:133:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3108:175:8"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "3302:121:8",
                    "statements": [
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3334:79:8",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "returnData",
                                        "nodeType": "YulIdentifier",
                                        "src": "3363:10:8"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3375:4:8",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3359:3:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3359:21:8"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "3382:14:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3382:16:8"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "3352:6:8"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3352:47:8"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3352:47:8"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "success",
                              "nodeType": "YulIdentifier",
                              "src": "3322:7:8"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3331:1:8",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "eq",
                            "nodeType": "YulIdentifier",
                            "src": "3319:2:8"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3319:14:8"
                        },
                        "nodeType": "YulIf",
                        "src": "3316:2:8"
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 1331,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3363:10:8",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1329,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3322:7:8",
                      "valueSize": 1
                    }
                  ],
                  "id": 1344,
                  "nodeType": "InlineAssembly",
                  "src": "3293:130:8"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 1346,
                        "name": "contract_address",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1300,
                        "src": "3460:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1347,
                        "name": "new_maintainer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1302,
                        "src": "3478:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1345,
                      "name": "TransferredMaintainer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1101,
                      "src": "3438:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 1348,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3438:55:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1349,
                  "nodeType": "EmitStatement",
                  "src": "3433:60:8"
                },
                {
                  "expression": {
                    "hexValue": "74727565",
                    "id": 1350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3510:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 1307,
                  "id": 1351,
                  "nodeType": "Return",
                  "src": "3503:11:8"
                }
              ]
            },
            "documentation": {
              "id": 1298,
              "nodeType": "StructuredDocumentation",
              "src": "2618:139:8",
              "text": " @dev Transfer the maintainer of the contract.\n Returns a boolean value indicating whether the operation succeeded."
            },
            "functionSelector": "cfbd33d7",
            "id": 1353,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transferMaintainer",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1304,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2869:8:8"
            },
            "parameters": {
              "id": 1303,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1300,
                  "mutability": "mutable",
                  "name": "contract_address",
                  "nodeType": "VariableDeclaration",
                  "scope": 1353,
                  "src": "2799:24:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1299,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2799:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1302,
                  "mutability": "mutable",
                  "name": "new_maintainer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1353,
                  "src": "2833:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1301,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2833:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2789:72:8"
            },
            "returnParameters": {
              "id": 1307,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1306,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1353,
                  "src": "2887:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1305,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2887:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2886:6:8"
            },
            "scope": 1354,
            "src": "2762:759:8",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 1355,
        "src": "99:3424:8"
      }
    ],
    "src": "46:3478:8"
  },
  "legacyAST": {
    "absolutePath": "/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/state_rent/StateRent.sol",
    "exportedSymbols": {
      "IStateRent": [
        1138
      ],
      "StateRent": [
        1354
      ]
    },
    "id": 1355,
    "license": "GPL-3.0-or-later",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1140,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "46:23:8"
      },
      {
        "absolutePath": "/home/runner/work/predeploy-contracts/predeploy-contracts/contracts/state_rent/IStateRent.sol",
        "file": "./IStateRent.sol",
        "id": 1141,
        "nodeType": "ImportDirective",
        "scope": 1355,
        "sourceUnit": 1139,
        "src": "71:26:8",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 1142,
              "name": "IStateRent",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 1138,
              "src": "121:10:8"
            },
            "id": 1143,
            "nodeType": "InheritanceSpecifier",
            "src": "121:10:8"
          }
        ],
        "contractDependencies": [
          1138
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 1354,
        "linearizedBaseContracts": [
          1354,
          1138
        ],
        "name": "StateRent",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 1149,
            "mutability": "constant",
            "name": "precompile",
            "nodeType": "VariableDeclaration",
            "scope": 1354,
            "src": "138:89:8",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 1144,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "138:7:8",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "307830303030303030303030303030303030303030303030303030303030303030303030303030343032",
                  "id": 1147,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "184:42:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "value": "0x0000000000000000000000000000000000000402"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                ],
                "id": 1146,
                "isConstant": false,
                "isLValue": false,
                "isPure": true,
                "lValueRequested": false,
                "nodeType": "ElementaryTypeNameExpression",
                "src": "176:7:8",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_address_$",
                  "typeString": "type(address)"
                },
                "typeName": {
                  "id": 1145,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "176:7:8",
                  "typeDescriptions": {}
                }
              },
              "id": 1148,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "typeConversion",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "176:51:8",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "private"
          },
          {
            "baseFunctions": [
              1106
            ],
            "body": {
              "id": 1177,
              "nodeType": "Block",
              "src": "378:322:8",
              "statements": [
                {
                  "assignments": [
                    1157,
                    1159
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1157,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1177,
                      "src": "389:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1156,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "389:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1159,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 1177,
                      "src": "403:23:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1158,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "403:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1167,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6e6577436f6e7472616374457874726142797465732829",
                            "id": 1164,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "476:25:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a23e8b820de0fa18f94f52347ab4bb12fba2282b6015e74720b391522508d4e6",
                              "typeString": "literal_string \"newContractExtraBytes()\""
                            },
                            "value": "newContractExtraBytes()"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_a23e8b820de0fa18f94f52347ab4bb12fba2282b6015e74720b391522508d4e6",
                              "typeString": "literal_string \"newContractExtraBytes()\""
                            }
                          ],
                          "expression": {
                            "id": 1162,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "452:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1163,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "452:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 1165,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "452:50:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 1160,
                        "name": "precompile",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1149,
                        "src": "430:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1161,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "src": "430:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 1166,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "430:73:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "388:115:8"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "522:121:8",
                    "statements": [
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "554:79:8",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "returnData",
                                        "nodeType": "YulIdentifier",
                                        "src": "583:10:8"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "595:4:8",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "579:3:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "579:21:8"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "602:14:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "602:16:8"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "572:6:8"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "572:47:8"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "572:47:8"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "success",
                              "nodeType": "YulIdentifier",
                              "src": "542:7:8"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "551:1:8",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "eq",
                            "nodeType": "YulIdentifier",
                            "src": "539:2:8"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "539:14:8"
                        },
                        "nodeType": "YulIf",
                        "src": "536:2:8"
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 1159,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "583:10:8",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1157,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "542:7:8",
                      "valueSize": 1
                    }
                  ],
                  "id": 1168,
                  "nodeType": "InlineAssembly",
                  "src": "513:130:8"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1171,
                        "name": "returnData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1159,
                        "src": "671:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 1173,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "684:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 1172,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "684:7:8",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 1174,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "683:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      ],
                      "expression": {
                        "id": 1169,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "660:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 1170,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "660:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 1175,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "660:33:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1155,
                  "id": 1176,
                  "nodeType": "Return",
                  "src": "653:40:8"
                }
              ]
            },
            "documentation": {
              "id": 1150,
              "nodeType": "StructuredDocumentation",
              "src": "234:67:8",
              "text": " @dev Returns the const of NewContractExtraBytes."
            },
            "functionSelector": "a23e8b82",
            "id": 1178,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "newContractExtraBytes",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1152,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "351:8:8"
            },
            "parameters": {
              "id": 1151,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "336:2:8"
            },
            "returnParameters": {
              "id": 1155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1154,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1178,
                  "src": "369:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1153,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "369:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "368:9:8"
            },
            "scope": 1354,
            "src": "306:394:8",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              1111
            ],
            "body": {
              "id": 1206,
              "nodeType": "Block",
              "src": "850:322:8",
              "statements": [
                {
                  "assignments": [
                    1186,
                    1188
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1186,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1206,
                      "src": "861:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1185,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "861:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1188,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 1206,
                      "src": "875:23:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1187,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "875:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1196,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "73746f726167654465706f736974506572427974652829",
                            "id": 1193,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "948:25:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_6e0439984405766a0b66bb3679168ea89231985741029aeeb99cf122bccaf5a9",
                              "typeString": "literal_string \"storageDepositPerByte()\""
                            },
                            "value": "storageDepositPerByte()"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_6e0439984405766a0b66bb3679168ea89231985741029aeeb99cf122bccaf5a9",
                              "typeString": "literal_string \"storageDepositPerByte()\""
                            }
                          ],
                          "expression": {
                            "id": 1191,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "924:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "924:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 1194,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "924:50:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 1189,
                        "name": "precompile",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1149,
                        "src": "902:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1190,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "src": "902:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 1195,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "902:73:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "860:115:8"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "994:121:8",
                    "statements": [
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1026:79:8",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "returnData",
                                        "nodeType": "YulIdentifier",
                                        "src": "1055:10:8"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1067:4:8",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1051:3:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1051:21:8"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "1074:14:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1074:16:8"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1044:6:8"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1044:47:8"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1044:47:8"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "success",
                              "nodeType": "YulIdentifier",
                              "src": "1014:7:8"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1023:1:8",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "eq",
                            "nodeType": "YulIdentifier",
                            "src": "1011:2:8"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1011:14:8"
                        },
                        "nodeType": "YulIf",
                        "src": "1008:2:8"
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 1188,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1055:10:8",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1186,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1014:7:8",
                      "valueSize": 1
                    }
                  ],
                  "id": 1197,
                  "nodeType": "InlineAssembly",
                  "src": "985:130:8"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1200,
                        "name": "returnData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1188,
                        "src": "1143:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 1202,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1156:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 1201,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "1156:7:8",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 1203,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1155:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      ],
                      "expression": {
                        "id": 1198,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "1132:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 1199,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1132:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 1204,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1132:33:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1184,
                  "id": 1205,
                  "nodeType": "Return",
                  "src": "1125:40:8"
                }
              ]
            },
            "documentation": {
              "id": 1179,
              "nodeType": "StructuredDocumentation",
              "src": "706:67:8",
              "text": " @dev Returns the const of StorageDepositPerByte."
            },
            "functionSelector": "6e043998",
            "id": 1207,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "storageDepositPerByte",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1181,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "823:8:8"
            },
            "parameters": {
              "id": 1180,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "808:2:8"
            },
            "returnParameters": {
              "id": 1184,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1183,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1207,
                  "src": "841:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1182,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "841:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "840:9:8"
            },
            "scope": 1354,
            "src": "778:394:8",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              1118
            ],
            "body": {
              "id": 1238,
              "nodeType": "Block",
              "src": "1369:338:8",
              "statements": [
                {
                  "assignments": [
                    1217,
                    1219
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1217,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1238,
                      "src": "1380:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1216,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1380:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1219,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 1238,
                      "src": "1394:23:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1218,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1394:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1228,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6d61696e7461696e65724f66286164647265737329",
                            "id": 1224,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1467:23:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_06ad135544d090f810b37751fbffd25c80d0fa03d76a41e76f117f2b201a3d64",
                              "typeString": "literal_string \"maintainerOf(address)\""
                            },
                            "value": "maintainerOf(address)"
                          },
                          {
                            "id": 1225,
                            "name": "contract_address",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1210,
                            "src": "1492:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_06ad135544d090f810b37751fbffd25c80d0fa03d76a41e76f117f2b201a3d64",
                              "typeString": "literal_string \"maintainerOf(address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 1222,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "1443:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1443:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 1226,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1443:66:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 1220,
                        "name": "precompile",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1149,
                        "src": "1421:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1221,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "src": "1421:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 1227,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1421:89:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1379:131:8"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "1529:121:8",
                    "statements": [
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1561:79:8",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "returnData",
                                        "nodeType": "YulIdentifier",
                                        "src": "1590:10:8"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "1602:4:8",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "1586:3:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1586:21:8"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "1609:14:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "1609:16:8"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1579:6:8"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1579:47:8"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1579:47:8"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "success",
                              "nodeType": "YulIdentifier",
                              "src": "1549:7:8"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1558:1:8",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "eq",
                            "nodeType": "YulIdentifier",
                            "src": "1546:2:8"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1546:14:8"
                        },
                        "nodeType": "YulIf",
                        "src": "1543:2:8"
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 1219,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1590:10:8",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1217,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "1549:7:8",
                      "valueSize": 1
                    }
                  ],
                  "id": 1229,
                  "nodeType": "InlineAssembly",
                  "src": "1520:130:8"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1232,
                        "name": "returnData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1219,
                        "src": "1678:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 1234,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1691:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1233,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1691:7:8",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 1235,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1690:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        }
                      ],
                      "expression": {
                        "id": 1230,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "1667:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 1231,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "1667:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 1236,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1667:33:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 1215,
                  "id": 1237,
                  "nodeType": "Return",
                  "src": "1660:40:8"
                }
              ]
            },
            "documentation": {
              "id": 1208,
              "nodeType": "StructuredDocumentation",
              "src": "1178:63:8",
              "text": " @dev Returns the maintainer of the contract."
            },
            "functionSelector": "06ad1355",
            "id": 1239,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "maintainerOf",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1212,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1330:8:8"
            },
            "parameters": {
              "id": 1211,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1210,
                  "mutability": "mutable",
                  "name": "contract_address",
                  "nodeType": "VariableDeclaration",
                  "scope": 1239,
                  "src": "1268:24:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1209,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1268:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1267:26:8"
            },
            "returnParameters": {
              "id": 1215,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1214,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1239,
                  "src": "1356:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1213,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1356:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1355:9:8"
            },
            "scope": 1354,
            "src": "1246:461:8",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              1123
            ],
            "body": {
              "id": 1267,
              "nodeType": "Block",
              "src": "1847:317:8",
              "statements": [
                {
                  "assignments": [
                    1247,
                    1249
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1247,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1267,
                      "src": "1858:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1246,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1858:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1249,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 1267,
                      "src": "1872:23:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1248,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1872:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1257,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "646576656c6f7065724465706f7369742829",
                            "id": 1254,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1945:20:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_68a188555ef73f807c4687e8df06f685079a49c05ea78098ad47cc042fda0a32",
                              "typeString": "literal_string \"developerDeposit()\""
                            },
                            "value": "developerDeposit()"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_68a188555ef73f807c4687e8df06f685079a49c05ea78098ad47cc042fda0a32",
                              "typeString": "literal_string \"developerDeposit()\""
                            }
                          ],
                          "expression": {
                            "id": 1252,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "1921:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "1921:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 1255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1921:45:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 1250,
                        "name": "precompile",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1149,
                        "src": "1899:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1251,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "src": "1899:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 1256,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1899:68:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1857:110:8"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "1986:121:8",
                    "statements": [
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2018:79:8",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "returnData",
                                        "nodeType": "YulIdentifier",
                                        "src": "2047:10:8"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2059:4:8",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2043:3:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2043:21:8"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "2066:14:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2066:16:8"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2036:6:8"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2036:47:8"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2036:47:8"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "success",
                              "nodeType": "YulIdentifier",
                              "src": "2006:7:8"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2015:1:8",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "eq",
                            "nodeType": "YulIdentifier",
                            "src": "2003:2:8"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2003:14:8"
                        },
                        "nodeType": "YulIf",
                        "src": "2000:2:8"
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 1249,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "2047:10:8",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1247,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "2006:7:8",
                      "valueSize": 1
                    }
                  ],
                  "id": 1258,
                  "nodeType": "InlineAssembly",
                  "src": "1977:130:8"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1261,
                        "name": "returnData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1249,
                        "src": "2135:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 1263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2148:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 1262,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2148:7:8",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 1264,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2147:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      ],
                      "expression": {
                        "id": 1259,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "2124:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 1260,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "2124:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 1265,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2124:33:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1245,
                  "id": 1266,
                  "nodeType": "Return",
                  "src": "2117:40:8"
                }
              ]
            },
            "documentation": {
              "id": 1240,
              "nodeType": "StructuredDocumentation",
              "src": "1713:62:8",
              "text": " @dev Returns the const of DeveloperDeposit."
            },
            "functionSelector": "68a18855",
            "id": 1268,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "developerDeposit",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1242,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "1820:8:8"
            },
            "parameters": {
              "id": 1241,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1805:2:8"
            },
            "returnParameters": {
              "id": 1245,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1244,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1268,
                  "src": "1838:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1243,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1838:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1837:9:8"
            },
            "scope": 1354,
            "src": "1780:384:8",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              1128
            ],
            "body": {
              "id": 1296,
              "nodeType": "Block",
              "src": "2298:314:8",
              "statements": [
                {
                  "assignments": [
                    1276,
                    1278
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1276,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1296,
                      "src": "2309:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1275,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2309:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1278,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 1296,
                      "src": "2323:23:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1277,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "2323:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1286,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "6465706c6f796d656e744665652829",
                            "id": 1283,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2396:17:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f2cff57f0abc25f3c2a8e5c35e406e8af803a06a53ecbe494f2cb682b509c33f",
                              "typeString": "literal_string \"deploymentFee()\""
                            },
                            "value": "deploymentFee()"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_f2cff57f0abc25f3c2a8e5c35e406e8af803a06a53ecbe494f2cb682b509c33f",
                              "typeString": "literal_string \"deploymentFee()\""
                            }
                          ],
                          "expression": {
                            "id": 1281,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "2372:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1282,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "2372:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 1284,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2372:42:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 1279,
                        "name": "precompile",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1149,
                        "src": "2350:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1280,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "staticcall",
                      "nodeType": "MemberAccess",
                      "src": "2350:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) view returns (bool,bytes memory)"
                      }
                    },
                    "id": 1285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2350:65:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2308:107:8"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "2434:121:8",
                    "statements": [
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "2466:79:8",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "returnData",
                                        "nodeType": "YulIdentifier",
                                        "src": "2495:10:8"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "2507:4:8",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "2491:3:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2491:21:8"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "2514:14:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "2514:16:8"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "2484:6:8"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2484:47:8"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "2484:47:8"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "success",
                              "nodeType": "YulIdentifier",
                              "src": "2454:7:8"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2463:1:8",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "eq",
                            "nodeType": "YulIdentifier",
                            "src": "2451:2:8"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2451:14:8"
                        },
                        "nodeType": "YulIf",
                        "src": "2448:2:8"
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 1278,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "2495:10:8",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1276,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "2454:7:8",
                      "valueSize": 1
                    }
                  ],
                  "id": 1287,
                  "nodeType": "InlineAssembly",
                  "src": "2425:130:8"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 1290,
                        "name": "returnData",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1278,
                        "src": "2583:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "components": [
                          {
                            "id": 1292,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2596:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 1291,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "2596:7:8",
                              "typeDescriptions": {}
                            }
                          }
                        ],
                        "id": 1293,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2595:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        }
                      ],
                      "expression": {
                        "id": 1288,
                        "name": "abi",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4294967295,
                        "src": "2572:3:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_abi",
                          "typeString": "abi"
                        }
                      },
                      "id": 1289,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "decode",
                      "nodeType": "MemberAccess",
                      "src": "2572:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                        "typeString": "function () pure"
                      }
                    },
                    "id": 1294,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2572:33:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 1274,
                  "id": 1295,
                  "nodeType": "Return",
                  "src": "2565:40:8"
                }
              ]
            },
            "documentation": {
              "id": 1269,
              "nodeType": "StructuredDocumentation",
              "src": "2170:59:8",
              "text": " @dev Returns the const of DeploymentFee."
            },
            "functionSelector": "f2cff57f",
            "id": 1297,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deploymentFee",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1271,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2271:8:8"
            },
            "parameters": {
              "id": 1270,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2256:2:8"
            },
            "returnParameters": {
              "id": 1274,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1273,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1297,
                  "src": "2289:7:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 1272,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2289:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2288:9:8"
            },
            "scope": 1354,
            "src": "2234:378:8",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "baseFunctions": [
              1137
            ],
            "body": {
              "id": 1352,
              "nodeType": "Block",
              "src": "2893:628:8",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1314,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1309,
                          "name": "contract_address",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1300,
                          "src": "2911:16:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 1312,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2939:1:8",
                              "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": 1311,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2931:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1310,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2931:7:8",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2931:10:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2911:30:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "537461746552656e743a2074686520636f6e74726163745f6164647265737320697320746865207a65726f2061646472657373",
                        "id": 1315,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2943:53:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f478f172e5af71333c41ab3f363c53929becde4da96e89c5244cca13d187db33",
                          "typeString": "literal_string \"StateRent: the contract_address is the zero address\""
                        },
                        "value": "StateRent: the contract_address is the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f478f172e5af71333c41ab3f363c53929becde4da96e89c5244cca13d187db33",
                          "typeString": "literal_string \"StateRent: the contract_address is the zero address\""
                        }
                      ],
                      "id": 1308,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2903:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1316,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2903:94:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1317,
                  "nodeType": "ExpressionStatement",
                  "src": "2903:94:8"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1324,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 1319,
                          "name": "new_maintainer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1302,
                          "src": "3015:14:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 1322,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3041:1:8",
                              "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": 1321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3033:7:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1320,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "3033:7:8",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 1323,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3033:10:8",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3015:28:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "537461746552656e743a20746865206e65775f6d61696e7461696e657220697320746865207a65726f2061646472657373",
                        "id": 1325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3045:51:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2f15ee5b66fda5a6fe58bc59ea2e40dbd490974800ee8b88b65bff2b15710029",
                          "typeString": "literal_string \"StateRent: the new_maintainer is the zero address\""
                        },
                        "value": "StateRent: the new_maintainer is the zero address"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2f15ee5b66fda5a6fe58bc59ea2e40dbd490974800ee8b88b65bff2b15710029",
                          "typeString": "literal_string \"StateRent: the new_maintainer is the zero address\""
                        }
                      ],
                      "id": 1318,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3007:7:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 1326,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3007:90:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1327,
                  "nodeType": "ExpressionStatement",
                  "src": "3007:90:8"
                },
                {
                  "assignments": [
                    1329,
                    1331
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1329,
                      "mutability": "mutable",
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 1352,
                      "src": "3109:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1328,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3109:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1331,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "scope": 1352,
                      "src": "3123:23:8",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1330,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "3123:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 1343,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "hexValue": "7472616e736665724d61696e7461696e657228616464726573732c616464726573732c6164647265737329",
                            "id": 1336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3190:45:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ee0d2e124942e77e13cc7a858ab527317024b0429fdaf314e734ad3499c03944",
                              "typeString": "literal_string \"transferMaintainer(address,address,address)\""
                            },
                            "value": "transferMaintainer(address,address,address)"
                          },
                          {
                            "expression": {
                              "id": 1337,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "3237:3:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1338,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "3237:10:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1339,
                            "name": "contract_address",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1300,
                            "src": "3249:16:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 1340,
                            "name": "new_maintainer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1302,
                            "src": "3267:14:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_stringliteral_ee0d2e124942e77e13cc7a858ab527317024b0429fdaf314e734ad3499c03944",
                              "typeString": "literal_string \"transferMaintainer(address,address,address)\""
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 1334,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "3166:3:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 1335,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodeWithSignature",
                          "nodeType": "MemberAccess",
                          "src": "3166:23:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function (string memory) pure returns (bytes memory)"
                          }
                        },
                        "id": 1341,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3166:116:8",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 1332,
                        "name": "precompile",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1149,
                        "src": "3150:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1333,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "call",
                      "nodeType": "MemberAccess",
                      "src": "3150:15:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                      }
                    },
                    "id": 1342,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3150:133:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                      "typeString": "tuple(bool,bytes memory)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3108:175:8"
                },
                {
                  "AST": {
                    "nodeType": "YulBlock",
                    "src": "3302:121:8",
                    "statements": [
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "3334:79:8",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "returnData",
                                        "nodeType": "YulIdentifier",
                                        "src": "3363:10:8"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3375:4:8",
                                        "type": "",
                                        "value": "0x20"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "3359:3:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3359:21:8"
                                  },
                                  {
                                    "arguments": [],
                                    "functionName": {
                                      "name": "returndatasize",
                                      "nodeType": "YulIdentifier",
                                      "src": "3382:14:8"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3382:16:8"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "3352:6:8"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "3352:47:8"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "3352:47:8"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "name": "success",
                              "nodeType": "YulIdentifier",
                              "src": "3322:7:8"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3331:1:8",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "eq",
                            "nodeType": "YulIdentifier",
                            "src": "3319:2:8"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3319:14:8"
                        },
                        "nodeType": "YulIf",
                        "src": "3316:2:8"
                      }
                    ]
                  },
                  "evmVersion": "istanbul",
                  "externalReferences": [
                    {
                      "declaration": 1331,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3363:10:8",
                      "valueSize": 1
                    },
                    {
                      "declaration": 1329,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "3322:7:8",
                      "valueSize": 1
                    }
                  ],
                  "id": 1344,
                  "nodeType": "InlineAssembly",
                  "src": "3293:130:8"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 1346,
                        "name": "contract_address",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1300,
                        "src": "3460:16:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 1347,
                        "name": "new_maintainer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1302,
                        "src": "3478:14:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1345,
                      "name": "TransferredMaintainer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1101,
                      "src": "3438:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 1348,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3438:55:8",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1349,
                  "nodeType": "EmitStatement",
                  "src": "3433:60:8"
                },
                {
                  "expression": {
                    "hexValue": "74727565",
                    "id": 1350,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3510:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 1307,
                  "id": 1351,
                  "nodeType": "Return",
                  "src": "3503:11:8"
                }
              ]
            },
            "documentation": {
              "id": 1298,
              "nodeType": "StructuredDocumentation",
              "src": "2618:139:8",
              "text": " @dev Transfer the maintainer of the contract.\n Returns a boolean value indicating whether the operation succeeded."
            },
            "functionSelector": "cfbd33d7",
            "id": 1353,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "transferMaintainer",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 1304,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "2869:8:8"
            },
            "parameters": {
              "id": 1303,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1300,
                  "mutability": "mutable",
                  "name": "contract_address",
                  "nodeType": "VariableDeclaration",
                  "scope": 1353,
                  "src": "2799:24:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1299,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2799:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1302,
                  "mutability": "mutable",
                  "name": "new_maintainer",
                  "nodeType": "VariableDeclaration",
                  "scope": 1353,
                  "src": "2833:22:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 1301,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2833:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2789:72:8"
            },
            "returnParameters": {
              "id": 1307,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1306,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1353,
                  "src": "2887:4:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1305,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2887:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2886:6:8"
            },
            "scope": 1354,
            "src": "2762:759:8",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 1355,
        "src": "99:3424:8"
      }
    ],
    "src": "46:3478:8"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.0+commit.c7dfd78e.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.1",
  "updatedAt": "2021-11-23T02:17:24.079Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "deploymentFee()": {
        "details": "Returns the const of DeploymentFee."
      },
      "developerDeposit()": {
        "details": "Returns the const of DeveloperDeposit."
      },
      "maintainerOf(address)": {
        "details": "Returns the maintainer of the contract."
      },
      "newContractExtraBytes()": {
        "details": "Returns the const of NewContractExtraBytes."
      },
      "storageDepositPerByte()": {
        "details": "Returns the const of StorageDepositPerByte."
      },
      "transferMaintainer(address,address)": {
        "details": "Transfer the maintainer of the contract. Returns a boolean value indicating whether the operation succeeded."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}