{
  "contractName": "SoloLiquidityProxy",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "soloMarginAddress",
          "type": "address"
        },
        {
          "internalType": "address payable",
          "name": "wethAddress",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "stateMutability": "payable",
      "type": "fallback"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "registerPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "marketId",
          "type": "uint256"
        }
      ],
      "name": "deregisterPool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        }
      ],
      "name": "getRepaymentAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        }
      ],
      "name": "getTotalReserve",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        }
      ],
      "name": "getRepaymentAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        }
      ],
      "name": "borrow",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "number",
              "type": "uint256"
            }
          ],
          "internalType": "struct Types.AccountInfo",
          "name": "accountInfo",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "callFunction",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.7.3+commit.9bfce1f6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"soloMarginAddress\",\"type\":\"address\"},{\"internalType\":\"address payable\",\"name\":\"wethAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"number\",\"type\":\"uint256\"}],\"internalType\":\"struct Types.AccountInfo\",\"name\":\"accountInfo\",\"type\":\"tuple\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"callFunction\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"deregisterPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"getRepaymentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"getRepaymentAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"getTotalReserve\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"marketId\",\"type\":\"uint256\"}],\"name\":\"registerPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"callFunction(address,(address,uint256),bytes)\":{\"params\":{\"accountInfo\":\"The account from which the data is being sent\",\"data\":\"Arbitrary data given by the sender\",\"sender\":\"The msg.sender to Solo\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"callFunction(address,(address,uint256),bytes)\":{\"notice\":\"Allows users to send this contract arbitrary data.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/dydx/SoloLiquidityProxy.sol\":\"SoloLiquidityProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvocationHook.sol\":{\"keccak256\":\"0x36fb31db8a8e7eed7038b37554582655826969a556005d8ee3ab5070fe034860\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e0dde70be03ea1e086a5bce0d3a7bb1ac65549eab7ea2618343255332edddca7\",\"dweb:/ipfs/QmVaQG686g3tbgM3L3mtw4ei1WxzcDRcS9UxipSt4KCYs1\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvoker.sol\":{\"keccak256\":\"0x8a9fcbe16fdb00f3b5f32c528564cf4ba5c47ed9741a673973087d4d604e0b5a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b4af56bf9d2bd95bddca2156c6eea65c5caf0117d9a99d6cc575ac2c329bd672\",\"dweb:/ipfs/QmTxg3NpWNAxaVHKYU1cdVboo962auWmq5pmS9XvXcXNAF\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/BalanceCarrier.sol\":{\"keccak256\":\"0x69e63e482d839c831c8c32f002e6454f6a8d9e602b39e9cdc1c0649451df3337\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0a40661372b8f95cbed7714a16323b435ccbe85205178d32bc6012e47bfc0640\",\"dweb:/ipfs/QmTyHr1Ag4AkcyazzTT5GDcWabAMHPTrELoGhL85ZWDgBy\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/ExternalCaller.sol\":{\"keccak256\":\"0x54f88a1f0ac5dd7ab99a0519124cb09f1e19b4efb9baf240bc2500f8caa0b4ff\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3170671378d20b47498224d065e33fccc223ae772d7f0af2c5ef314f94b75c98\",\"dweb:/ipfs/Qme8ZEEBnBG5Vvj8uyJCD2YVPcLx6funKsSSCpGkTyn1zi\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/IWETH.sol\":{\"keccak256\":\"0x714f003eb93b5f91739e36fdc22ba3eaca8c82a83d11013b1dc776d63aa242cb\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://47d70bd07837927806c759fe38c1fc8933bc8de2e4f56f6c234ca5e338ded961\",\"dweb:/ipfs/QmeDYFtSUQVG1fQEXgVMh2AE2fs3rGYnG8L8C7uK4fDWg9\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/WETHHandler.sol\":{\"keccak256\":\"0x5fb1478553b344b7bf23aa86ed0eabc424b3463570ce95651bf2c341b0312c9f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a0617b46289ba31a4dfff0dbd294aec021969e0f2143bb5598e9e71060f21455\",\"dweb:/ipfs/QmefJFyX2wUJzFmYJffBEqK4tukgwuFvUerYjwfBYNwbQL\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/ILiquidityProxy.sol\":{\"keccak256\":\"0xd463abb162d0ce2e2d1a5f80b6b1254857e8800b930b4d8d1c3557c444d6363d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1c65c049566e4b8586ffb7ab62018d49f09d8f915450f6e79a0db84e4500fffb\",\"dweb:/ipfs/QmNSjMiWsY2Tt9eMYyNf3oGTFWDJjnWpgmVWTY6zKBAy3f\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/dydx/ICallee.sol\":{\"keccak256\":\"0xa9b64126eb7872118430e6f217903d82fa6be3f7ac240eb744b9313feac2baa4\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://cf4a6bdd4de3254fef36a4ca761d4b84ae1295dc63351571a13a3e6081ff6598\",\"dweb:/ipfs/Qmf41m5ZHnzt342H6gkWZBXz2XxhqfLa5QrngTsWjH8ZPD\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/dydx/ISoloMargin.sol\":{\"keccak256\":\"0xa84cb90af092bf862ff4f94fa0efef844dbc7f1be6cb10cb698c3e5c23c6c603\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c0abc2f5c91d4a7c5b82fa86c604280bfab8aaee1118da7678aec102de320cda\",\"dweb:/ipfs/QmRUXv3xYQdXZskrfNjNi3S7oYBQud2gSsQ4LLmeEgE9ap\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/dydx/SoloLiquidityProxy.sol\":{\"keccak256\":\"0x48d271228de2d50d81ee2efb4da127a203e0aad536059c30cae8c6da92ee64f9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b9dfd67c7539976c202d7233b04fb51ed5d2992858d0c61ca90bb35ab006adc6\",\"dweb:/ipfs/QmTiyaTpQENeo8Pkf3tZrLmYpTjbr3CTKDYpAbrP41QRto\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/dydx/Types.sol\":{\"keccak256\":\"0x6ed571153190f3dd335ef6979ee462c6edbf519b0f5b4ca0d469ac7ed39b9d72\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b9ed752bdc9d722648483115bc6bbc40c6566ba6f3ea6c1a6dea56706dfcdba3\",\"dweb:/ipfs/QmYzqrrEnrL3ALyrQZATiobh696caMHMe1V8GsmtsoVYb2\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x910a2e625b71168563edf9eeef55a50d6d699acfe27ceba3921f291829a8f938\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://248246ac66e6479dce1ad7d4945ec5540c98ceb09881e93c93f7c48d5772925c\",\"dweb:/ipfs/QmXr8tmUiZgEYid6ixeeBRmTdUnASWjKzhP3KRxMPy8fRt\"]},\"@openzeppelin/contracts/access/Ownable.sol\":{\"keccak256\":\"0x46d2453e9db55eae25c9abdae2c42229086c54f1a6a247e8ce32658bb785f6ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://198ef77ef5d9f7a7709d6bbfba1d4d54d82ccc15358e9dced37f1376dac887fa\",\"dweb:/ipfs/QmQHFvCA74s3AHU3NMn4AAYzFTt6UotWq7yk3WzLQs1oJS\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xba96bc371ba999f452985a98717cca1e4c4abb598dc038a9a9c3db08129b1ba4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e50e3f7b6482fb6f598f2e006994a74aa492687daa4b3eee7fd4fb5398ce7f\",\"dweb:/ipfs/QmZudqoPSkA4USLMFsBBmt19dDPZFS8aaAmL5R7pECXu6t\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}",
  "bytecode": "0x6080604052600060035560006004556040518060800160405280600015158152602001600060018111156200003057fe5b8152602001600060018111156200004357fe5b81526020016000815250600560008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548160ff021916908360018111156200009457fe5b021790555060408201518160000160026101000a81548160ff02191690836001811115620000be57fe5b02179055506060820151816001015550506040518060200160405280600081525060079080519060200190620000f6929190620002b2565b503480156200010457600080fd5b50604051620031333803806200313383398181016040528101906200012a919062000386565b80600160006200013f620002aa60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505062000443565b600033905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002f557805160ff191683800117855562000326565b8280016001018555821562000326579182015b828111156200032557825182559160200191906001019062000308565b5b50905062000335919062000339565b5090565b5b80821115620003545760008160009055506001016200033a565b5090565b60008151905062000369816200040f565b92915050565b600081519050620003808162000429565b92915050565b600080604083850312156200039a57600080fd5b6000620003aa8582860162000358565b9250506020620003bd858286016200036f565b9150509250929050565b6000620003d482620003ef565b9050919050565b6000620003e882620003ef565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6200041a81620003c7565b81146200042657600080fd5b50565b6200043481620003db565b81146200044057600080fd5b50565b612ce080620004536000396000f3fe6080604052600436106100955760003560e01c80638b418713116100595780638b4187131461016d5780638da5cb5b14610196578063aa819057146101c1578063c32dc3b6146101fe578063f2fde38b1461023b5761009c565b80630c9386571461009e5780634b8a3529146100c7578063549d0d84146100f0578063680c7b9414610119578063715018a6146101565761009c565b3661009c57005b005b3480156100aa57600080fd5b506100c560048036038101906100c091906120e1565b610264565b005b3480156100d357600080fd5b506100ee60048036038101906100e9919061207c565b6105ea565b005b3480156100fc57600080fd5b50610117600480360381019061011291906120e1565b6108d5565b005b34801561012557600080fd5b50610140600480360381019061013b9190611fc3565b610b4f565b60405161014d91906127f4565b60405180910390f35b34801561016257600080fd5b5061016b610b59565b005b34801561017957600080fd5b50610194600480360381019061018f9190612015565b610cac565b005b3480156101a257600080fd5b506101ab610f4c565b6040516101b891906127f4565b60405180910390f35b3480156101cd57600080fd5b506101e860048036038101906101e3919061207c565b610f75565b6040516101f591906129da565b60405180910390f35b34801561020a57600080fd5b5061022560048036038101906102209190611fc3565b610f89565b60405161023291906129da565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190611fc3565b61106f565b005b61026c611231565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146102f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f0906129ba565b60405180910390fd5b60006103ae600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663062bd3e9846040518263ffffffff1660e01b815260040161035991906129da565b60206040518083038186803b15801561037157600080fd5b505afa158015610385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a99190611fec565b611239565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104179061291a565b60405180910390fd5b81600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600a600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610517816112a0565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610593929190612838565b602060405180830381600087803b1580156105ad57600080fd5b505af11580156105c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e591906120b8565b505050565b33600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e819055506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506060600367ffffffffffffffff811180156106b457600080fd5b506040519080825280602002602001820160405280156106ee57816020015b6106db611dde565b8152602001906001900390816106d35790505b5090506106fb8484611307565b8160008151811061070857fe5b602002602001018190525061071b611455565b8160018151811061072857fe5b60200260200101819052506107468461074186866115e9565b611622565b8160028151811061075357fe5b60200260200101819052506060600167ffffffffffffffff8111801561077857600080fd5b506040519080825280602002602001820160405280156107b257816020015b61079f611e4a565b8152602001906001900390816107975790505b5090506107bd611770565b816000815181106107ca57fe5b60200260200101819052508273ffffffffffffffffffffffffffffffffffffffff1663a67a6a4582846040518363ffffffff1660e01b8152600401610810929190612861565b600060405180830381600087803b15801561082a57600080fd5b505af115801561083e573d6000803e3d6000fd5b505050506000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e819055505050505050565b6108dd611231565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610961906129ba565b60405180910390fd5b6000600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610a9b816112a0565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006040518363ffffffff1660e01b8152600401610af892919061280f565b602060405180830381600087803b158015610b1257600080fd5b505af1158015610b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4a91906120b8565b505050565b6000309050919050565b610b61611231565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be5906129ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d359061299a565b60405180910390fd5b600173ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610da157610da0600e546117a9565b5b610df2600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e5461190a565b610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e289061297a565b60405180910390fd5b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16630a5ca4e86040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b50505050600173ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610f4657610f45610f40600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e546115e9565b611a0c565b5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610f8183836115e9565b905092915050565b6000610f9482611ad5565b8015610fa65750610fa482611b2b565b155b1561106557610fb4826112a0565b73ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161100e91906127f4565b60206040518083038186803b15801561102657600080fd5b505afa15801561103a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105e919061210a565b905061106a565b600090505b919050565b611077611231565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fb906129ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116b906128da565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146112965781611299565b60015b9050919050565b6000600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146112dc5781611300565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b9050919050565b61130f611dde565b6040518061010001604052806001600881111561132857fe5b81526020016000815260200160405180608001604052806000151581526020016000600181111561135557fe5b81526020016000600181111561136757fe5b815260200185815250815260200161137e85611c23565b815260200160045481526020013073ffffffffffffffffffffffffffffffffffffffff168152602001600354815260200160078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114455780601f1061141a57610100808354040283529160200191611445565b820191906000526020600020905b81548152906001019060200180831161142857829003601f168201915b5050505050815250905092915050565b61145d611dde565b60405180610100016040528060088081111561147557fe5b81526020016000815260200160056040518060800160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660018111156114c757fe5b60018111156114d257fe5b81526020016000820160029054906101000a900460ff1660018111156114f457fe5b60018111156114ff57fe5b81526020016001820154815250508152602001600454815260200160045481526020013073ffffffffffffffffffffffffffffffffffffffff168152602001600354815260200160078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115dc5780601f106115b1576101008083540402835291602001916115dc565b820191906000526020600020905b8154815290600101906020018083116115bf57829003601f168201915b5050505050815250905090565b600061161a60026115f985611c23565b10611605576002611608565b60015b60ff1683611c6c90919063ffffffff16565b905092915050565b61162a611dde565b6040518061010001604052806000600881111561164357fe5b81526020016000815260200160405180608001604052806001151581526020016000600181111561167057fe5b81526020016000600181111561168257fe5b815260200185815250815260200161169985611c23565b815260200160045481526020013073ffffffffffffffffffffffffffffffffffffffff168152602001600354815260200160078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117605780601f1061173557610100808354040283529160200191611760565b820191906000526020600020905b81548152906001019060200180831161174357829003601f168201915b5050505050815250905092915050565b611778611e4a565b60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff1681526020016001815250905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161180a91906127f4565b60206040518083038186803b15801561182257600080fd5b505afa158015611836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185a919061210a565b101561189b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118929061295a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b81526004016118d491906129da565b600060405180830381600087803b1580156118ee57600080fd5b505af1158015611902573d6000803e3d6000fd5b505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156119755761196c8383611cc1565b60019050611a05565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016119b0929190612838565b602060405180830381600087803b1580156119ca57600080fd5b505af11580156119de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0291906120b8565b90505b9392505050565b80471015611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a46906128ba565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611ab957600080fd5b505af1158015611acd573d6000803e3d6000fd5b505050505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ac7d17c826040518263ffffffff1660e01b8152600401611bcb91906129da565b60206040518083038186803b158015611be357600080fd5b505afa158015611bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1b91906120b8565b915050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080828401905083811015611cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cae906128fa565b60405180910390fd5b8091505092915050565b80471015611d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfb9061293a565b60405180910390fd5b611d1e828260405180602001604052806000815250611d22565b5050565b600060608473ffffffffffffffffffffffffffffffffffffffff168484604051611d4c91906127dd565b60006040518083038185875af1925050503d8060008114611d89576040519150601f19603f3d011682016040523d82523d6000602084013e611d8e565b606091505b5091509150818190611dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcd9190612898565b60405180910390fd5b505050505050565b60405180610100016040528060006008811115611df757fe5b815260200160008152602001611e0b611e7a565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b604051806080016040528060001515815260200160006001811115611e9b57fe5b815260200160006001811115611ead57fe5b8152602001600081525090565b600081359050611ec981612c65565b92915050565b600081519050611ede81612c65565b92915050565b600081519050611ef381612c7c565b92915050565b600082601f830112611f0a57600080fd5b8135611f1d611f1882612a26565b6129f5565b91508082526020830160208301858383011115611f3957600080fd5b611f44838284612bd4565b50505092915050565b600060408284031215611f5f57600080fd5b611f6960406129f5565b90506000611f7984828501611eba565b6000830152506020611f8d84828501611f99565b60208301525092915050565b600081359050611fa881612c93565b92915050565b600081519050611fbd81612c93565b92915050565b600060208284031215611fd557600080fd5b6000611fe384828501611eba565b91505092915050565b600060208284031215611ffe57600080fd5b600061200c84828501611ecf565b91505092915050565b60008060006080848603121561202a57600080fd5b600061203886828701611eba565b935050602061204986828701611f4d565b925050606084013567ffffffffffffffff81111561206657600080fd5b61207286828701611ef9565b9150509250925092565b6000806040838503121561208f57600080fd5b600061209d85828601611eba565b92505060206120ae85828601611f99565b9150509250929050565b6000602082840312156120ca57600080fd5b60006120d884828501611ee4565b91505092915050565b6000602082840312156120f357600080fd5b600061210184828501611f99565b91505092915050565b60006020828403121561211c57600080fd5b600061212a84828501611fae565b91505092915050565b600061213f8383612688565b60408301905092915050565b600061215783836126b7565b905092915050565b61216881612b0b565b82525050565b61217781612b0b565b82525050565b600061218882612a76565b6121928185612abc565b935061219d83612a56565b8060005b838110156121ce5781516121b58882612133565b97506121c083612aa2565b9250506001810190506121a1565b5085935050505092915050565b60006121e682612a81565b6121f08185612acd565b93508360208202850161220285612a66565b8060005b8581101561223e578484038952815161221f858261214b565b945061222a83612aaf565b925060208a01995050600181019050612206565b50829750879550505050505092915050565b61225981612b1d565b82525050565b600061226a82612a8c565b6122748185612ade565b9350612284818560208601612be3565b61228d81612c18565b840191505092915050565b60006122a382612a8c565b6122ad8185612aef565b93506122bd818560208601612be3565b80840191505092915050565b6122d281612b8c565b82525050565b6122e181612b9e565b82525050565b6122f081612bb0565b82525050565b6122ff81612bc2565b82525050565b600061231082612a97565b61231a8185612afa565b935061232a818560208601612be3565b61233381612c18565b840191505092915050565b600061234b602583612afa565b91507f5745544848616e646c65723a206e6f7420656e6f75676820657468657220626160008301527f6c616e63650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006123b1602683612afa565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612417601b83612afa565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000612457603083612afa565b91507f536f6c6f4c697175696469747950726f78793a2063616e6e6f7420726567697360008301527f74657220656d707479206d61726b6574000000000000000000000000000000006020830152604082019050919050565b60006124bd602a83612afa565b91507f45787465726e616c43616c6c65723a20696e73756666696369656e742065746860008301527f65722062616c616e6365000000000000000000000000000000000000000000006020830152604082019050919050565b6000612523602483612afa565b91507f5745544848616e646c65723a206e6f7420656e6f75676820776574682062616c60008301527f616e6365000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612589602e83612afa565b91507f536f6c6f4c697175696469747950726f78793a207472616e7366657220746f2060008301527f696e766f6b6572206661696c65640000000000000000000000000000000000006020830152604082019050919050565b60006125ef602183612afa565b91507f536f6c6f4c697175696469747950726f78793a206e6f74207363686564756c6560008301527f64000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612655602083612afa565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60408201600082015161269e600085018261215f565b5060208201516126b160208501826127bf565b50505050565b6000610160830160008301516126d060008601826122c9565b5060208301516126e360208601826127bf565b5060408301516126f6604086018261276a565b50606083015161270960c08601826127bf565b50608083015161271c60e08601826127bf565b5060a083015161273061010086018261215f565b5060c08301516127446101208601826127bf565b5060e083015184820361014086015261275d828261225f565b9150508091505092915050565b6080820160008201516127806000850182612250565b50602082015161279360208501826122d8565b5060408201516127a660408501826122e7565b5060608201516127b960608501826127bf565b50505050565b6127c881612b82565b82525050565b6127d781612b82565b82525050565b60006127e98284612298565b915081905092915050565b6000602082019050612809600083018461216e565b92915050565b6000604082019050612824600083018561216e565b61283160208301846122f6565b9392505050565b600060408201905061284d600083018561216e565b61285a60208301846127ce565b9392505050565b6000604082019050818103600083015261287b818561217d565b9050818103602083015261288f81846121db565b90509392505050565b600060208201905081810360008301526128b28184612305565b905092915050565b600060208201905081810360008301526128d38161233e565b9050919050565b600060208201905081810360008301526128f3816123a4565b9050919050565b600060208201905081810360008301526129138161240a565b9050919050565b600060208201905081810360008301526129338161244a565b9050919050565b60006020820190508181036000830152612953816124b0565b9050919050565b6000602082019050818103600083015261297381612516565b9050919050565b600060208201905081810360008301526129938161257c565b9050919050565b600060208201905081810360008301526129b3816125e2565b9050919050565b600060208201905081810360008301526129d381612648565b9050919050565b60006020820190506129ef60008301846127ce565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612a1c57612a1b612c16565b5b8060405250919050565b600067ffffffffffffffff821115612a4157612a40612c16565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612b1682612b62565b9050919050565b60008115159050919050565b6000819050612b3782612c29565b919050565b6000819050612b4a82612c3d565b919050565b6000819050612b5d82612c51565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612b9782612b29565b9050919050565b6000612ba982612b3c565b9050919050565b6000612bbb82612b4f565b9050919050565b6000612bcd82612b82565b9050919050565b82818337600083830152505050565b60005b83811015612c01578082015181840152602081019050612be6565b83811115612c10576000848401525b50505050565bfe5b6000601f19601f8301169050919050565b60098110612c3a57612c39612c16565b5b50565b60028110612c4e57612c4d612c16565b5b50565b60028110612c6257612c61612c16565b5b50565b612c6e81612b0b565b8114612c7957600080fd5b50565b612c8581612b1d565b8114612c9057600080fd5b50565b612c9c81612b82565b8114612ca757600080fd5b5056fea26469706673582212204eaca7647fbf3320d25e46a90c6f2ea0c4158c7c73f0032edf310d5eede8aaf364736f6c63430007030033",
  "deployedBytecode": "0x6080604052600436106100955760003560e01c80638b418713116100595780638b4187131461016d5780638da5cb5b14610196578063aa819057146101c1578063c32dc3b6146101fe578063f2fde38b1461023b5761009c565b80630c9386571461009e5780634b8a3529146100c7578063549d0d84146100f0578063680c7b9414610119578063715018a6146101565761009c565b3661009c57005b005b3480156100aa57600080fd5b506100c560048036038101906100c091906120e1565b610264565b005b3480156100d357600080fd5b506100ee60048036038101906100e9919061207c565b6105ea565b005b3480156100fc57600080fd5b50610117600480360381019061011291906120e1565b6108d5565b005b34801561012557600080fd5b50610140600480360381019061013b9190611fc3565b610b4f565b60405161014d91906127f4565b60405180910390f35b34801561016257600080fd5b5061016b610b59565b005b34801561017957600080fd5b50610194600480360381019061018f9190612015565b610cac565b005b3480156101a257600080fd5b506101ab610f4c565b6040516101b891906127f4565b60405180910390f35b3480156101cd57600080fd5b506101e860048036038101906101e3919061207c565b610f75565b6040516101f591906129da565b60405180910390f35b34801561020a57600080fd5b5061022560048036038101906102209190611fc3565b610f89565b60405161023291906129da565b60405180910390f35b34801561024757600080fd5b50610262600480360381019061025d9190611fc3565b61106f565b005b61026c611231565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146102f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016102f0906129ba565b60405180910390fd5b60006103ae600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663062bd3e9846040518263ffffffff1660e01b815260040161035991906129da565b60206040518083038186803b15801561037157600080fd5b505afa158015610385573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103a99190611fec565b611239565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610420576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104179061291a565b60405180910390fd5b81600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600a600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610517816112a0565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610593929190612838565b602060405180830381600087803b1580156105ad57600080fd5b505af11580156105c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e591906120b8565b505050565b33600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600e819055506000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506060600367ffffffffffffffff811180156106b457600080fd5b506040519080825280602002602001820160405280156106ee57816020015b6106db611dde565b8152602001906001900390816106d35790505b5090506106fb8484611307565b8160008151811061070857fe5b602002602001018190525061071b611455565b8160018151811061072857fe5b60200260200101819052506107468461074186866115e9565b611622565b8160028151811061075357fe5b60200260200101819052506060600167ffffffffffffffff8111801561077857600080fd5b506040519080825280602002602001820160405280156107b257816020015b61079f611e4a565b8152602001906001900390816107975790505b5090506107bd611770565b816000815181106107ca57fe5b60200260200101819052508273ffffffffffffffffffffffffffffffffffffffff1663a67a6a4582846040518363ffffffff1660e01b8152600401610810929190612861565b600060405180830381600087803b15801561082a57600080fd5b505af115801561083e573d6000803e3d6000fd5b505050506000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e819055505050505050565b6108dd611231565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461096a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610961906129ba565b60405180910390fd5b6000600a600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610a9b816112a0565b73ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660006040518363ffffffff1660e01b8152600401610af892919061280f565b602060405180830381600087803b158015610b1257600080fd5b505af1158015610b26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b4a91906120b8565b505050565b6000309050919050565b610b61611231565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be5906129ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610d3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d359061299a565b60405180910390fd5b600173ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610da157610da0600e546117a9565b5b610df2600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e5461190a565b610e31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e289061297a565b60405180910390fd5b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16630a5ca4e86040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ea057600080fd5b505af1158015610eb4573d6000803e3d6000fd5b50505050600173ffffffffffffffffffffffffffffffffffffffff16600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610f4657610f45610f40600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e546115e9565b611a0c565b5b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610f8183836115e9565b905092915050565b6000610f9482611ad5565b8015610fa65750610fa482611b2b565b155b1561106557610fb4826112a0565b73ffffffffffffffffffffffffffffffffffffffff166370a08231600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161100e91906127f4565b60206040518083038186803b15801561102657600080fd5b505afa15801561103a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061105e919061210a565b905061106a565b600090505b919050565b611077611231565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fb906129ba565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116b906128da565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146112965781611299565b60015b9050919050565b6000600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146112dc5781611300565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b9050919050565b61130f611dde565b6040518061010001604052806001600881111561132857fe5b81526020016000815260200160405180608001604052806000151581526020016000600181111561135557fe5b81526020016000600181111561136757fe5b815260200185815250815260200161137e85611c23565b815260200160045481526020013073ffffffffffffffffffffffffffffffffffffffff168152602001600354815260200160078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114455780601f1061141a57610100808354040283529160200191611445565b820191906000526020600020905b81548152906001019060200180831161142857829003601f168201915b5050505050815250905092915050565b61145d611dde565b60405180610100016040528060088081111561147557fe5b81526020016000815260200160056040518060800160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900460ff1660018111156114c757fe5b60018111156114d257fe5b81526020016000820160029054906101000a900460ff1660018111156114f457fe5b60018111156114ff57fe5b81526020016001820154815250508152602001600454815260200160045481526020013073ffffffffffffffffffffffffffffffffffffffff168152602001600354815260200160078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115dc5780601f106115b1576101008083540402835291602001916115dc565b820191906000526020600020905b8154815290600101906020018083116115bf57829003601f168201915b5050505050815250905090565b600061161a60026115f985611c23565b10611605576002611608565b60015b60ff1683611c6c90919063ffffffff16565b905092915050565b61162a611dde565b6040518061010001604052806000600881111561164357fe5b81526020016000815260200160405180608001604052806001151581526020016000600181111561167057fe5b81526020016000600181111561168257fe5b815260200185815250815260200161169985611c23565b815260200160045481526020013073ffffffffffffffffffffffffffffffffffffffff168152602001600354815260200160078054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156117605780601f1061173557610100808354040283529160200191611760565b820191906000526020600020905b81548152906001019060200180831161174357829003601f168201915b5050505050815250905092915050565b611778611e4a565b60405180604001604052803073ffffffffffffffffffffffffffffffffffffffff1681526020016001815250905090565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161180a91906127f4565b60206040518083038186803b15801561182257600080fd5b505afa158015611836573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061185a919061210a565b101561189b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118929061295a565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d836040518263ffffffff1660e01b81526004016118d491906129da565b600060405180830381600087803b1580156118ee57600080fd5b505af1158015611902573d6000803e3d6000fd5b505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156119755761196c8383611cc1565b60019050611a05565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016119b0929190612838565b602060405180830381600087803b1580156119ca57600080fd5b505af11580156119de573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0291906120b8565b90505b9392505050565b80471015611a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a46906128ba565b60405180910390fd5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015611ab957600080fd5b505af1158015611acd573d6000803e3d6000fd5b505050505050565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600080600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635ac7d17c826040518263ffffffff1660e01b8152600401611bcb91906129da565b60206040518083038186803b158015611be357600080fd5b505afa158015611bf7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c1b91906120b8565b915050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080828401905083811015611cb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cae906128fa565b60405180910390fd5b8091505092915050565b80471015611d04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfb9061293a565b60405180910390fd5b611d1e828260405180602001604052806000815250611d22565b5050565b600060608473ffffffffffffffffffffffffffffffffffffffff168484604051611d4c91906127dd565b60006040518083038185875af1925050503d8060008114611d89576040519150601f19603f3d011682016040523d82523d6000602084013e611d8e565b606091505b5091509150818190611dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcd9190612898565b60405180910390fd5b505050505050565b60405180610100016040528060006008811115611df757fe5b815260200160008152602001611e0b611e7a565b81526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b604051806080016040528060001515815260200160006001811115611e9b57fe5b815260200160006001811115611ead57fe5b8152602001600081525090565b600081359050611ec981612c65565b92915050565b600081519050611ede81612c65565b92915050565b600081519050611ef381612c7c565b92915050565b600082601f830112611f0a57600080fd5b8135611f1d611f1882612a26565b6129f5565b91508082526020830160208301858383011115611f3957600080fd5b611f44838284612bd4565b50505092915050565b600060408284031215611f5f57600080fd5b611f6960406129f5565b90506000611f7984828501611eba565b6000830152506020611f8d84828501611f99565b60208301525092915050565b600081359050611fa881612c93565b92915050565b600081519050611fbd81612c93565b92915050565b600060208284031215611fd557600080fd5b6000611fe384828501611eba565b91505092915050565b600060208284031215611ffe57600080fd5b600061200c84828501611ecf565b91505092915050565b60008060006080848603121561202a57600080fd5b600061203886828701611eba565b935050602061204986828701611f4d565b925050606084013567ffffffffffffffff81111561206657600080fd5b61207286828701611ef9565b9150509250925092565b6000806040838503121561208f57600080fd5b600061209d85828601611eba565b92505060206120ae85828601611f99565b9150509250929050565b6000602082840312156120ca57600080fd5b60006120d884828501611ee4565b91505092915050565b6000602082840312156120f357600080fd5b600061210184828501611f99565b91505092915050565b60006020828403121561211c57600080fd5b600061212a84828501611fae565b91505092915050565b600061213f8383612688565b60408301905092915050565b600061215783836126b7565b905092915050565b61216881612b0b565b82525050565b61217781612b0b565b82525050565b600061218882612a76565b6121928185612abc565b935061219d83612a56565b8060005b838110156121ce5781516121b58882612133565b97506121c083612aa2565b9250506001810190506121a1565b5085935050505092915050565b60006121e682612a81565b6121f08185612acd565b93508360208202850161220285612a66565b8060005b8581101561223e578484038952815161221f858261214b565b945061222a83612aaf565b925060208a01995050600181019050612206565b50829750879550505050505092915050565b61225981612b1d565b82525050565b600061226a82612a8c565b6122748185612ade565b9350612284818560208601612be3565b61228d81612c18565b840191505092915050565b60006122a382612a8c565b6122ad8185612aef565b93506122bd818560208601612be3565b80840191505092915050565b6122d281612b8c565b82525050565b6122e181612b9e565b82525050565b6122f081612bb0565b82525050565b6122ff81612bc2565b82525050565b600061231082612a97565b61231a8185612afa565b935061232a818560208601612be3565b61233381612c18565b840191505092915050565b600061234b602583612afa565b91507f5745544848616e646c65723a206e6f7420656e6f75676820657468657220626160008301527f6c616e63650000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006123b1602683612afa565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612417601b83612afa565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000612457603083612afa565b91507f536f6c6f4c697175696469747950726f78793a2063616e6e6f7420726567697360008301527f74657220656d707479206d61726b6574000000000000000000000000000000006020830152604082019050919050565b60006124bd602a83612afa565b91507f45787465726e616c43616c6c65723a20696e73756666696369656e742065746860008301527f65722062616c616e6365000000000000000000000000000000000000000000006020830152604082019050919050565b6000612523602483612afa565b91507f5745544848616e646c65723a206e6f7420656e6f75676820776574682062616c60008301527f616e6365000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612589602e83612afa565b91507f536f6c6f4c697175696469747950726f78793a207472616e7366657220746f2060008301527f696e766f6b6572206661696c65640000000000000000000000000000000000006020830152604082019050919050565b60006125ef602183612afa565b91507f536f6c6f4c697175696469747950726f78793a206e6f74207363686564756c6560008301527f64000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612655602083612afa565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b60408201600082015161269e600085018261215f565b5060208201516126b160208501826127bf565b50505050565b6000610160830160008301516126d060008601826122c9565b5060208301516126e360208601826127bf565b5060408301516126f6604086018261276a565b50606083015161270960c08601826127bf565b50608083015161271c60e08601826127bf565b5060a083015161273061010086018261215f565b5060c08301516127446101208601826127bf565b5060e083015184820361014086015261275d828261225f565b9150508091505092915050565b6080820160008201516127806000850182612250565b50602082015161279360208501826122d8565b5060408201516127a660408501826122e7565b5060608201516127b960608501826127bf565b50505050565b6127c881612b82565b82525050565b6127d781612b82565b82525050565b60006127e98284612298565b915081905092915050565b6000602082019050612809600083018461216e565b92915050565b6000604082019050612824600083018561216e565b61283160208301846122f6565b9392505050565b600060408201905061284d600083018561216e565b61285a60208301846127ce565b9392505050565b6000604082019050818103600083015261287b818561217d565b9050818103602083015261288f81846121db565b90509392505050565b600060208201905081810360008301526128b28184612305565b905092915050565b600060208201905081810360008301526128d38161233e565b9050919050565b600060208201905081810360008301526128f3816123a4565b9050919050565b600060208201905081810360008301526129138161240a565b9050919050565b600060208201905081810360008301526129338161244a565b9050919050565b60006020820190508181036000830152612953816124b0565b9050919050565b6000602082019050818103600083015261297381612516565b9050919050565b600060208201905081810360008301526129938161257c565b9050919050565b600060208201905081810360008301526129b3816125e2565b9050919050565b600060208201905081810360008301526129d381612648565b9050919050565b60006020820190506129ef60008301846127ce565b92915050565b6000604051905081810181811067ffffffffffffffff82111715612a1c57612a1b612c16565b5b8060405250919050565b600067ffffffffffffffff821115612a4157612a40612c16565b5b601f19601f8301169050602081019050919050565b6000819050602082019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000612b1682612b62565b9050919050565b60008115159050919050565b6000819050612b3782612c29565b919050565b6000819050612b4a82612c3d565b919050565b6000819050612b5d82612c51565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000612b9782612b29565b9050919050565b6000612ba982612b3c565b9050919050565b6000612bbb82612b4f565b9050919050565b6000612bcd82612b82565b9050919050565b82818337600083830152505050565b60005b83811015612c01578082015181840152602081019050612be6565b83811115612c10576000848401525b50505050565bfe5b6000601f19601f8301169050919050565b60098110612c3a57612c39612c16565b5b50565b60028110612c4e57612c4d612c16565b5b50565b60028110612c6257612c61612c16565b5b50565b612c6e81612b0b565b8114612c7957600080fd5b50565b612c8581612b1d565b8114612c9057600080fd5b50565b612c9c81612b82565b8114612ca757600080fd5b5056fea26469706673582212204eaca7647fbf3320d25e46a90c6f2ea0c4158c7c73f0032edf310d5eede8aaf364736f6c63430007030033",
  "immutableReferences": {},
  "generatedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:1392:45",
        "statements": [
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "70:80:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "80:22:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "95:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "89:5:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "89:13:45"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "80:5:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "138:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "111:26:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "111:33:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "111:33:45"
                }
              ]
            },
            "name": "abi_decode_t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "48:6:45",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "56:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "64:5:45",
                "type": ""
              }
            ],
            "src": "7:143:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "227:88:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "237:22:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "252:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "246:5:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "246:13:45"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "237:5:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "303:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address_payable",
                      "nodeType": "YulIdentifier",
                      "src": "268:34:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "268:41:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "268:41:45"
                }
              ]
            },
            "name": "abi_decode_t_address_payable_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "205:6:45",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "213:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "221:5:45",
                "type": ""
              }
            ],
            "src": "156:159:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "423:350:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "469:16:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "478:1:45",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "481:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "471:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "471:12:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "471:12:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "444:7:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "453:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "440:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "440:23:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "465:2:45",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "436:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "436:32:45"
                  },
                  "nodeType": "YulIf",
                  "src": "433:2:45"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "495:126:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "509:15:45",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "523:1:45",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "513:6:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "537:74:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "583:9:45"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "594:6:45"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "579:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "579:22:45"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "603:7:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address_fromMemory",
                          "nodeType": "YulIdentifier",
                          "src": "547:31:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "547:64:45"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "537:6:45"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "631:135:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "645:16:45",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "659:2:45",
                        "type": "",
                        "value": "32"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "649:6:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "674:82:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "728:9:45"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "739:6:45"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "724:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "724:22:45"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "748:7:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address_payable_fromMemory",
                          "nodeType": "YulIdentifier",
                          "src": "684:39:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "684:72:45"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "674:6:45"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_address_payable_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "385:9:45",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "396:7:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "408:6:45",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "416:6:45",
                "type": ""
              }
            ],
            "src": "321:452:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "824:51:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "834:35:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "863:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint160",
                      "nodeType": "YulIdentifier",
                      "src": "845:17:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "845:24:45"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "834:7:45"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "806:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "816:7:45",
                "type": ""
              }
            ],
            "src": "779:96:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "934:51:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "944:35:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "973:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint160",
                      "nodeType": "YulIdentifier",
                      "src": "955:17:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "955:24:45"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "944:7:45"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_address_payable",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "916:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "926:7:45",
                "type": ""
              }
            ],
            "src": "881:104:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1036:81:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1046:65:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1061:5:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1068:42:45",
                        "type": "",
                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "1057:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1057:54:45"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "1046:7:45"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_uint160",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1018:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "1028:7:45",
                "type": ""
              }
            ],
            "src": "991:126:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1166:79:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1223:16:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1232:1:45",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1235:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1225:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1225:12:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1225:12:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "1189:5:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1214:5:45"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_address",
                              "nodeType": "YulIdentifier",
                              "src": "1196:17:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1196:24:45"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "1186:2:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1186:35:45"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1179:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1179:43:45"
                  },
                  "nodeType": "YulIf",
                  "src": "1176:2:45"
                }
              ]
            },
            "name": "validator_revert_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1159:5:45",
                "type": ""
              }
            ],
            "src": "1123:122:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1302:87:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1367:16:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1376:1:45",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1379:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1369:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1369:12:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1369:12:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "1325:5:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1358:5:45"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_address_payable",
                              "nodeType": "YulIdentifier",
                              "src": "1332:25:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1332:32:45"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "1322:2:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1322:43:45"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "1315:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1315:51:45"
                  },
                  "nodeType": "YulIf",
                  "src": "1312:2:45"
                }
              ]
            },
            "name": "validator_revert_t_address_payable",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1295:5:45",
                "type": ""
              }
            ],
            "src": "1251:138:45"
          }
        ]
      },
      "contents": "{\n\n    function abi_decode_t_address_fromMemory(offset, end) -> value {\n        value := mload(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_tuple_t_addresst_address_payable_fromMemory(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n        {\n            let offset := 0\n            value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n        {\n            let offset := 32\n            value1 := abi_decode_t_address_payable_fromMemory(add(headStart, offset), dataEnd)\n        }\n\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_uint160(value) -> cleaned {\n        cleaned := and(value, 0xffffffffffffffffffffffffffffffffffffffff)\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}\n",
      "id": 45,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:28053:45",
        "statements": [
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "59:87:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "69:29:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "91:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "78:12:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "78:20:45"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "69:5:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "134:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "107:26:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "107:33:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "107:33:45"
                }
              ]
            },
            "name": "abi_decode_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "37:6:45",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "45:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "53:5:45",
                "type": ""
              }
            ],
            "src": "7:139:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "215:80:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "225:22:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "240:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "234:5:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "234:13:45"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "225:5:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "283:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_address",
                      "nodeType": "YulIdentifier",
                      "src": "256:26:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "256:33:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "256:33:45"
                }
              ]
            },
            "name": "abi_decode_t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "193:6:45",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "201:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "209:5:45",
                "type": ""
              }
            ],
            "src": "152:143:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "361:77:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "371:22:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "386:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "380:5:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "380:13:45"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "371:5:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "426:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_bool",
                      "nodeType": "YulIdentifier",
                      "src": "402:23:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "402:30:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "402:30:45"
                }
              ]
            },
            "name": "abi_decode_t_bool_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "339:6:45",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "347:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "355:5:45",
                "type": ""
              }
            ],
            "src": "301:137:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "505:403:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "554:16:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "563:1:45",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "566:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "556:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "556:12:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "556:12:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "533:6:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "541:4:45",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "529:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "529:17:45"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "548:3:45"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "525:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "525:27:45"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "518:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "518:35:45"
                  },
                  "nodeType": "YulIf",
                  "src": "515:2:45"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "579:34:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "606:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "593:12:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "593:20:45"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "583:6:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "622:73:45",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "687:6:45"
                          }
                        ],
                        "functionName": {
                          "name": "array_allocation_size_t_bytes_memory_ptr",
                          "nodeType": "YulIdentifier",
                          "src": "646:40:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "646:48:45"
                      }
                    ],
                    "functionName": {
                      "name": "allocateMemory",
                      "nodeType": "YulIdentifier",
                      "src": "631:14:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "631:64:45"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "622:5:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "711:5:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "718:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "704:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "704:21:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "704:21:45"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "734:28:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "749:6:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "757:4:45",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "745:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "745:17:45"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "738:3:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "771:27:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "786:5:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "793:4:45",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "782:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "782:16:45"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "775:3:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "836:16:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "845:1:45",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "848:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "838:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "838:12:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "838:12:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "817:3:45"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "822:6:45"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "813:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "813:16:45"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "831:3:45"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "810:2:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "810:25:45"
                  },
                  "nodeType": "YulIf",
                  "src": "807:2:45"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "885:3:45"
                      },
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "890:3:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "895:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "copy_calldata_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "861:23:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "861:41:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "861:41:45"
                }
              ]
            },
            "name": "abi_decode_t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "483:6:45",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "491:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "499:5:45",
                "type": ""
              }
            ],
            "src": "444:464:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1030:427:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1074:16:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1083:1:45",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1086:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1076:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1076:12:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1076:12:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "1051:3:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1056:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1047:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1047:19:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1068:4:45",
                        "type": "",
                        "value": "0x40"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1043:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1043:30:45"
                  },
                  "nodeType": "YulIf",
                  "src": "1040:2:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1099:29:45",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1123:4:45",
                        "type": "",
                        "value": "0x40"
                      }
                    ],
                    "functionName": {
                      "name": "allocateMemory",
                      "nodeType": "YulIdentifier",
                      "src": "1108:14:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1108:20:45"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "1099:5:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "1138:150:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1174:15:45",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1188:1:45",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "1178:6:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1213:5:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1220:4:45",
                                "type": "",
                                "value": "0x00"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1209:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1209:16:45"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1252:9:45"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1263:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1248:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1248:22:45"
                              },
                              {
                                "name": "end",
                                "nodeType": "YulIdentifier",
                                "src": "1272:3:45"
                              }
                            ],
                            "functionName": {
                              "name": "abi_decode_t_address",
                              "nodeType": "YulIdentifier",
                              "src": "1227:20:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1227:49:45"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "1202:6:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1202:75:45"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1202:75:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "1298:152:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1335:16:45",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1349:2:45",
                        "type": "",
                        "value": "32"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "1339:6:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "1375:5:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "1382:4:45",
                                "type": "",
                                "value": "0x20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1371:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1371:16:45"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "headStart",
                                    "nodeType": "YulIdentifier",
                                    "src": "1414:9:45"
                                  },
                                  {
                                    "name": "offset",
                                    "nodeType": "YulIdentifier",
                                    "src": "1425:6:45"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "1410:3:45"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1410:22:45"
                              },
                              {
                                "name": "end",
                                "nodeType": "YulIdentifier",
                                "src": "1434:3:45"
                              }
                            ],
                            "functionName": {
                              "name": "abi_decode_t_uint256",
                              "nodeType": "YulIdentifier",
                              "src": "1389:20:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1389:49:45"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "1364:6:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1364:75:45"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "1364:75:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_t_struct$_AccountInfo_$3225_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1005:9:45",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "1016:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1024:5:45",
                "type": ""
              }
            ],
            "src": "946:511:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1515:87:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1525:29:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1547:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "1534:12:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1534:20:45"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "1525:5:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1590:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "1563:26:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1563:33:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1563:33:45"
                }
              ]
            },
            "name": "abi_decode_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "1493:6:45",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "1501:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1509:5:45",
                "type": ""
              }
            ],
            "src": "1463:139:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1671:80:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "1681:22:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1696:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1690:5:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1690:13:45"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "1681:5:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "1739:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "1712:26:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1712:33:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1712:33:45"
                }
              ]
            },
            "name": "abi_decode_t_uint256_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "1649:6:45",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "1657:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "1665:5:45",
                "type": ""
              }
            ],
            "src": "1608:143:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "1823:194:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1869:16:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1878:1:45",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1881:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1871:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1871:12:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1871:12:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1844:7:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "1853:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "1840:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1840:23:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1865:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "1836:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1836:32:45"
                  },
                  "nodeType": "YulIf",
                  "src": "1833:2:45"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "1895:115:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "1909:15:45",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "1923:1:45",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "1913:6:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "1937:63:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "1972:9:45"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1983:6:45"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1968:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1968:22:45"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "1992:7:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "1947:20:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1947:53:45"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "1937:6:45"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "1793:9:45",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "1804:7:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "1816:6:45",
                "type": ""
              }
            ],
            "src": "1757:260:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2100:205:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2146:16:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2155:1:45",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2158:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2148:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2148:12:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2148:12:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2121:7:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2130:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2117:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2117:23:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2142:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2113:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2113:32:45"
                  },
                  "nodeType": "YulIf",
                  "src": "2110:2:45"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "2172:126:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "2186:15:45",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2200:1:45",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "2190:6:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "2214:74:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "2260:9:45"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "2271:6:45"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2256:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2256:22:45"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2280:7:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address_fromMemory",
                          "nodeType": "YulIdentifier",
                          "src": "2224:31:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2224:64:45"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "2214:6:45"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2070:9:45",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2081:7:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2093:6:45",
                "type": ""
              }
            ],
            "src": "2023:282:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2449:578:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2496:16:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2505:1:45",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2508:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2498:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2498:12:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2498:12:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2470:7:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "2479:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "2466:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2466:23:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2491:3:45",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "2462:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2462:33:45"
                  },
                  "nodeType": "YulIf",
                  "src": "2459:2:45"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "2522:115:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "2536:15:45",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2550:1:45",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "2540:6:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "2564:63:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "2599:9:45"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "2610:6:45"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2595:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2595:22:45"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2619:7:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "2574:20:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2574:53:45"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "2564:6:45"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "2647:145:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "2661:16:45",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2675:2:45",
                        "type": "",
                        "value": "32"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "2665:6:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "2690:92:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "2754:9:45"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "2765:6:45"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2750:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2750:22:45"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "2774:7:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_struct$_AccountInfo_$3225_memory_ptr",
                          "nodeType": "YulIdentifier",
                          "src": "2700:49:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2700:82:45"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "2690:6:45"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "2802:218:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "2816:46:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "2847:9:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2858:2:45",
                                "type": "",
                                "value": "96"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2843:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2843:18:45"
                          }
                        ],
                        "functionName": {
                          "name": "calldataload",
                          "nodeType": "YulIdentifier",
                          "src": "2830:12:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2830:32:45"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "2820:6:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "2909:16:45",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2918:1:45",
                                  "type": "",
                                  "value": "0"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "2921:1:45",
                                  "type": "",
                                  "value": "0"
                                }
                              ],
                              "functionName": {
                                "name": "revert",
                                "nodeType": "YulIdentifier",
                                "src": "2911:6:45"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "2911:12:45"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "2911:12:45"
                          }
                        ]
                      },
                      "condition": {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2881:6:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2889:18:45",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "2878:2:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2878:30:45"
                      },
                      "nodeType": "YulIf",
                      "src": "2875:2:45"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "2938:72:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "2982:9:45"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "2993:6:45"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2978:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2978:22:45"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3002:7:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_bytes_memory_ptr",
                          "nodeType": "YulIdentifier",
                          "src": "2948:29:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2948:62:45"
                      },
                      "variableNames": [
                        {
                          "name": "value2",
                          "nodeType": "YulIdentifier",
                          "src": "2938:6:45"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_struct$_AccountInfo_$3225_memory_ptrt_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2403:9:45",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2414:7:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2426:6:45",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "2434:6:45",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "2442:6:45",
                "type": ""
              }
            ],
            "src": "2311:716:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3116:320:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3162:16:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3171:1:45",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3174:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3164:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3164:12:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3164:12:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3137:7:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3146:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3133:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3133:23:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3158:2:45",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3129:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3129:32:45"
                  },
                  "nodeType": "YulIf",
                  "src": "3126:2:45"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "3188:115:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "3202:15:45",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3216:1:45",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "3206:6:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "3230:63:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3265:9:45"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "3276:6:45"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3261:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3261:22:45"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3285:7:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "3240:20:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3240:53:45"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "3230:6:45"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "3313:116:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "3327:16:45",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3341:2:45",
                        "type": "",
                        "value": "32"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "3331:6:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "3356:63:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3391:9:45"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "3402:6:45"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3387:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3387:22:45"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3411:7:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "3366:20:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3366:53:45"
                      },
                      "variableNames": [
                        {
                          "name": "value1",
                          "nodeType": "YulIdentifier",
                          "src": "3356:6:45"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3078:9:45",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3089:7:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3101:6:45",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3109:6:45",
                "type": ""
              }
            ],
            "src": "3033:403:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3516:202:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3562:16:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3571:1:45",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3574:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3564:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3564:12:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3564:12:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3537:7:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3546:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3533:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3533:23:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3558:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3529:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3529:32:45"
                  },
                  "nodeType": "YulIf",
                  "src": "3526:2:45"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "3588:123:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "3602:15:45",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3616:1:45",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "3606:6:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "3630:71:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3673:9:45"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "3684:6:45"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3669:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3669:22:45"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3693:7:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_bool_fromMemory",
                          "nodeType": "YulIdentifier",
                          "src": "3640:28:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3640:61:45"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "3630:6:45"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bool_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3486:9:45",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3497:7:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3509:6:45",
                "type": ""
              }
            ],
            "src": "3442:276:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3790:194:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3836:16:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3845:1:45",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "3848:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3838:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3838:12:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3838:12:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3811:7:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3820:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3807:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3807:23:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3832:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3803:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3803:32:45"
                  },
                  "nodeType": "YulIf",
                  "src": "3800:2:45"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "3862:115:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "3876:15:45",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3890:1:45",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "3880:6:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "3904:63:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "3939:9:45"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "3950:6:45"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "3935:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "3935:22:45"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3959:7:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "3914:20:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3914:53:45"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "3904:6:45"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3760:9:45",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3771:7:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3783:6:45",
                "type": ""
              }
            ],
            "src": "3724:260:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4067:205:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4113:16:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4122:1:45",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "4125:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4115:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4115:12:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4115:12:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4088:7:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4097:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4084:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4084:23:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4109:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4080:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4080:32:45"
                  },
                  "nodeType": "YulIf",
                  "src": "4077:2:45"
                },
                {
                  "nodeType": "YulBlock",
                  "src": "4139:126:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "4153:15:45",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4167:1:45",
                        "type": "",
                        "value": "0"
                      },
                      "variables": [
                        {
                          "name": "offset",
                          "nodeType": "YulTypedName",
                          "src": "4157:6:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "4181:74:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "headStart",
                                "nodeType": "YulIdentifier",
                                "src": "4227:9:45"
                              },
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "4238:6:45"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "4223:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "4223:22:45"
                          },
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4247:7:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_decode_t_uint256_fromMemory",
                          "nodeType": "YulIdentifier",
                          "src": "4191:31:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4191:64:45"
                      },
                      "variableNames": [
                        {
                          "name": "value0",
                          "nodeType": "YulIdentifier",
                          "src": "4181:6:45"
                        }
                      ]
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4037:9:45",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4048:7:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4060:6:45",
                "type": ""
              }
            ],
            "src": "3990:282:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4416:157:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "4518:6:45"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "4526:3:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_struct$_AccountInfo_$3225_memory_ptr_to_t_struct$_AccountInfo_$3225_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "4426:91:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4426:104:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4426:104:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4539:28:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "4557:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4562:4:45",
                        "type": "",
                        "value": "0x40"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "4553:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4553:14:45"
                  },
                  "variableNames": [
                    {
                      "name": "updatedPos",
                      "nodeType": "YulIdentifier",
                      "src": "4539:10:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encodeUpdatedPos_t_struct$_AccountInfo_$3225_memory_ptr_to_t_struct$_AccountInfo_$3225_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4389:6:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "4397:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "updatedPos",
                "nodeType": "YulTypedName",
                "src": "4405:10:45",
                "type": ""
              }
            ],
            "src": "4278:295:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4715:132:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "4725:116:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "4829:6:45"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "4837:3:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_struct$_ActionArgs_$3220_memory_ptr_to_t_struct$_ActionArgs_$3220_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "4739:89:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4739:102:45"
                  },
                  "variableNames": [
                    {
                      "name": "updatedPos",
                      "nodeType": "YulIdentifier",
                      "src": "4725:10:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encodeUpdatedPos_t_struct$_ActionArgs_$3220_memory_ptr_to_t_struct$_ActionArgs_$3220_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4688:6:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "4696:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "updatedPos",
                "nodeType": "YulTypedName",
                "src": "4704:10:45",
                "type": ""
              }
            ],
            "src": "4579:268:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4908:53:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "4925:3:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "4948:5:45"
                          }
                        ],
                        "functionName": {
                          "name": "cleanup_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "4930:17:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4930:24:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "4918:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4918:37:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4918:37:45"
                }
              ]
            },
            "name": "abi_encode_t_address_to_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "4896:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "4903:3:45",
                "type": ""
              }
            ],
            "src": "4853:108:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5032:53:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "5049:3:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "5072:5:45"
                          }
                        ],
                        "functionName": {
                          "name": "cleanup_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "5054:17:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5054:24:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "5042:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5042:37:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "5042:37:45"
                }
              ]
            },
            "name": "abi_encode_t_address_to_t_address_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "5020:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "5027:3:45",
                "type": ""
              }
            ],
            "src": "4967:118:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5337:782:45",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5347:97:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "5438:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "array_length_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "5361:76:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5361:83:45"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "5351:6:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5453:122:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "5563:3:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "5568:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "5460:102:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5460:115:45"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "5453:3:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5584:100:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "5678:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "array_dataslot_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "5599:78:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5599:85:45"
                  },
                  "variables": [
                    {
                      "name": "baseRef",
                      "nodeType": "YulTypedName",
                      "src": "5588:7:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5693:21:45",
                  "value": {
                    "name": "baseRef",
                    "nodeType": "YulIdentifier",
                    "src": "5707:7:45"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "5697:6:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5783:311:45",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "5797:34:45",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "5824:6:45"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "5818:5:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5818:13:45"
                        },
                        "variables": [
                          {
                            "name": "elementValue0",
                            "nodeType": "YulTypedName",
                            "src": "5801:13:45",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5844:128:45",
                        "value": {
                          "arguments": [
                            {
                              "name": "elementValue0",
                              "nodeType": "YulIdentifier",
                              "src": "5953:13:45"
                            },
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "5968:3:45"
                            }
                          ],
                          "functionName": {
                            "name": "abi_encodeUpdatedPos_t_struct$_AccountInfo_$3225_memory_ptr_to_t_struct$_AccountInfo_$3225_memory_ptr",
                            "nodeType": "YulIdentifier",
                            "src": "5851:101:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5851:121:45"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "5844:3:45"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "5985:99:45",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "6077:6:45"
                            }
                          ],
                          "functionName": {
                            "name": "array_nextElement_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr",
                            "nodeType": "YulIdentifier",
                            "src": "5995:81:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5995:89:45"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "5985:6:45"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "5745:1:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "5748:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "5742:2:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5742:13:45"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "5756:18:45",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "5758:14:45",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "5767:1:45"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "5770:1:45",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "5763:3:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5763:9:45"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "5758:1:45"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "5727:14:45",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "5729:10:45",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "5738:1:45",
                          "type": "",
                          "value": "0"
                        },
                        "variables": [
                          {
                            "name": "i",
                            "nodeType": "YulTypedName",
                            "src": "5733:1:45",
                            "type": ""
                          }
                        ]
                      }
                    ]
                  },
                  "src": "5723:371:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6103:10:45",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "6110:3:45"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "6103:3:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "5316:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "5323:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "5332:3:45",
                "type": ""
              }
            ],
            "src": "5155:964:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6367:955:45",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6377:96:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "6467:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "array_length_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "6391:75:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6391:82:45"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "6381:6:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6482:121:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "6591:3:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "6596:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "6489:101:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6489:114:45"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "6482:3:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6612:20:45",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "6629:3:45"
                  },
                  "variables": [
                    {
                      "name": "headStart",
                      "nodeType": "YulTypedName",
                      "src": "6616:9:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6641:39:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "6657:3:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "6666:6:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6674:4:45",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "mul",
                          "nodeType": "YulIdentifier",
                          "src": "6662:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6662:17:45"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "6653:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6653:27:45"
                  },
                  "variables": [
                    {
                      "name": "tail",
                      "nodeType": "YulTypedName",
                      "src": "6645:4:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6689:99:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "6782:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "array_dataslot_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "6704:77:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6704:84:45"
                  },
                  "variables": [
                    {
                      "name": "baseRef",
                      "nodeType": "YulTypedName",
                      "src": "6693:7:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6797:21:45",
                  "value": {
                    "name": "baseRef",
                    "nodeType": "YulIdentifier",
                    "src": "6811:7:45"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "6801:6:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6887:390:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "6908:3:45"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "tail",
                                  "nodeType": "YulIdentifier",
                                  "src": "6917:4:45"
                                },
                                {
                                  "name": "headStart",
                                  "nodeType": "YulIdentifier",
                                  "src": "6923:9:45"
                                }
                              ],
                              "functionName": {
                                "name": "sub",
                                "nodeType": "YulIdentifier",
                                "src": "6913:3:45"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "6913:20:45"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "6901:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6901:33:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6901:33:45"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6947:34:45",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "6974:6:45"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "6968:5:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6968:13:45"
                        },
                        "variables": [
                          {
                            "name": "elementValue0",
                            "nodeType": "YulTypedName",
                            "src": "6951:13:45",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "6994:128:45",
                        "value": {
                          "arguments": [
                            {
                              "name": "elementValue0",
                              "nodeType": "YulIdentifier",
                              "src": "7102:13:45"
                            },
                            {
                              "name": "tail",
                              "nodeType": "YulIdentifier",
                              "src": "7117:4:45"
                            }
                          ],
                          "functionName": {
                            "name": "abi_encodeUpdatedPos_t_struct$_ActionArgs_$3220_memory_ptr_to_t_struct$_ActionArgs_$3220_memory_ptr",
                            "nodeType": "YulIdentifier",
                            "src": "7002:99:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7002:120:45"
                        },
                        "variableNames": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "6994:4:45"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7135:98:45",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "7226:6:45"
                            }
                          ],
                          "functionName": {
                            "name": "array_nextElement_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr",
                            "nodeType": "YulIdentifier",
                            "src": "7145:80:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7145:88:45"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "7135:6:45"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "7246:21:45",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "7257:3:45"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "7262:4:45",
                              "type": "",
                              "value": "0x20"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "7253:3:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7253:14:45"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "7246:3:45"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "6849:1:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "6852:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "6846:2:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6846:13:45"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "6860:18:45",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "6862:14:45",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "6871:1:45"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "6874:1:45",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "6867:3:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6867:9:45"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "6862:1:45"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "6831:14:45",
                    "statements": [
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "6833:10:45",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "6842:1:45",
                          "type": "",
                          "value": "0"
                        },
                        "variables": [
                          {
                            "name": "i",
                            "nodeType": "YulTypedName",
                            "src": "6837:1:45",
                            "type": ""
                          }
                        ]
                      }
                    ]
                  },
                  "src": "6827:450:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7286:11:45",
                  "value": {
                    "name": "tail",
                    "nodeType": "YulIdentifier",
                    "src": "7293:4:45"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "7286:3:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7306:10:45",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "7313:3:45"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "7306:3:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "6346:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "6353:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "6362:3:45",
                "type": ""
              }
            ],
            "src": "6187:1135:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7377:50:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "7394:3:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "7414:5:45"
                          }
                        ],
                        "functionName": {
                          "name": "cleanup_t_bool",
                          "nodeType": "YulIdentifier",
                          "src": "7399:14:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7399:21:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "7387:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7387:34:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7387:34:45"
                }
              ]
            },
            "name": "abi_encode_t_bool_to_t_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "7365:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "7372:3:45",
                "type": ""
              }
            ],
            "src": "7328:99:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7513:260:45",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7523:52:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "7569:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "array_length_t_bytes_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "7537:31:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7537:38:45"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "7527:6:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7584:67:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "7639:3:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "7644:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_bytes_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "7591:47:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7591:60:45"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "7584:3:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "7686:5:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7693:4:45",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7682:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7682:16:45"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "7700:3:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "7705:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "7660:21:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7660:52:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "7660:52:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7721:46:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "7732:3:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "7759:6:45"
                          }
                        ],
                        "functionName": {
                          "name": "round_up_to_mul_of_32",
                          "nodeType": "YulIdentifier",
                          "src": "7737:21:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7737:29:45"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "7728:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7728:39:45"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "7721:3:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "7494:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "7501:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "7509:3:45",
                "type": ""
              }
            ],
            "src": "7433:340:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7887:265:45",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7897:52:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "7943:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "array_length_t_bytes_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "7911:31:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7911:38:45"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "7901:6:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7958:95:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "8041:3:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "8046:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "7965:75:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7965:88:45"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "7958:3:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "8088:5:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8095:4:45",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8084:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8084:16:45"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "8102:3:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "8107:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "8062:21:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8062:52:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8062:52:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8123:23:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "8134:3:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "8139:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "8130:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8130:16:45"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "8123:3:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "7868:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "7875:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "7883:3:45",
                "type": ""
              }
            ],
            "src": "7779:373:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8226:79:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "8243:3:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "8292:5:45"
                          }
                        ],
                        "functionName": {
                          "name": "convert_t_enum$_ActionType_$3183_to_t_uint8",
                          "nodeType": "YulIdentifier",
                          "src": "8248:43:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8248:50:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8236:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8236:63:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8236:63:45"
                }
              ]
            },
            "name": "abi_encode_t_enum$_ActionType_$3183_to_t_uint8",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "8214:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "8221:3:45",
                "type": ""
              }
            ],
            "src": "8158:147:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8386:86:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "8403:3:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "8459:5:45"
                          }
                        ],
                        "functionName": {
                          "name": "convert_t_enum$_AssetDenomination_$3186_to_t_uint8",
                          "nodeType": "YulIdentifier",
                          "src": "8408:50:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8408:57:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8396:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8396:70:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8396:70:45"
                }
              ]
            },
            "name": "abi_encode_t_enum$_AssetDenomination_$3186_to_t_uint8",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "8374:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "8381:3:45",
                "type": ""
              }
            ],
            "src": "8311:161:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8550:83:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "8567:3:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "8620:5:45"
                          }
                        ],
                        "functionName": {
                          "name": "convert_t_enum$_AssetReference_$3189_to_t_uint8",
                          "nodeType": "YulIdentifier",
                          "src": "8572:47:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8572:54:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8560:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8560:67:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8560:67:45"
                }
              ]
            },
            "name": "abi_encode_t_enum$_AssetReference_$3189_to_t_uint8",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "8538:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "8545:3:45",
                "type": ""
              }
            ],
            "src": "8478:155:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8712:74:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "8729:3:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "8773:5:45"
                          }
                        ],
                        "functionName": {
                          "name": "convert_t_rational_0_by_1_to_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "8734:38:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8734:45:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "8722:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8722:58:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "8722:58:45"
                }
              ]
            },
            "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "8700:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "8707:3:45",
                "type": ""
              }
            ],
            "src": "8639:147:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8884:272:45",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8894:53:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "8941:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "array_length_t_string_memory_ptr",
                      "nodeType": "YulIdentifier",
                      "src": "8908:32:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8908:39:45"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "8898:6:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8956:78:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "9022:3:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "9027:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "8963:58:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8963:71:45"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "8956:3:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "9069:5:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9076:4:45",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9065:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9065:16:45"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "9083:3:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "9088:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "9043:21:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9043:52:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9043:52:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9104:46:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "9115:3:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "9142:6:45"
                          }
                        ],
                        "functionName": {
                          "name": "round_up_to_mul_of_32",
                          "nodeType": "YulIdentifier",
                          "src": "9120:21:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9120:29:45"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9111:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9111:39:45"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "9104:3:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "8865:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "8872:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "8880:3:45",
                "type": ""
              }
            ],
            "src": "8792:364:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9308:223:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "9318:74:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "9384:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9389:2:45",
                        "type": "",
                        "value": "37"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "9325:58:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9325:67:45"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "9318:3:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "9413:3:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9418:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9409:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9409:11:45"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9422:34:45",
                        "type": "",
                        "value": "WETHHandler: not enough ether ba"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9402:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9402:55:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9402:55:45"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "9478:3:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9483:2:45",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9474:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9474:12:45"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9488:7:45",
                        "type": "",
                        "value": "lance"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9467:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9467:29:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9467:29:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9506:19:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "9517:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9522:2:45",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9513:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9513:12:45"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "9506:3:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_12cbd338f3d380472e6e6f021fa4387f5d4c1cdea9b46c0fb1077fc4dfd79d34_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "9296:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "9304:3:45",
                "type": ""
              }
            ],
            "src": "9162:369:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9683:224:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "9693:74:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "9759:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9764:2:45",
                        "type": "",
                        "value": "38"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "9700:58:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9700:67:45"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "9693:3:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "9788:3:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9793:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9784:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9784:11:45"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9797:34:45",
                        "type": "",
                        "value": "Ownable: new owner is the zero a"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9777:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9777:55:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9777:55:45"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "9853:3:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9858:2:45",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9849:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9849:12:45"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "9863:8:45",
                        "type": "",
                        "value": "ddress"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "9842:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9842:30:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "9842:30:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9882:19:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "9893:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9898:2:45",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "9889:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9889:12:45"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "9882:3:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "9671:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "9679:3:45",
                "type": ""
              }
            ],
            "src": "9537:370:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10059:179:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "10069:74:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "10135:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10140:2:45",
                        "type": "",
                        "value": "27"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "10076:58:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10076:67:45"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "10069:3:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "10164:3:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10169:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10160:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10160:11:45"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10173:29:45",
                        "type": "",
                        "value": "SafeMath: addition overflow"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10153:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10153:50:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10153:50:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10213:19:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "10224:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10229:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10220:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10220:12:45"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "10213:3:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "10047:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "10055:3:45",
                "type": ""
              }
            ],
            "src": "9913:325:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10390:234:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "10400:74:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "10466:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10471:2:45",
                        "type": "",
                        "value": "48"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "10407:58:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10407:67:45"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "10400:3:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "10495:3:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10500:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10491:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10491:11:45"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10504:34:45",
                        "type": "",
                        "value": "SoloLiquidityProxy: cannot regis"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10484:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10484:55:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10484:55:45"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "10560:3:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10565:2:45",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10556:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10556:12:45"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10570:18:45",
                        "type": "",
                        "value": "ter empty market"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10549:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10549:40:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10549:40:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10599:19:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "10610:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10615:2:45",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10606:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10606:12:45"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "10599:3:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_325acd3716ec1c446e4602a383beb016d9ec685175702cd049a92ae420fe28a1_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "10378:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "10386:3:45",
                "type": ""
              }
            ],
            "src": "10244:380:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10776:228:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "10786:74:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "10852:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10857:2:45",
                        "type": "",
                        "value": "42"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "10793:58:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10793:67:45"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "10786:3:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "10881:3:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10886:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10877:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10877:11:45"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10890:34:45",
                        "type": "",
                        "value": "ExternalCaller: insufficient eth"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10870:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10870:55:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10870:55:45"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "10946:3:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10951:2:45",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10942:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10942:12:45"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "10956:12:45",
                        "type": "",
                        "value": "er balance"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "10935:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10935:34:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "10935:34:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10979:19:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "10990:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10995:2:45",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "10986:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10986:12:45"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "10979:3:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_47e615ef39653c375952ecbdf34324d193e406d0d78277c356aadb858054e8ce_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "10764:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "10772:3:45",
                "type": ""
              }
            ],
            "src": "10630:374:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11156:222:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "11166:74:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "11232:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11237:2:45",
                        "type": "",
                        "value": "36"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "11173:58:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11173:67:45"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "11166:3:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11261:3:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11266:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11257:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11257:11:45"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11270:34:45",
                        "type": "",
                        "value": "WETHHandler: not enough weth bal"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11250:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11250:55:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11250:55:45"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11326:3:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11331:2:45",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11322:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11322:12:45"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11336:6:45",
                        "type": "",
                        "value": "ance"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11315:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11315:28:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11315:28:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11353:19:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "11364:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11369:2:45",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11360:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11360:12:45"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "11353:3:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_6ba38f48388cccc2aad8df6212f9a1bd83ecc1af6e75fcd6ca310674b55e41d6_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "11144:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "11152:3:45",
                "type": ""
              }
            ],
            "src": "11010:368:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11530:232:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "11540:74:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "11606:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11611:2:45",
                        "type": "",
                        "value": "46"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "11547:58:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11547:67:45"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "11540:3:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11635:3:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11640:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11631:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11631:11:45"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11644:34:45",
                        "type": "",
                        "value": "SoloLiquidityProxy: transfer to "
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11624:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11624:55:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11624:55:45"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "11700:3:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11705:2:45",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11696:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11696:12:45"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "11710:16:45",
                        "type": "",
                        "value": "invoker failed"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "11689:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11689:38:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "11689:38:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11737:19:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "11748:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11753:2:45",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "11744:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11744:12:45"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "11737:3:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_6ee23ad3fd088e06cb3b515a08546b513b08fc6447a368fbe64a37067915d8c0_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "11518:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "11526:3:45",
                "type": ""
              }
            ],
            "src": "11384:378:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11914:219:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "11924:74:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "11990:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11995:2:45",
                        "type": "",
                        "value": "33"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "11931:58:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11931:67:45"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "11924:3:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "12019:3:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12024:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12015:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12015:11:45"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12028:34:45",
                        "type": "",
                        "value": "SoloLiquidityProxy: not schedule"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12008:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12008:55:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12008:55:45"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "12084:3:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12089:2:45",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12080:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12080:12:45"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12094:3:45",
                        "type": "",
                        "value": "d"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12073:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12073:25:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12073:25:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12108:19:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "12119:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12124:2:45",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12115:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12115:12:45"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "12108:3:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_8a2292a52ba49c99160c2313a505cb960546128d10b4e96c3ad0220c0cf8c647_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "11902:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "11910:3:45",
                "type": ""
              }
            ],
            "src": "11768:365:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12285:184:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "12295:74:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "12361:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12366:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "12302:58:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12302:67:45"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "12295:3:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "12390:3:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12395:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12386:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12386:11:45"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "12399:34:45",
                        "type": "",
                        "value": "Ownable: caller is not the owner"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "12379:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12379:55:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "12379:55:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12444:19:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "12455:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12460:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12451:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12451:12:45"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "12444:3:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "12273:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "12281:3:45",
                "type": ""
              }
            ],
            "src": "12139:330:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12649:394:45",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12659:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "12675:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12680:4:45",
                        "type": "",
                        "value": "0x40"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "12671:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12671:14:45"
                  },
                  "variables": [
                    {
                      "name": "tail",
                      "nodeType": "YulTypedName",
                      "src": "12663:4:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "12695:165:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "12731:43:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12761:5:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12768:4:45",
                                "type": "",
                                "value": "0x00"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "12757:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "12757:16:45"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "12751:5:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12751:23:45"
                      },
                      "variables": [
                        {
                          "name": "memberValue0",
                          "nodeType": "YulTypedName",
                          "src": "12735:12:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulIdentifier",
                            "src": "12821:12:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "12839:3:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12844:4:45",
                                "type": "",
                                "value": "0x00"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "12835:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "12835:14:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_t_address_to_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "12787:33:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12787:63:45"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "12787:63:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "12870:166:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "12907:43:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "12937:5:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "12944:4:45",
                                "type": "",
                                "value": "0x20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "12933:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "12933:16:45"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "12927:5:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12927:23:45"
                      },
                      "variables": [
                        {
                          "name": "memberValue0",
                          "nodeType": "YulTypedName",
                          "src": "12911:12:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulIdentifier",
                            "src": "12997:12:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "13015:3:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13020:4:45",
                                "type": "",
                                "value": "0x20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "13011:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13011:14:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_t_uint256_to_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "12963:33:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12963:63:45"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "12963:63:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_struct$_AccountInfo_$3225_memory_ptr_to_t_struct$_AccountInfo_$3225_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "12636:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "12643:3:45",
                "type": ""
              }
            ],
            "src": "12535:508:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13227:1658:45",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13237:28:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "13253:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13258:6:45",
                        "type": "",
                        "value": "0x0160"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13249:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13249:16:45"
                  },
                  "variables": [
                    {
                      "name": "tail",
                      "nodeType": "YulTypedName",
                      "src": "13241:4:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "13275:183:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "13316:43:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "13346:5:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13353:4:45",
                                "type": "",
                                "value": "0x00"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "13342:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13342:16:45"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "13336:5:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13336:23:45"
                      },
                      "variables": [
                        {
                          "name": "memberValue0",
                          "nodeType": "YulTypedName",
                          "src": "13320:12:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulIdentifier",
                            "src": "13419:12:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "13437:3:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13442:4:45",
                                "type": "",
                                "value": "0x00"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "13433:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13433:14:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_t_enum$_ActionType_$3183_to_t_uint8",
                          "nodeType": "YulIdentifier",
                          "src": "13372:46:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13372:76:45"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "13372:76:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "13468:169:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "13508:43:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "13538:5:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13545:4:45",
                                "type": "",
                                "value": "0x20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "13534:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13534:16:45"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "13528:5:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13528:23:45"
                      },
                      "variables": [
                        {
                          "name": "memberValue0",
                          "nodeType": "YulTypedName",
                          "src": "13512:12:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulIdentifier",
                            "src": "13598:12:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "13616:3:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13621:4:45",
                                "type": "",
                                "value": "0x20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "13612:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13612:14:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_t_uint256_to_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "13564:33:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13564:63:45"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "13564:63:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "13647:224:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "13684:43:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "13714:5:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13721:4:45",
                                "type": "",
                                "value": "0x40"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "13710:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13710:16:45"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "13704:5:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13704:23:45"
                      },
                      "variables": [
                        {
                          "name": "memberValue0",
                          "nodeType": "YulTypedName",
                          "src": "13688:12:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulIdentifier",
                            "src": "13832:12:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "13850:3:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13855:4:45",
                                "type": "",
                                "value": "0x40"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "13846:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13846:14:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_t_struct$_AssetAmount_$3198_memory_ptr_to_t_struct$_AssetAmount_$3198_memory_ptr",
                          "nodeType": "YulIdentifier",
                          "src": "13740:91:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13740:121:45"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "13740:121:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "13881:175:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "13927:43:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "13957:5:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13964:4:45",
                                "type": "",
                                "value": "0x60"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "13953:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13953:16:45"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "13947:5:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13947:23:45"
                      },
                      "variables": [
                        {
                          "name": "memberValue0",
                          "nodeType": "YulTypedName",
                          "src": "13931:12:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulIdentifier",
                            "src": "14017:12:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "14035:3:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14040:4:45",
                                "type": "",
                                "value": "0xc0"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "14031:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14031:14:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_t_uint256_to_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "13983:33:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13983:63:45"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "13983:63:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "14066:177:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "14114:43:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "14144:5:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14151:4:45",
                                "type": "",
                                "value": "0x80"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "14140:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14140:16:45"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "14134:5:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14134:23:45"
                      },
                      "variables": [
                        {
                          "name": "memberValue0",
                          "nodeType": "YulTypedName",
                          "src": "14118:12:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulIdentifier",
                            "src": "14204:12:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "14222:3:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14227:4:45",
                                "type": "",
                                "value": "0xe0"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "14218:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14218:14:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_t_uint256_to_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "14170:33:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14170:63:45"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "14170:63:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "14253:174:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "14296:43:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "14326:5:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14333:4:45",
                                "type": "",
                                "value": "0xa0"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "14322:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14322:16:45"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "14316:5:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14316:23:45"
                      },
                      "variables": [
                        {
                          "name": "memberValue0",
                          "nodeType": "YulTypedName",
                          "src": "14300:12:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulIdentifier",
                            "src": "14386:12:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "14404:3:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14409:6:45",
                                "type": "",
                                "value": "0x0100"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "14400:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14400:16:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_t_address_to_t_address",
                          "nodeType": "YulIdentifier",
                          "src": "14352:33:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14352:65:45"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "14352:65:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "14437:176:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "14482:43:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "14512:5:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14519:4:45",
                                "type": "",
                                "value": "0xc0"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "14508:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14508:16:45"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "14502:5:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14502:23:45"
                      },
                      "variables": [
                        {
                          "name": "memberValue0",
                          "nodeType": "YulTypedName",
                          "src": "14486:12:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulIdentifier",
                            "src": "14572:12:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "14590:3:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14595:6:45",
                                "type": "",
                                "value": "0x0120"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "14586:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14586:16:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_t_uint256_to_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "14538:33:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14538:65:45"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "14538:65:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "14623:235:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "14658:43:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "14688:5:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14695:4:45",
                                "type": "",
                                "value": "0xe0"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "14684:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14684:16:45"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "14678:5:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14678:23:45"
                      },
                      "variables": [
                        {
                          "name": "memberValue0",
                          "nodeType": "YulTypedName",
                          "src": "14662:12:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "14726:3:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14731:6:45",
                                "type": "",
                                "value": "0x0140"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "14722:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14722:16:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "tail",
                                "nodeType": "YulIdentifier",
                                "src": "14744:4:45"
                              },
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "14750:3:45"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "14740:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14740:14:45"
                          }
                        ],
                        "functionName": {
                          "name": "mstore",
                          "nodeType": "YulIdentifier",
                          "src": "14715:6:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14715:40:45"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "14715:40:45"
                    },
                    {
                      "nodeType": "YulAssignment",
                      "src": "14768:79:45",
                      "value": {
                        "arguments": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulIdentifier",
                            "src": "14828:12:45"
                          },
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "14842:4:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr",
                          "nodeType": "YulIdentifier",
                          "src": "14776:51:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14776:71:45"
                      },
                      "variableNames": [
                        {
                          "name": "tail",
                          "nodeType": "YulIdentifier",
                          "src": "14768:4:45"
                        }
                      ]
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14868:11:45",
                  "value": {
                    "name": "tail",
                    "nodeType": "YulIdentifier",
                    "src": "14875:4:45"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "14868:3:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_struct$_ActionArgs_$3220_memory_ptr_to_t_struct$_ActionArgs_$3220_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "13206:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "13213:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "13222:3:45",
                "type": ""
              }
            ],
            "src": "13107:1778:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15065:778:45",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15075:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "15091:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15096:4:45",
                        "type": "",
                        "value": "0x80"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "15087:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15087:14:45"
                  },
                  "variables": [
                    {
                      "name": "tail",
                      "nodeType": "YulTypedName",
                      "src": "15079:4:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "15111:158:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "15146:43:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "15176:5:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15183:4:45",
                                "type": "",
                                "value": "0x00"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "15172:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "15172:16:45"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "15166:5:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15166:23:45"
                      },
                      "variables": [
                        {
                          "name": "memberValue0",
                          "nodeType": "YulTypedName",
                          "src": "15150:12:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulIdentifier",
                            "src": "15230:12:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "15248:3:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15253:4:45",
                                "type": "",
                                "value": "0x00"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "15244:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "15244:14:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_t_bool_to_t_bool",
                          "nodeType": "YulIdentifier",
                          "src": "15202:27:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15202:57:45"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "15202:57:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "15279:192:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "15322:43:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "15352:5:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15359:4:45",
                                "type": "",
                                "value": "0x20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "15348:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "15348:16:45"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "15342:5:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15342:23:45"
                      },
                      "variables": [
                        {
                          "name": "memberValue0",
                          "nodeType": "YulTypedName",
                          "src": "15326:12:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulIdentifier",
                            "src": "15432:12:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "15450:3:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15455:4:45",
                                "type": "",
                                "value": "0x20"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "15446:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "15446:14:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_t_enum$_AssetDenomination_$3186_to_t_uint8",
                          "nodeType": "YulIdentifier",
                          "src": "15378:53:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15378:83:45"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "15378:83:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "15481:180:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "15515:43:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "15545:5:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15552:4:45",
                                "type": "",
                                "value": "0x40"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "15541:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "15541:16:45"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "15535:5:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15535:23:45"
                      },
                      "variables": [
                        {
                          "name": "memberValue0",
                          "nodeType": "YulTypedName",
                          "src": "15519:12:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulIdentifier",
                            "src": "15622:12:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "15640:3:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15645:4:45",
                                "type": "",
                                "value": "0x40"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "15636:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "15636:14:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_t_enum$_AssetReference_$3189_to_t_uint8",
                          "nodeType": "YulIdentifier",
                          "src": "15571:50:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15571:80:45"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "15571:80:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulBlock",
                  "src": "15671:165:45",
                  "statements": [
                    {
                      "nodeType": "YulVariableDeclaration",
                      "src": "15707:43:45",
                      "value": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "15737:5:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15744:4:45",
                                "type": "",
                                "value": "0x60"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "15733:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "15733:16:45"
                          }
                        ],
                        "functionName": {
                          "name": "mload",
                          "nodeType": "YulIdentifier",
                          "src": "15727:5:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15727:23:45"
                      },
                      "variables": [
                        {
                          "name": "memberValue0",
                          "nodeType": "YulTypedName",
                          "src": "15711:12:45",
                          "type": ""
                        }
                      ]
                    },
                    {
                      "expression": {
                        "arguments": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulIdentifier",
                            "src": "15797:12:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "pos",
                                "nodeType": "YulIdentifier",
                                "src": "15815:3:45"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15820:4:45",
                                "type": "",
                                "value": "0x60"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "15811:3:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "15811:14:45"
                          }
                        ],
                        "functionName": {
                          "name": "abi_encode_t_uint256_to_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "15763:33:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15763:63:45"
                      },
                      "nodeType": "YulExpressionStatement",
                      "src": "15763:63:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_t_struct$_AssetAmount_$3198_memory_ptr_to_t_struct$_AssetAmount_$3198_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "15052:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "15059:3:45",
                "type": ""
              }
            ],
            "src": "14951:892:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15904:53:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "15921:3:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "15944:5:45"
                          }
                        ],
                        "functionName": {
                          "name": "cleanup_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "15926:17:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15926:24:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15914:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15914:37:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15914:37:45"
                }
              ]
            },
            "name": "abi_encode_t_uint256_to_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "15892:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "15899:3:45",
                "type": ""
              }
            ],
            "src": "15849:108:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16028:53:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "16045:3:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "16068:5:45"
                          }
                        ],
                        "functionName": {
                          "name": "cleanup_t_uint256",
                          "nodeType": "YulIdentifier",
                          "src": "16050:17:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16050:24:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16038:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16038:37:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16038:37:45"
                }
              ]
            },
            "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "16016:5:45",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "16023:3:45",
                "type": ""
              }
            ],
            "src": "15963:118:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16221:137:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "16232:100:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "16319:6:45"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "16328:3:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "16239:79:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16239:93:45"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "16232:3:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16342:10:45",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "16349:3:45"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "16342:3:45"
                    }
                  ]
                }
              ]
            },
            "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": "16200:3:45",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "16206:6:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "16217:3:45",
                "type": ""
              }
            ],
            "src": "16087:271:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16462:124:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "16472:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16484:9:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16495:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "16480:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16480:18:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "16472:4:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "16552:6:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16565:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16576:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16561:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16561:17:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_address_to_t_address_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "16508:43:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16508:71:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16508:71:45"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "16434:9:45",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "16446:6:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "16457:4:45",
                "type": ""
              }
            ],
            "src": "16364:222:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16726:214:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "16736:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16748:9:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16759:2:45",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "16744:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16744:18:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "16736:4:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "16816:6:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16829:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16840:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16825:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16825:17:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_address_to_t_address_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "16772:43:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16772:71:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16772:71:45"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "16905:6:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16918:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16929:2:45",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16914:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16914:18:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_rational_0_by_1_to_t_uint256_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "16853:51:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16853:80:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16853:80:45"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_rational_0_by_1__to_t_address_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "16690:9:45",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "16702:6:45",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "16710:6:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "16721:4:45",
                "type": ""
              }
            ],
            "src": "16592:348:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17072:206:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "17082:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17094:9:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17105:2:45",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17090:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17090:18:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "17082:4:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "17162:6:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17175:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17186:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17171:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17171:17:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_address_to_t_address_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "17118:43:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17118:71:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17118:71:45"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "17243:6:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17256:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17267:2:45",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17252:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17252:18:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "17199:43:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17199:72:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17199:72:45"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "17036:9:45",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "17048:6:45",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "17056:6:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "17067:4:45",
                "type": ""
              }
            ],
            "src": "16946:332:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17624:522:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "17634:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17646:9:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "17657:2:45",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17642:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17642:18:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "17634:4:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17681:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17692:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17677:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17677:17:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "17700:4:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17706:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "17696:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17696:20:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17670:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17670:47:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17670:47:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17726:174:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "17886:6:45"
                      },
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "17895:4:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "17734:151:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17734:166:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "17726:4:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17921:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "17932:2:45",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17917:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17917:18:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "17941:4:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17947:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "17937:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17937:20:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17910:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17910:48:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17910:48:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17967:172:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "18125:6:45"
                      },
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "18134:4:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "17975:149:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17975:164:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "17967:4:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "17588:9:45",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "17600:6:45",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "17608:6:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "17619:4:45",
                "type": ""
              }
            ],
            "src": "17284:862:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18270:195:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "18280:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18292:9:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18303:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "18288:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18288:18:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18280:4:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18327:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18338:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18323:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18323:17:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "18346:4:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18352:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "18342:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18342:20:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18316:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18316:47:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18316:47:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18372:86:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "18444:6:45"
                      },
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "18453:4:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "18380:63:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18380:78:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18372:4:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18242:9:45",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "18254:6:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18265:4:45",
                "type": ""
              }
            ],
            "src": "18152:313:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18642:248:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "18652:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18664:9:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18675:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "18660:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18660:18:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18652:4:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18699:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18710:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18695:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18695:17:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "18718:4:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18724:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "18714:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18714:20:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18688:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18688:47:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18688:47:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18744:139:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "18878:4:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_12cbd338f3d380472e6e6f021fa4387f5d4c1cdea9b46c0fb1077fc4dfd79d34_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "18752:124:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18752:131:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18744:4:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_12cbd338f3d380472e6e6f021fa4387f5d4c1cdea9b46c0fb1077fc4dfd79d34__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18622:9:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18637:4:45",
                "type": ""
              }
            ],
            "src": "18471:419:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19067:248:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "19077:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19089:9:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19100:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19085:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19085:18:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19077:4:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19124:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19135:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19120:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19120:17:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "19143:4:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19149:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "19139:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19139:20:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19113:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19113:47:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19113:47:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "19169:139:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "19303:4:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "19177:124:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19177:131:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19169:4:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19047:9:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19062:4:45",
                "type": ""
              }
            ],
            "src": "18896:419:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19492:248:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "19502:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19514:9:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19525:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19510:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19510:18:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19502:4:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19549:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19560:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19545:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19545:17:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "19568:4:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19574:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "19564:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19564:20:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19538:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19538:47:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19538:47:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "19594:139:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "19728:4:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "19602:124:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19602:131:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19594:4:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19472:9:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19487:4:45",
                "type": ""
              }
            ],
            "src": "19321:419:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19917:248:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "19927:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19939:9:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19950:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19935:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19935:18:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19927:4:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19974:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19985:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19970:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19970:17:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "19993:4:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19999:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "19989:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19989:20:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19963:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19963:47:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19963:47:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "20019:139:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "20153:4:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_325acd3716ec1c446e4602a383beb016d9ec685175702cd049a92ae420fe28a1_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "20027:124:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20027:131:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20019:4:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_325acd3716ec1c446e4602a383beb016d9ec685175702cd049a92ae420fe28a1__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19897:9:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19912:4:45",
                "type": ""
              }
            ],
            "src": "19746:419:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20342:248:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "20352:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20364:9:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20375:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20360:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20360:18:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20352:4:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20399:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20410:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20395:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20395:17:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "20418:4:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20424:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "20414:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20414:20:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20388:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20388:47:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20388:47:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "20444:139:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "20578:4:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_47e615ef39653c375952ecbdf34324d193e406d0d78277c356aadb858054e8ce_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "20452:124:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20452:131:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20444:4:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_47e615ef39653c375952ecbdf34324d193e406d0d78277c356aadb858054e8ce__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20322:9:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20337:4:45",
                "type": ""
              }
            ],
            "src": "20171:419:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20767:248:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "20777:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20789:9:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20800:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20785:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20785:18:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20777:4:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20824:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20835:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20820:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20820:17:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "20843:4:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20849:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "20839:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20839:20:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20813:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20813:47:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20813:47:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "20869:139:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "21003:4:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_6ba38f48388cccc2aad8df6212f9a1bd83ecc1af6e75fcd6ca310674b55e41d6_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "20877:124:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20877:131:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20869:4:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_6ba38f48388cccc2aad8df6212f9a1bd83ecc1af6e75fcd6ca310674b55e41d6__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20747:9:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20762:4:45",
                "type": ""
              }
            ],
            "src": "20596:419:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21192:248:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "21202:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21214:9:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21225:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21210:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21210:18:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "21202:4:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21249:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21260:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21245:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21245:17:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "21268:4:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21274:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "21264:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21264:20:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21238:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21238:47:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21238:47:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21294:139:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "21428:4:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_6ee23ad3fd088e06cb3b515a08546b513b08fc6447a368fbe64a37067915d8c0_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "21302:124:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21302:131:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "21294:4:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_6ee23ad3fd088e06cb3b515a08546b513b08fc6447a368fbe64a37067915d8c0__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "21172:9:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "21187:4:45",
                "type": ""
              }
            ],
            "src": "21021:419:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21617:248:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "21627:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21639:9:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21650:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21635:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21635:18:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "21627:4:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21674:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21685:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21670:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21670:17:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "21693:4:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21699:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "21689:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21689:20:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21663:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21663:47:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21663:47:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21719:139:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "21853:4:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_8a2292a52ba49c99160c2313a505cb960546128d10b4e96c3ad0220c0cf8c647_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "21727:124:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21727:131:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "21719:4:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_8a2292a52ba49c99160c2313a505cb960546128d10b4e96c3ad0220c0cf8c647__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "21597:9:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "21612:4:45",
                "type": ""
              }
            ],
            "src": "21446:419:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22042:248:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "22052:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22064:9:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22075:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "22060:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22060:18:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "22052:4:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22099:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22110:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22095:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22095:17:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail",
                            "nodeType": "YulIdentifier",
                            "src": "22118:4:45"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22124:9:45"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "22114:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22114:20:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22088:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22088:47:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22088:47:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "22144:139:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "tail",
                        "nodeType": "YulIdentifier",
                        "src": "22278:4:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "22152:124:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22152:131:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "22144:4:45"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "22022:9:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "22037:4:45",
                "type": ""
              }
            ],
            "src": "21871:419:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22394:124:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "22404:26:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22416:9:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22427:2:45",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "22412:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22412:18:45"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "22404:4:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "22484:6:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22497:9:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22508:1:45",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22493:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22493:17:45"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_t_uint256_to_t_uint256_fromStack",
                      "nodeType": "YulIdentifier",
                      "src": "22440:43:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22440:71:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22440:71:45"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256__to_t_uint256__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "22366:9:45",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "22378:6:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "22389:4:45",
                "type": ""
              }
            ],
            "src": "22296:222:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22564:238:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "22574:19:45",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22590:2:45",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "22584:5:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22584:9:45"
                  },
                  "variableNames": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulIdentifier",
                      "src": "22574:6:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "22602:35:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "22624:6:45"
                      },
                      {
                        "name": "size",
                        "nodeType": "YulIdentifier",
                        "src": "22632:4:45"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "22620:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22620:17:45"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "22606:10:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "22748:17:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error",
                            "nodeType": "YulIdentifier",
                            "src": "22750:11:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "22750:13:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "22750:13:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "22691:10:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22703:18:45",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "22688:2:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22688:34:45"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "22727:10:45"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "22739:6:45"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "22724:2:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22724:22:45"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "22685:2:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22685:62:45"
                  },
                  "nodeType": "YulIf",
                  "src": "22682:2:45"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22781:2:45",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "22785:10:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22774:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22774:22:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22774:22:45"
                }
              ]
            },
            "name": "allocateMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "22548:4:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "22557:6:45",
                "type": ""
              }
            ],
            "src": "22524:278:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22874:260:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "22979:17:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error",
                            "nodeType": "YulIdentifier",
                            "src": "22981:11:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "22981:13:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "22981:13:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "22951:6:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22959:18:45",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "22948:2:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22948:30:45"
                  },
                  "nodeType": "YulIf",
                  "src": "22945:2:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23026:41:45",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "23042:6:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23050:4:45",
                            "type": "",
                            "value": "0x1f"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23038:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23038:17:45"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23061:4:45",
                            "type": "",
                            "value": "0x1f"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "23057:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23057:9:45"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "23034:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23034:33:45"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "23026:4:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23104:23:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "size",
                        "nodeType": "YulIdentifier",
                        "src": "23116:4:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23122:4:45",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "23112:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23112:15:45"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "23104:4:45"
                    }
                  ]
                }
              ]
            },
            "name": "array_allocation_size_t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "22858:6:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "22869:4:45",
                "type": ""
              }
            ],
            "src": "22808:326:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23241:60:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "23251:11:45",
                  "value": {
                    "name": "ptr",
                    "nodeType": "YulIdentifier",
                    "src": "23259:3:45"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nodeType": "YulIdentifier",
                      "src": "23251:4:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23272:22:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr",
                        "nodeType": "YulIdentifier",
                        "src": "23284:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23289:4:45",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "23280:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23280:14:45"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nodeType": "YulIdentifier",
                      "src": "23272:4:45"
                    }
                  ]
                }
              ]
            },
            "name": "array_dataslot_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nodeType": "YulTypedName",
                "src": "23228:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "23236:4:45",
                "type": ""
              }
            ],
            "src": "23140:161:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23407:60:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "23417:11:45",
                  "value": {
                    "name": "ptr",
                    "nodeType": "YulIdentifier",
                    "src": "23425:3:45"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nodeType": "YulIdentifier",
                      "src": "23417:4:45"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23438:22:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr",
                        "nodeType": "YulIdentifier",
                        "src": "23450:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23455:4:45",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "23446:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23446:14:45"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nodeType": "YulIdentifier",
                      "src": "23438:4:45"
                    }
                  ]
                }
              ]
            },
            "name": "array_dataslot_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nodeType": "YulTypedName",
                "src": "23394:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "23402:4:45",
                "type": ""
              }
            ],
            "src": "23307:160:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23576:40:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "23587:22:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "23603:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "23597:5:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23597:12:45"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "23587:6:45"
                    }
                  ]
                }
              ]
            },
            "name": "array_length_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "23559:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "23569:6:45",
                "type": ""
              }
            ],
            "src": "23473:143:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23724:40:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "23735:22:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "23751:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "23745:5:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23745:12:45"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "23735:6:45"
                    }
                  ]
                }
              ]
            },
            "name": "array_length_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "23707:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "23717:6:45",
                "type": ""
              }
            ],
            "src": "23622:142:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23828:40:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "23839:22:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "23855:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "23849:5:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23849:12:45"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "23839:6:45"
                    }
                  ]
                }
              ]
            },
            "name": "array_length_t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "23811:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "23821:6:45",
                "type": ""
              }
            ],
            "src": "23770:98:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23933:40:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "23944:22:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "23960:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "23954:5:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23954:12:45"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "23944:6:45"
                    }
                  ]
                }
              ]
            },
            "name": "array_length_t_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "23916:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "23926:6:45",
                "type": ""
              }
            ],
            "src": "23874:99:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24083:38:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "24093:22:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr",
                        "nodeType": "YulIdentifier",
                        "src": "24105:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24110:4:45",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "24101:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24101:14:45"
                  },
                  "variableNames": [
                    {
                      "name": "next",
                      "nodeType": "YulIdentifier",
                      "src": "24093:4:45"
                    }
                  ]
                }
              ]
            },
            "name": "array_nextElement_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nodeType": "YulTypedName",
                "src": "24070:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "next",
                "nodeType": "YulTypedName",
                "src": "24078:4:45",
                "type": ""
              }
            ],
            "src": "23979:142:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24230:38:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "24240:22:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "ptr",
                        "nodeType": "YulIdentifier",
                        "src": "24252:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24257:4:45",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "24248:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24248:14:45"
                  },
                  "variableNames": [
                    {
                      "name": "next",
                      "nodeType": "YulIdentifier",
                      "src": "24240:4:45"
                    }
                  ]
                }
              ]
            },
            "name": "array_nextElement_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nodeType": "YulTypedName",
                "src": "24217:3:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "next",
                "nodeType": "YulTypedName",
                "src": "24225:4:45",
                "type": ""
              }
            ],
            "src": "24127:141:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24414:73:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "24431:3:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "24436:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24424:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24424:19:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24424:19:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24452:29:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "24471:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24476:4:45",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "24467:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24467:14:45"
                  },
                  "variableNames": [
                    {
                      "name": "updated_pos",
                      "nodeType": "YulIdentifier",
                      "src": "24452:11:45"
                    }
                  ]
                }
              ]
            },
            "name": "array_storeLengthForEncoding_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "24386:3:45",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "24391:6:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "updated_pos",
                "nodeType": "YulTypedName",
                "src": "24402:11:45",
                "type": ""
              }
            ],
            "src": "24274:213:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24632:73:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "24649:3:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "24654:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24642:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24642:19:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24642:19:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24670:29:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "24689:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24694:4:45",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "24685:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24685:14:45"
                  },
                  "variableNames": [
                    {
                      "name": "updated_pos",
                      "nodeType": "YulIdentifier",
                      "src": "24670:11:45"
                    }
                  ]
                }
              ]
            },
            "name": "array_storeLengthForEncoding_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "24604:3:45",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "24609:6:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "updated_pos",
                "nodeType": "YulTypedName",
                "src": "24620:11:45",
                "type": ""
              }
            ],
            "src": "24493:212:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24796:73:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "24813:3:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "24818:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24806:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24806:19:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24806:19:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24834:29:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "24853:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24858:4:45",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "24849:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24849:14:45"
                  },
                  "variableNames": [
                    {
                      "name": "updated_pos",
                      "nodeType": "YulIdentifier",
                      "src": "24834:11:45"
                    }
                  ]
                }
              ]
            },
            "name": "array_storeLengthForEncoding_t_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "24768:3:45",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "24773:6:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "updated_pos",
                "nodeType": "YulTypedName",
                "src": "24784:11:45",
                "type": ""
              }
            ],
            "src": "24711:158:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24988:34:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "24998:18:45",
                  "value": {
                    "name": "pos",
                    "nodeType": "YulIdentifier",
                    "src": "25013:3:45"
                  },
                  "variableNames": [
                    {
                      "name": "updated_pos",
                      "nodeType": "YulIdentifier",
                      "src": "24998:11:45"
                    }
                  ]
                }
              ]
            },
            "name": "array_storeLengthForEncoding_t_bytes_memory_ptr_nonPadded_inplace_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "24960:3:45",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "24965:6:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "updated_pos",
                "nodeType": "YulTypedName",
                "src": "24976:11:45",
                "type": ""
              }
            ],
            "src": "24875:147:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25124:73:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "25141:3:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "25146:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25134:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25134:19:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25134:19:45"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "25162:29:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "25181:3:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25186:4:45",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "25177:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25177:14:45"
                  },
                  "variableNames": [
                    {
                      "name": "updated_pos",
                      "nodeType": "YulIdentifier",
                      "src": "25162:11:45"
                    }
                  ]
                }
              ]
            },
            "name": "array_storeLengthForEncoding_t_string_memory_ptr_fromStack",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "25096:3:45",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "25101:6:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "updated_pos",
                "nodeType": "YulTypedName",
                "src": "25112:11:45",
                "type": ""
              }
            ],
            "src": "25028:169:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25248:51:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "25258:35:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "25287:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint160",
                      "nodeType": "YulIdentifier",
                      "src": "25269:17:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25269:24:45"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "25258:7:45"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "25230:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "25240:7:45",
                "type": ""
              }
            ],
            "src": "25203:96:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25347:48:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "25357:32:45",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "25382:5:45"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "25375:6:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25375:13:45"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "25368:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25368:21:45"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "25357:7:45"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "25329:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "25339:7:45",
                "type": ""
              }
            ],
            "src": "25305:90:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25461:81:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "25471:16:45",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "25482:5:45"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "25471:7:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "25530:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "validator_assert_t_enum$_ActionType_$3183",
                      "nodeType": "YulIdentifier",
                      "src": "25488:41:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25488:48:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25488:48:45"
                }
              ]
            },
            "name": "cleanup_t_enum$_ActionType_$3183",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "25443:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "25453:7:45",
                "type": ""
              }
            ],
            "src": "25401:141:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25615:88:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "25625:16:45",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "25636:5:45"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "25625:7:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "25691:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "validator_assert_t_enum$_AssetDenomination_$3186",
                      "nodeType": "YulIdentifier",
                      "src": "25642:48:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25642:55:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25642:55:45"
                }
              ]
            },
            "name": "cleanup_t_enum$_AssetDenomination_$3186",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "25597:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "25607:7:45",
                "type": ""
              }
            ],
            "src": "25548:155:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25773:85:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "25783:16:45",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "25794:5:45"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "25783:7:45"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "25846:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "validator_assert_t_enum$_AssetReference_$3189",
                      "nodeType": "YulIdentifier",
                      "src": "25800:45:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25800:52:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25800:52:45"
                }
              ]
            },
            "name": "cleanup_t_enum$_AssetReference_$3189",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "25755:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "25765:7:45",
                "type": ""
              }
            ],
            "src": "25709:149:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25909:81:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "25919:65:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "25934:5:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25941:42:45",
                        "type": "",
                        "value": "0xffffffffffffffffffffffffffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "25930:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25930:54:45"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "25919:7:45"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_uint160",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "25891:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "25901:7:45",
                "type": ""
              }
            ],
            "src": "25864:126:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26041:32:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "26051:16:45",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "26062:5:45"
                  },
                  "variableNames": [
                    {
                      "name": "cleaned",
                      "nodeType": "YulIdentifier",
                      "src": "26051:7:45"
                    }
                  ]
                }
              ]
            },
            "name": "cleanup_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "26023:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "cleaned",
                "nodeType": "YulTypedName",
                "src": "26033:7:45",
                "type": ""
              }
            ],
            "src": "25996:77:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26152:68:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "26162:52:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "26208:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_enum$_ActionType_$3183",
                      "nodeType": "YulIdentifier",
                      "src": "26175:32:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26175:39:45"
                  },
                  "variableNames": [
                    {
                      "name": "converted",
                      "nodeType": "YulIdentifier",
                      "src": "26162:9:45"
                    }
                  ]
                }
              ]
            },
            "name": "convert_t_enum$_ActionType_$3183_to_t_uint8",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "26132:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "converted",
                "nodeType": "YulTypedName",
                "src": "26142:9:45",
                "type": ""
              }
            ],
            "src": "26079:141:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26306:75:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "26316:59:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "26369:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_enum$_AssetDenomination_$3186",
                      "nodeType": "YulIdentifier",
                      "src": "26329:39:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26329:46:45"
                  },
                  "variableNames": [
                    {
                      "name": "converted",
                      "nodeType": "YulIdentifier",
                      "src": "26316:9:45"
                    }
                  ]
                }
              ]
            },
            "name": "convert_t_enum$_AssetDenomination_$3186_to_t_uint8",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "26286:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "converted",
                "nodeType": "YulTypedName",
                "src": "26296:9:45",
                "type": ""
              }
            ],
            "src": "26226:155:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26464:72:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "26474:56:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "26524:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_enum$_AssetReference_$3189",
                      "nodeType": "YulIdentifier",
                      "src": "26487:36:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26487:43:45"
                  },
                  "variableNames": [
                    {
                      "name": "converted",
                      "nodeType": "YulIdentifier",
                      "src": "26474:9:45"
                    }
                  ]
                }
              ]
            },
            "name": "convert_t_enum$_AssetReference_$3189_to_t_uint8",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "26444:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "converted",
                "nodeType": "YulTypedName",
                "src": "26454:9:45",
                "type": ""
              }
            ],
            "src": "26387:149:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26610:53:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "26620:37:45",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "26651:5:45"
                      }
                    ],
                    "functionName": {
                      "name": "cleanup_t_uint256",
                      "nodeType": "YulIdentifier",
                      "src": "26633:17:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26633:24:45"
                  },
                  "variableNames": [
                    {
                      "name": "converted",
                      "nodeType": "YulIdentifier",
                      "src": "26620:9:45"
                    }
                  ]
                }
              ]
            },
            "name": "convert_t_rational_0_by_1_to_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "26590:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "converted",
                "nodeType": "YulTypedName",
                "src": "26600:9:45",
                "type": ""
              }
            ],
            "src": "26542:121:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26720:103:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "dst",
                        "nodeType": "YulIdentifier",
                        "src": "26743:3:45"
                      },
                      {
                        "name": "src",
                        "nodeType": "YulIdentifier",
                        "src": "26748:3:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "26753:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "26730:12:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26730:30:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26730:30:45"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "26801:3:45"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "26806:6:45"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "26797:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26797:16:45"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26815:1:45",
                        "type": "",
                        "value": "0"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26790:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26790:27:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26790:27:45"
                }
              ]
            },
            "name": "copy_calldata_to_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "26702:3:45",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "26707:3:45",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "26712:6:45",
                "type": ""
              }
            ],
            "src": "26669:154:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26878:258:45",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "26888:10:45",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "26897:1:45",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "26892:1:45",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "26957:63:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "26982:3:45"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "26987:1:45"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "26978:3:45"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "26978:11:45"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "27001:3:45"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "27006:1:45"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "26997:3:45"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "26997:11:45"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "26991:5:45"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "26991:18:45"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "26971:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "26971:39:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "26971:39:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "26918:1:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "26921:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "26915:2:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26915:13:45"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "26929:19:45",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "26931:15:45",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "26940:1:45"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "26943:2:45",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "26936:3:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "26936:10:45"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "26931:1:45"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "26911:3:45",
                    "statements": []
                  },
                  "src": "26907:113:45"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27054:76:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "27104:3:45"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "27109:6:45"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "27100:3:45"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "27100:16:45"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "27118:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "27093:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27093:27:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "27093:27:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "27035:1:45"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "27038:6:45"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "27032:2:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27032:13:45"
                  },
                  "nodeType": "YulIf",
                  "src": "27029:2:45"
                }
              ]
            },
            "name": "copy_memory_to_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "26860:3:45",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "26865:3:45",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "26870:6:45",
                "type": ""
              }
            ],
            "src": "26829:307:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27165:25:45",
              "statements": [
                {
                  "expression": {
                    "arguments": [],
                    "functionName": {
                      "name": "invalid",
                      "nodeType": "YulIdentifier",
                      "src": "27175:7:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27175:9:45"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27175:9:45"
                }
              ]
            },
            "name": "panic_error",
            "nodeType": "YulFunctionDefinition",
            "src": "27142:48:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27244:54:45",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "27254:38:45",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "27272:5:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27279:2:45",
                            "type": "",
                            "value": "31"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "27268:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27268:14:45"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27288:2:45",
                            "type": "",
                            "value": "31"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "27284:3:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27284:7:45"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "27264:3:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27264:28:45"
                  },
                  "variableNames": [
                    {
                      "name": "result",
                      "nodeType": "YulIdentifier",
                      "src": "27254:6:45"
                    }
                  ]
                }
              ]
            },
            "name": "round_up_to_mul_of_32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "27227:5:45",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "result",
                "nodeType": "YulTypedName",
                "src": "27237:6:45",
                "type": ""
              }
            ],
            "src": "27196:102:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27362:57:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27396:17:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error",
                            "nodeType": "YulIdentifier",
                            "src": "27398:11:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27398:13:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "27398:13:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "27385:5:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27392:1:45",
                            "type": "",
                            "value": "9"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "27382:2:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27382:12:45"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "27375:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27375:20:45"
                  },
                  "nodeType": "YulIf",
                  "src": "27372:2:45"
                }
              ]
            },
            "name": "validator_assert_t_enum$_ActionType_$3183",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "27355:5:45",
                "type": ""
              }
            ],
            "src": "27304:115:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27490:57:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27524:17:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error",
                            "nodeType": "YulIdentifier",
                            "src": "27526:11:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27526:13:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "27526:13:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "27513:5:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27520:1:45",
                            "type": "",
                            "value": "2"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "27510:2:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27510:12:45"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "27503:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27503:20:45"
                  },
                  "nodeType": "YulIf",
                  "src": "27500:2:45"
                }
              ]
            },
            "name": "validator_assert_t_enum$_AssetDenomination_$3186",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "27483:5:45",
                "type": ""
              }
            ],
            "src": "27425:122:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27615:57:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27649:17:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error",
                            "nodeType": "YulIdentifier",
                            "src": "27651:11:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27651:13:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "27651:13:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "27638:5:45"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27645:1:45",
                            "type": "",
                            "value": "2"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "27635:2:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27635:12:45"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "27628:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27628:20:45"
                  },
                  "nodeType": "YulIf",
                  "src": "27625:2:45"
                }
              ]
            },
            "name": "validator_assert_t_enum$_AssetReference_$3189",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "27608:5:45",
                "type": ""
              }
            ],
            "src": "27553:119:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27721:79:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27778:16:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "27787:1:45",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "27790:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "27780:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27780:12:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "27780:12:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "27744:5:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "27769:5:45"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_address",
                              "nodeType": "YulIdentifier",
                              "src": "27751:17:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "27751:24:45"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "27741:2:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27741:35:45"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "27734:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27734:43:45"
                  },
                  "nodeType": "YulIf",
                  "src": "27731:2:45"
                }
              ]
            },
            "name": "validator_revert_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "27714:5:45",
                "type": ""
              }
            ],
            "src": "27678:122:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27846:76:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27900:16:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "27909:1:45",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "27912:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "27902:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27902:12:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "27902:12:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "27869:5:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "27891:5:45"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_bool",
                              "nodeType": "YulIdentifier",
                              "src": "27876:14:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "27876:21:45"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "27866:2:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27866:32:45"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "27859:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27859:40:45"
                  },
                  "nodeType": "YulIf",
                  "src": "27856:2:45"
                }
              ]
            },
            "name": "validator_revert_t_bool",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "27839:5:45",
                "type": ""
              }
            ],
            "src": "27806:116:45"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27971:79:45",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "28028:16:45",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "28037:1:45",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "28040:1:45",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "28030:6:45"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "28030:12:45"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "28030:12:45"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "27994:5:45"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "28019:5:45"
                              }
                            ],
                            "functionName": {
                              "name": "cleanup_t_uint256",
                              "nodeType": "YulIdentifier",
                              "src": "28001:17:45"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "28001:24:45"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "27991:2:45"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27991:35:45"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "27984:6:45"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27984:43:45"
                  },
                  "nodeType": "YulIf",
                  "src": "27981:2:45"
                }
              ]
            },
            "name": "validator_revert_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "27964:5:45",
                "type": ""
              }
            ],
            "src": "27928:122:45"
          }
        ]
      },
      "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_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_address(value)\n    }\n\n    function abi_decode_t_bool_fromMemory(offset, end) -> value {\n        value := mload(offset)\n        validator_revert_t_bool(value)\n    }\n\n    function abi_decode_t_bytes_memory_ptr(offset, end) -> array {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(0, 0) }\n        let length := calldataload(offset)\n        array := allocateMemory(array_allocation_size_t_bytes_memory_ptr(length))\n        mstore(array, length)\n        let src := add(offset, 0x20)\n        let dst := add(array, 0x20)\n        if gt(add(src, length), end) { revert(0, 0) }\n        copy_calldata_to_memory(src, dst, length)\n    }\n\n    // struct Types.AccountInfo\n    function abi_decode_t_struct$_AccountInfo_$3225_memory_ptr(headStart, end) -> value {\n        if slt(sub(end, headStart), 0x40) { revert(0, 0) }\n        value := allocateMemory(0x40)\n\n        {\n            // owner\n\n            let offset := 0\n            mstore(add(value, 0x00), abi_decode_t_address(add(headStart, offset), end))\n\n        }\n\n        {\n            // number\n\n            let offset := 32\n            mstore(add(value, 0x20), abi_decode_t_uint256(add(headStart, offset), end))\n\n        }\n\n    }\n\n    function abi_decode_t_uint256(offset, end) -> value {\n        value := calldataload(offset)\n        validator_revert_t_uint256(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            let offset := 0\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n        {\n            let offset := 0\n            value0 := abi_decode_t_address_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_addresst_struct$_AccountInfo_$3225_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2 {\n        if slt(sub(dataEnd, headStart), 128) { revert(0, 0) }\n\n        {\n            let offset := 0\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n            let offset := 32\n            value1 := abi_decode_t_struct$_AccountInfo_$3225_memory_ptr(add(headStart, offset), dataEnd)\n        }\n\n        {\n            let offset := calldataload(add(headStart, 96))\n            if gt(offset, 0xffffffffffffffff) { revert(0, 0) }\n            value2 := abi_decode_t_bytes_memory_ptr(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1 {\n        if slt(sub(dataEnd, headStart), 64) { revert(0, 0) }\n\n        {\n            let offset := 0\n            value0 := abi_decode_t_address(add(headStart, offset), dataEnd)\n        }\n\n        {\n            let offset := 32\n            value1 := abi_decode_t_uint256(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_bool_fromMemory(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n        {\n            let offset := 0\n            value0 := abi_decode_t_bool_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {\n        if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }\n\n        {\n            let offset := 0\n            value0 := abi_decode_t_uint256(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            let offset := 0\n            value0 := abi_decode_t_uint256_fromMemory(add(headStart, offset), dataEnd)\n        }\n\n    }\n\n    function abi_encodeUpdatedPos_t_struct$_AccountInfo_$3225_memory_ptr_to_t_struct$_AccountInfo_$3225_memory_ptr(value0, pos) -> updatedPos {\n        abi_encode_t_struct$_AccountInfo_$3225_memory_ptr_to_t_struct$_AccountInfo_$3225_memory_ptr(value0, pos)\n        updatedPos := add(pos, 0x40)\n    }\n\n    function abi_encodeUpdatedPos_t_struct$_ActionArgs_$3220_memory_ptr_to_t_struct$_ActionArgs_$3220_memory_ptr(value0, pos) -> updatedPos {\n        updatedPos := abi_encode_t_struct$_ActionArgs_$3220_memory_ptr_to_t_struct$_ActionArgs_$3220_memory_ptr(value0, pos)\n    }\n\n    function abi_encode_t_address_to_t_address(value, pos) {\n        mstore(pos, cleanup_t_address(value))\n    }\n\n    function abi_encode_t_address_to_t_address_fromStack(value, pos) {\n        mstore(pos, cleanup_t_address(value))\n    }\n\n    // struct Types.AccountInfo[] -> struct Types.AccountInfo[]\n    function abi_encode_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_fromStack(value, pos)  -> end  {\n        let length := array_length_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_fromStack(pos, length)\n        let baseRef := array_dataslot_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr(value)\n        let srcPtr := baseRef\n        for { let i := 0 } lt(i, length) { i := add(i, 1) }\n        {\n            let elementValue0 := mload(srcPtr)\n            pos := abi_encodeUpdatedPos_t_struct$_AccountInfo_$3225_memory_ptr_to_t_struct$_AccountInfo_$3225_memory_ptr(elementValue0, pos)\n            srcPtr := array_nextElement_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr(srcPtr)\n        }\n        end := pos\n    }\n\n    // struct Types.ActionArgs[] -> struct Types.ActionArgs[]\n    function abi_encode_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr_fromStack(value, pos)  -> end  {\n        let length := array_length_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr_fromStack(pos, length)\n        let headStart := pos\n        let tail := add(pos, mul(length, 0x20))\n        let baseRef := array_dataslot_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr(value)\n        let srcPtr := baseRef\n        for { let i := 0 } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, sub(tail, headStart))\n            let elementValue0 := mload(srcPtr)\n            tail := abi_encodeUpdatedPos_t_struct$_ActionArgs_$3220_memory_ptr_to_t_struct$_ActionArgs_$3220_memory_ptr(elementValue0, tail)\n            srcPtr := array_nextElement_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr(srcPtr)\n            pos := add(pos, 0x20)\n        }\n        pos := tail\n        end := pos\n    }\n\n    function abi_encode_t_bool_to_t_bool(value, pos) {\n        mstore(pos, cleanup_t_bool(value))\n    }\n\n    function abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr(value, pos) -> end {\n        let length := array_length_t_bytes_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length)\n        copy_memory_to_memory(add(value, 0x20), pos, length)\n        end := add(pos, round_up_to_mul_of_32(length))\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_enum$_ActionType_$3183_to_t_uint8(value, pos) {\n        mstore(pos, convert_t_enum$_ActionType_$3183_to_t_uint8(value))\n    }\n\n    function abi_encode_t_enum$_AssetDenomination_$3186_to_t_uint8(value, pos) {\n        mstore(pos, convert_t_enum$_AssetDenomination_$3186_to_t_uint8(value))\n    }\n\n    function abi_encode_t_enum$_AssetReference_$3189_to_t_uint8(value, pos) {\n        mstore(pos, convert_t_enum$_AssetReference_$3189_to_t_uint8(value))\n    }\n\n    function abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value, pos) {\n        mstore(pos, convert_t_rational_0_by_1_to_t_uint256(value))\n    }\n\n    function abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value, pos) -> end {\n        let length := array_length_t_string_memory_ptr(value)\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, length)\n        copy_memory_to_memory(add(value, 0x20), pos, length)\n        end := add(pos, round_up_to_mul_of_32(length))\n    }\n\n    function abi_encode_t_stringliteral_12cbd338f3d380472e6e6f021fa4387f5d4c1cdea9b46c0fb1077fc4dfd79d34_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 37)\n\n        mstore(add(pos, 0), \"WETHHandler: not enough ether ba\")\n\n        mstore(add(pos, 32), \"lance\")\n\n        end := add(pos, 64)\n    }\n\n    function abi_encode_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 38)\n\n        mstore(add(pos, 0), \"Ownable: new owner is the zero a\")\n\n        mstore(add(pos, 32), \"ddress\")\n\n        end := add(pos, 64)\n    }\n\n    function abi_encode_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 27)\n\n        mstore(add(pos, 0), \"SafeMath: addition overflow\")\n\n        end := add(pos, 32)\n    }\n\n    function abi_encode_t_stringliteral_325acd3716ec1c446e4602a383beb016d9ec685175702cd049a92ae420fe28a1_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 48)\n\n        mstore(add(pos, 0), \"SoloLiquidityProxy: cannot regis\")\n\n        mstore(add(pos, 32), \"ter empty market\")\n\n        end := add(pos, 64)\n    }\n\n    function abi_encode_t_stringliteral_47e615ef39653c375952ecbdf34324d193e406d0d78277c356aadb858054e8ce_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 42)\n\n        mstore(add(pos, 0), \"ExternalCaller: insufficient eth\")\n\n        mstore(add(pos, 32), \"er balance\")\n\n        end := add(pos, 64)\n    }\n\n    function abi_encode_t_stringliteral_6ba38f48388cccc2aad8df6212f9a1bd83ecc1af6e75fcd6ca310674b55e41d6_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 36)\n\n        mstore(add(pos, 0), \"WETHHandler: not enough weth bal\")\n\n        mstore(add(pos, 32), \"ance\")\n\n        end := add(pos, 64)\n    }\n\n    function abi_encode_t_stringliteral_6ee23ad3fd088e06cb3b515a08546b513b08fc6447a368fbe64a37067915d8c0_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 46)\n\n        mstore(add(pos, 0), \"SoloLiquidityProxy: transfer to \")\n\n        mstore(add(pos, 32), \"invoker failed\")\n\n        end := add(pos, 64)\n    }\n\n    function abi_encode_t_stringliteral_8a2292a52ba49c99160c2313a505cb960546128d10b4e96c3ad0220c0cf8c647_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 33)\n\n        mstore(add(pos, 0), \"SoloLiquidityProxy: not schedule\")\n\n        mstore(add(pos, 32), \"d\")\n\n        end := add(pos, 64)\n    }\n\n    function abi_encode_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_to_t_string_memory_ptr_fromStack(pos) -> end {\n        pos := array_storeLengthForEncoding_t_string_memory_ptr_fromStack(pos, 32)\n\n        mstore(add(pos, 0), \"Ownable: caller is not the owner\")\n\n        end := add(pos, 32)\n    }\n\n    // struct Types.AccountInfo -> struct Types.AccountInfo\n    function abi_encode_t_struct$_AccountInfo_$3225_memory_ptr_to_t_struct$_AccountInfo_$3225_memory_ptr(value, pos)  {\n        let tail := add(pos, 0x40)\n\n        {\n            // owner\n\n            let memberValue0 := mload(add(value, 0x00))\n            abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x00))\n        }\n\n        {\n            // number\n\n            let memberValue0 := mload(add(value, 0x20))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x20))\n        }\n\n    }\n\n    // struct Types.ActionArgs -> struct Types.ActionArgs\n    function abi_encode_t_struct$_ActionArgs_$3220_memory_ptr_to_t_struct$_ActionArgs_$3220_memory_ptr(value, pos)  -> end  {\n        let tail := add(pos, 0x0160)\n\n        {\n            // actionType\n\n            let memberValue0 := mload(add(value, 0x00))\n            abi_encode_t_enum$_ActionType_$3183_to_t_uint8(memberValue0, add(pos, 0x00))\n        }\n\n        {\n            // accountId\n\n            let memberValue0 := mload(add(value, 0x20))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x20))\n        }\n\n        {\n            // amount\n\n            let memberValue0 := mload(add(value, 0x40))\n            abi_encode_t_struct$_AssetAmount_$3198_memory_ptr_to_t_struct$_AssetAmount_$3198_memory_ptr(memberValue0, add(pos, 0x40))\n        }\n\n        {\n            // primaryMarketId\n\n            let memberValue0 := mload(add(value, 0x60))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0xc0))\n        }\n\n        {\n            // secondaryMarketId\n\n            let memberValue0 := mload(add(value, 0x80))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0xe0))\n        }\n\n        {\n            // otherAddress\n\n            let memberValue0 := mload(add(value, 0xa0))\n            abi_encode_t_address_to_t_address(memberValue0, add(pos, 0x0100))\n        }\n\n        {\n            // otherAccountId\n\n            let memberValue0 := mload(add(value, 0xc0))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x0120))\n        }\n\n        {\n            // data\n\n            let memberValue0 := mload(add(value, 0xe0))\n\n            mstore(add(pos, 0x0140), sub(tail, pos))\n            tail := abi_encode_t_bytes_memory_ptr_to_t_bytes_memory_ptr(memberValue0, tail)\n\n        }\n\n        end := tail\n    }\n\n    // struct Types.AssetAmount -> struct Types.AssetAmount\n    function abi_encode_t_struct$_AssetAmount_$3198_memory_ptr_to_t_struct$_AssetAmount_$3198_memory_ptr(value, pos)  {\n        let tail := add(pos, 0x80)\n\n        {\n            // sign\n\n            let memberValue0 := mload(add(value, 0x00))\n            abi_encode_t_bool_to_t_bool(memberValue0, add(pos, 0x00))\n        }\n\n        {\n            // denomination\n\n            let memberValue0 := mload(add(value, 0x20))\n            abi_encode_t_enum$_AssetDenomination_$3186_to_t_uint8(memberValue0, add(pos, 0x20))\n        }\n\n        {\n            // ref\n\n            let memberValue0 := mload(add(value, 0x40))\n            abi_encode_t_enum$_AssetReference_$3189_to_t_uint8(memberValue0, add(pos, 0x40))\n        }\n\n        {\n            // value\n\n            let memberValue0 := mload(add(value, 0x60))\n            abi_encode_t_uint256_to_t_uint256(memberValue0, add(pos, 0x60))\n        }\n\n    }\n\n    function abi_encode_t_uint256_to_t_uint256(value, pos) {\n        mstore(pos, cleanup_t_uint256(value))\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_rational_0_by_1__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 64)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_rational_0_by_1_to_t_uint256_fromStack(value1,  add(headStart, 32))\n\n    }\n\n    function abi_encode_tuple_t_address_t_uint256__to_t_address_t_uint256__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 64)\n\n        abi_encode_t_address_to_t_address_fromStack(value0,  add(headStart, 0))\n\n        abi_encode_t_uint256_to_t_uint256_fromStack(value1,  add(headStart, 32))\n\n    }\n\n    function abi_encode_tuple_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart , value1, value0) -> tail {\n        tail := add(headStart, 64)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_fromStack(value0,  tail)\n\n        mstore(add(headStart, 32), sub(tail, headStart))\n        tail := abi_encode_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr_to_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr_fromStack(value1,  tail)\n\n    }\n\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart , value0) -> tail {\n        tail := add(headStart, 32)\n\n        mstore(add(headStart, 0), sub(tail, headStart))\n        tail := abi_encode_t_string_memory_ptr_to_t_string_memory_ptr_fromStack(value0,  tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_12cbd338f3d380472e6e6f021fa4387f5d4c1cdea9b46c0fb1077fc4dfd79d34__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_12cbd338f3d380472e6e6f021fa4387f5d4c1cdea9b46c0fb1077fc4dfd79d34_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe__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_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a__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_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_325acd3716ec1c446e4602a383beb016d9ec685175702cd049a92ae420fe28a1__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_325acd3716ec1c446e4602a383beb016d9ec685175702cd049a92ae420fe28a1_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_47e615ef39653c375952ecbdf34324d193e406d0d78277c356aadb858054e8ce__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_47e615ef39653c375952ecbdf34324d193e406d0d78277c356aadb858054e8ce_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_6ba38f48388cccc2aad8df6212f9a1bd83ecc1af6e75fcd6ca310674b55e41d6__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_6ba38f48388cccc2aad8df6212f9a1bd83ecc1af6e75fcd6ca310674b55e41d6_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_6ee23ad3fd088e06cb3b515a08546b513b08fc6447a368fbe64a37067915d8c0__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_6ee23ad3fd088e06cb3b515a08546b513b08fc6447a368fbe64a37067915d8c0_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_8a2292a52ba49c99160c2313a505cb960546128d10b4e96c3ad0220c0cf8c647__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_8a2292a52ba49c99160c2313a505cb960546128d10b4e96c3ad0220c0cf8c647_to_t_string_memory_ptr_fromStack( tail)\n\n    }\n\n    function abi_encode_tuple_t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe__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_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe_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 allocateMemory(size) -> memPtr {\n        memPtr := mload(64)\n        let newFreePtr := add(memPtr, size)\n        // protect against overflow\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error() }\n        mstore(64, newFreePtr)\n    }\n\n    function array_allocation_size_t_bytes_memory_ptr(length) -> size {\n        // Make sure we can allocate memory without overflow\n        if gt(length, 0xffffffffffffffff) { panic_error() }\n\n        // round up\n        size := and(add(length, 0x1f), not(0x1f))\n\n        // add length slot\n        size := add(size, 0x20)\n\n    }\n\n    function array_dataslot_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr(ptr) -> data {\n        data := ptr\n\n        data := add(ptr, 0x20)\n\n    }\n\n    function array_dataslot_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr(ptr) -> data {\n        data := ptr\n\n        data := add(ptr, 0x20)\n\n    }\n\n    function array_length_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_length_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_length_t_bytes_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_length_t_string_memory_ptr(value) -> length {\n\n        length := mload(value)\n\n    }\n\n    function array_nextElement_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr(ptr) -> next {\n        next := add(ptr, 0x20)\n    }\n\n    function array_nextElement_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr(ptr) -> next {\n        next := add(ptr, 0x20)\n    }\n\n    function array_storeLengthForEncoding_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function array_storeLengthForEncoding_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr_fromStack(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n\n    function array_storeLengthForEncoding_t_bytes_memory_ptr(pos, length) -> updated_pos {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\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_bool(value) -> cleaned {\n        cleaned := iszero(iszero(value))\n    }\n\n    function cleanup_t_enum$_ActionType_$3183(value) -> cleaned {\n        cleaned := value validator_assert_t_enum$_ActionType_$3183(value)\n    }\n\n    function cleanup_t_enum$_AssetDenomination_$3186(value) -> cleaned {\n        cleaned := value validator_assert_t_enum$_AssetDenomination_$3186(value)\n    }\n\n    function cleanup_t_enum$_AssetReference_$3189(value) -> cleaned {\n        cleaned := value validator_assert_t_enum$_AssetReference_$3189(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 convert_t_enum$_ActionType_$3183_to_t_uint8(value) -> converted {\n        converted := cleanup_t_enum$_ActionType_$3183(value)\n    }\n\n    function convert_t_enum$_AssetDenomination_$3186_to_t_uint8(value) -> converted {\n        converted := cleanup_t_enum$_AssetDenomination_$3186(value)\n    }\n\n    function convert_t_enum$_AssetReference_$3189_to_t_uint8(value) -> converted {\n        converted := cleanup_t_enum$_AssetReference_$3189(value)\n    }\n\n    function convert_t_rational_0_by_1_to_t_uint256(value) -> converted {\n        converted := cleanup_t_uint256(value)\n    }\n\n    function copy_calldata_to_memory(src, dst, length) {\n        calldatacopy(dst, src, length)\n        // clear end\n        mstore(add(dst, length), 0)\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 panic_error() {\n        invalid()\n    }\n\n    function round_up_to_mul_of_32(value) -> result {\n        result := and(add(value, 31), not(31))\n    }\n\n    function validator_assert_t_enum$_ActionType_$3183(value) {\n        if iszero(lt(value, 9)) { panic_error() }\n    }\n\n    function validator_assert_t_enum$_AssetDenomination_$3186(value) {\n        if iszero(lt(value, 2)) { panic_error() }\n    }\n\n    function validator_assert_t_enum$_AssetReference_$3189(value) {\n        if iszero(lt(value, 2)) { panic_error() }\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_bool(value) {\n        if iszero(eq(value, cleanup_t_bool(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": 45,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "1105:8336:23:-:0;;;1293:1;1258:36;;1334:1;1300:35;;1382:156;;;;;;;;1416:5;1382:156;;;;;;1445:27;1382:156;;;;;;;;;;;;1487:26;1382:156;;;;;;;;;;;;1530:1;1382:156;;;1341:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1544:29;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1959:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2082:11;2058:1;865:17:39;885:12;:10;;;:12;;:::i;:::-;865:32;;916:9;907:6;;:18;;;;;;;;;;;;;;;;;;973:9;940:43;;969:1;940:43;;;;;;;;;;;;840:150;916:15:7;897:16;;:34;;;;;;;;;;;;;;;;;;850:88;834:11:11;819:12;;:26;;;;;;;;;;;;;;;;;;768:84;2130:17:23::2;2109:18;;:38;;;;;;;;;;;;;;;;;;1959:195:::0;;1105:8336;;590:104:38;643:15;677:10;670:17;;590:104;:::o;1105:8336:23:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;7:143:45:-;;95:6;89:13;80:22;;111:33;138:5;111:33;:::i;:::-;70:80;;;;:::o;156:159::-;;252:6;246:13;237:22;;268:41;303:5;268:41;:::i;:::-;227:88;;;;:::o;321:452::-;;;465:2;453:9;444:7;440:23;436:32;433:2;;;481:1;478;471:12;433:2;523:1;547:64;603:7;594:6;583:9;579:22;547:64;:::i;:::-;537:74;;495:126;659:2;684:72;748:7;739:6;728:9;724:22;684:72;:::i;:::-;674:82;;631:135;423:350;;;;;:::o;779:96::-;;845:24;863:5;845:24;:::i;:::-;834:35;;824:51;;;:::o;881:104::-;;955:24;973:5;955:24;:::i;:::-;944:35;;934:51;;;:::o;991:126::-;;1068:42;1061:5;1057:54;1046:65;;1036:81;;;:::o;1123:122::-;1196:24;1214:5;1196:24;:::i;:::-;1189:5;1186:35;1176:2;;1235:1;1232;1225:12;1176:2;1166:79;:::o;1251:138::-;1332:32;1358:5;1332:32;:::i;:::-;1325:5;1322:43;1312:2;;1379:1;1376;1369:12;1312:2;1302:87;:::o;1105:8336:23:-;;;;;;;",
  "deployedSourceMap": "1105:8336:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2231:629;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4336:927;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2866:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3249:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1689:145:39;;;;;;;;;;;;;:::i;:::-;;5269:961:23;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1066:77:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3800:225:23;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3420:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1983:240:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2231:629:23;1280:12:39;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2300:20:23::1;2323:104;2366:18;;;;;;;;;;;2354:53;;;2408:8;2354:63;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2323:17;:104::i;:::-;2300:127;;2482:1;2458:26;;:12;:26;;;;2437:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;2609:8;2569:23;:37;2593:12;2569:37;;;;;;;;;;;;;;;:48;;;;2663:12;2627:23;:33;2651:8;2627:33;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;2725:4;2685:23;:37;2709:12;2685:37;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;2746:31;2764:12;2746:17;:31::i;:::-;2739:47;;;2800:18;;;;;;;;;;;2840:2;2739:114;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1339:1:39;2231:629:23::0;:::o;4336:927::-;4469:10;4443:23;;:36;;;;;;;;;;;;;;;;;;4513:12;4489:21;;:36;;;;;;;;;;;;;;;;;;4558:11;4535:20;:34;;;;4580:16;4611:18;;;;;;;;;;;4580:50;;4640:36;4702:1;4679:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4640:64;;4730:44;4748:12;4762:11;4730:17;:44::i;:::-;4714:10;4725:1;4714:13;;;;;;;;;;;;;:60;;;;4800:15;:13;:15::i;:::-;4784:10;4795:1;4784:13;;;;;;;;;;;;;:31;;;;4841:119;4871:12;4897:53;4924:12;4938:11;4897:26;:53::i;:::-;4841:16;:119::i;:::-;4825:10;4836:1;4825:13;;;;;;;;;;;;;:135;;;;4970:39;5036:1;5012:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;4970:68;;5066:16;:14;:16::i;:::-;5048:12;5061:1;5048:15;;;;;;;;;;;;;:34;;;;5093:4;:12;;;5106;5120:10;5093:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5176:1;5142:23;;:36;;;;;;;;;;;;;;;;;;5220:1;5188:21;;:34;;;;;;;;;;;;;;;;;;5255:1;5232:20;:24;;;;4336:927;;;;;:::o;2866:377::-;1280:12:39;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2937:20:23::1;2960:23;:33;2984:8;2960:33;;;;;;;;;;;;;;;;;;;;;2937:56;;3044:1;3004:23;:37;3028:12;3004:37;;;;;;;;;;;;;;;:41;;;;3099:1;3055:23;:33;3079:8;3055:33;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;3151:5;3111:23;:37;3135:12;3111:37;;;;;;;;;;;;;;;;:45;;;;;;;;;;;;;;;;;;3173:31;3191:12;3173:17;:31::i;:::-;3166:47;;;3214:18;;;;;;;;;;;3234:1;3166:70;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1339:1:39;2866:377:23::0;:::o;3249:165::-;3364:7;3402:4;3387:20;;3249:165;;;:::o;1689:145:39:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1795:1:::1;1758:40;;1779:6;::::0;::::1;;;;;;;;1758:40;;;;;;;;;;;;1825:1;1808:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1689:145::o:0;5269:961:23:-;5476:1;5441:37;;:23;;;;;;;;;;;:37;;;;5420:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;5585:1;5552:35;;:21;;;;;;;;;;;:35;;;5548:94;;;5603:28;5610:20;;5603:6;:28::i;:::-;5548:94;5673:140;5699:21;;;;;;;;;;;5738:23;;;;;;;;;;;5779:20;;5673:8;:140::i;:::-;5652:233;;;;;;;;;;;;:::i;:::-;;;;;;;;;5896:16;5924:23;;;;;;;;;;;5896:52;;5958:7;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6030:1;5997:35;;:21;;;;;;;;;;;:35;;;5993:231;;;6048:165;6070:129;6118:21;;;;;;;;;;;6161:20;;6070:26;:129::i;:::-;6048:4;:165::i;:::-;5993:231;5269:961;;;;:::o;1066:77:39:-;1104:7;1130:6;;;;;;;;;;;1123:13;;1066:77;:::o;3800:225:23:-;3935:7;3965:53;3992:12;4006:11;3965:26;:53::i;:::-;3958:60;;3800:225;;;;:::o;3420:374::-;3531:7;3558:26;3571:12;3558;:26::i;:::-;:54;;;;;3589:23;3599:12;3589:9;:23::i;:::-;3588:24;3558:54;3554:215;;;3658:31;3676:12;3658:17;:31::i;:::-;3651:49;;;3722:18;;;;;;;;;;;3651:107;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3628:130;;;;3554:215;3786:1;3779:8;;3420:374;;;;:::o;1983:240:39:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2091:1:::1;2071:22;;:8;:22;;;;2063:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2180:8;2151:38;;2172:6;::::0;::::1;;;;;;;;2151:38;;;;;;;;;;;;2208:8;2199:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1983:240:::0;:::o;590:104:38:-;643:15;677:10;670:17;;590:104;:::o;9024:189:23:-;9120:7;9166:12;;;;;;;;;;;9150:28;;:12;:28;;;:56;;9194:12;9150:56;;;9189:1;9150:56;9143:63;;9024:189;;;:::o;8829:::-;8925:7;8979:1;8955:26;;:12;:26;;;:56;;8999:12;8955:56;;;8984:12;;;;;;;;;;;8955:56;8948:63;;8829:189;;;:::o;6393:802::-;6510:23;;:::i;:::-;6568:620;;;;;;;;6615:25;6568:620;;;;;;;;;;;;6669:1;6568:620;;;;6696:226;;;;;;;;6742:5;6696:226;;;;;;6783:27;6696:226;;;;;;;;;;;;6837:26;6696:226;;;;;;;;;;;;6892:11;6696:226;;;6568:620;;;;6957:38;6982:12;6957:24;:38::i;:::-;6568:620;;;;7032:14;;6568:620;;;;7086:4;6568:620;;;;;;7125:15;;6568:620;;;;7164:9;6568:620;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6549:639;;6393:802;;;;:::o;8014:486::-;8062:23;;:::i;:::-;8116:377;;;;;;;;8163:21;8116:377;;;;;;;;;;;;8213:1;8116:377;;;;8240:11;8116:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8286:14;;8116:377;;;;8337:14;;8116:377;;;;8391:4;8116:377;;;;;;8430:15;;8116:377;;;;8469:9;8116:377;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8097:396;;8014:486;:::o;4031:299::-;4155:7;4256:67;4313:1;4272:38;4297:12;4272:24;:38::i;:::-;:42;:50;;4321:1;4272:50;;;4317:1;4272:50;4256:67;;:11;:15;;:67;;;;:::i;:::-;4237:86;;4031:299;;;;:::o;7201:807::-;7321:23;;:::i;:::-;7379:622;;;;;;;;7426:24;7379:622;;;;;;;;;;;;7479:1;7379:622;;;;7506:229;;;;;;;;7552:4;7506:229;;;;;;7592:27;7506:229;;;;;;;;;;;;7646:26;7506:229;;;;;;;;;;;;7701:15;7506:229;;;7379:622;;;;7770:38;7795:12;7770:24;:38::i;:::-;7379:622;;;;7845:14;;7379:622;;;;7899:4;7379:622;;;;;;7938:15;;7379:622;;;;7977:9;7379:622;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7360:641;;7201:807;;;;:::o;6236:151::-;6285:24;;:::i;:::-;6328:52;;;;;;;;6362:4;6328:52;;;;;;6377:1;6328:52;;;6321:59;;6236:151;:::o;1104:268:11:-;1160:10;1179:12;;;;;;;;;;;1160:32;;1256:11;1223:4;:14;;;1246:4;1223:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:44;;1202:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;1339:4;:13;;;1353:11;1339:26;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1104:268;;:::o;944:333:7:-;1060:4;1096:16;;;;;;;;;;;1080:32;;:12;:32;;;1076:195;;;1128:28;1145:2;1149:6;1128:16;:28::i;:::-;1177:4;1170:11;;;;1076:195;1226:12;1219:29;;;1249:2;1253:6;1219:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1212:48;;944:333;;;;;;:::o;858:240:11:-;958:11;933:21;:36;;912:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;1048:12;;;;;;;;;;;1042:27;;;1077:11;1042:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;858:240;:::o;8506:134:23:-;8573:4;8596:23;:37;8620:12;8596:37;;;;;;;;;;;;;;;;;;;;;;;;;8589:44;;8506:134;;;:::o;9219:220::-;9283:4;9299:16;9318:23;:37;9342:12;9318:37;;;;;;;;;;;;;;;;9299:56;;9384:18;;;;;;;;;;;9372:50;;;9423:8;9372:60;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9365:67;;;9219:220;;;:::o;8646:177::-;8749:7;8779:23;:37;8803:12;8779:37;;;;;;;;;;;;;;;;8772:44;;8646:177;;;:::o;874:176:40:-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;695:240:9:-;815:6;790:21;:31;;769:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;899:29;912:3;917:6;899:29;;;;;;;;;;;;:12;:29::i;:::-;695:240;;:::o;941:267::-;1062:12;1076:23;1103:3;:8;;1119:6;1140:5;1103:52;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1061:94;;;;1173:7;1189:10;1165:36;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;941:267;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:139:45:-;;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:137::-;;386:6;380:13;371:22;;402:30;426:5;402:30;:::i;:::-;361:77;;;;:::o;444:464::-;;548:3;541:4;533:6;529:17;525:27;515:2;;566:1;563;556:12;515:2;606:6;593:20;631:64;646:48;687:6;646:48;:::i;:::-;631:64;:::i;:::-;622:73;;718:6;711:5;704:21;757:4;749:6;745:17;793:4;786:5;782:16;831:3;822:6;817:3;813:16;810:25;807:2;;;848:1;845;838:12;807:2;861:41;895:6;890:3;885;861:41;:::i;:::-;505:403;;;;;;;:::o;946:511::-;;1068:4;1056:9;1051:3;1047:19;1043:30;1040:2;;;1086:1;1083;1076:12;1040:2;1108:20;1123:4;1108:20;:::i;:::-;1099:29;;1188:1;1227:49;1272:3;1263:6;1252:9;1248:22;1227:49;:::i;:::-;1220:4;1213:5;1209:16;1202:75;1138:150;1349:2;1389:49;1434:3;1425:6;1414:9;1410:22;1389:49;:::i;:::-;1382:4;1375:5;1371:16;1364:75;1298:152;1030:427;;;;:::o;1463:139::-;;1547:6;1534:20;1525:29;;1563:33;1590:5;1563:33;:::i;:::-;1515:87;;;;:::o;1608:143::-;;1696:6;1690:13;1681:22;;1712:33;1739:5;1712:33;:::i;:::-;1671:80;;;;:::o;1757:260::-;;1865:2;1853:9;1844:7;1840:23;1836:32;1833:2;;;1881:1;1878;1871:12;1833:2;1923:1;1947:53;1992:7;1983:6;1972:9;1968:22;1947:53;:::i;:::-;1937:63;;1895:115;1823:194;;;;:::o;2023:282::-;;2142:2;2130:9;2121:7;2117:23;2113:32;2110:2;;;2158:1;2155;2148:12;2110:2;2200:1;2224:64;2280:7;2271:6;2260:9;2256:22;2224:64;:::i;:::-;2214:74;;2172:126;2100:205;;;;:::o;2311:716::-;;;;2491:3;2479:9;2470:7;2466:23;2462:33;2459:2;;;2508:1;2505;2498:12;2459:2;2550:1;2574:53;2619:7;2610:6;2599:9;2595:22;2574:53;:::i;:::-;2564:63;;2522:115;2675:2;2700:82;2774:7;2765:6;2754:9;2750:22;2700:82;:::i;:::-;2690:92;;2647:145;2858:2;2847:9;2843:18;2830:32;2889:18;2881:6;2878:30;2875:2;;;2921:1;2918;2911:12;2875:2;2948:62;3002:7;2993:6;2982:9;2978:22;2948:62;:::i;:::-;2938:72;;2802:218;2449:578;;;;;:::o;3033:403::-;;;3158:2;3146:9;3137:7;3133:23;3129:32;3126:2;;;3174:1;3171;3164:12;3126:2;3216:1;3240:53;3285:7;3276:6;3265:9;3261:22;3240:53;:::i;:::-;3230:63;;3188:115;3341:2;3366:53;3411:7;3402:6;3391:9;3387:22;3366:53;:::i;:::-;3356:63;;3313:116;3116:320;;;;;:::o;3442:276::-;;3558:2;3546:9;3537:7;3533:23;3529:32;3526:2;;;3574:1;3571;3564:12;3526:2;3616:1;3640:61;3693:7;3684:6;3673:9;3669:22;3640:61;:::i;:::-;3630:71;;3588:123;3516:202;;;;:::o;3724:260::-;;3832:2;3820:9;3811:7;3807:23;3803:32;3800:2;;;3848:1;3845;3838:12;3800:2;3890:1;3914:53;3959:7;3950:6;3939:9;3935:22;3914:53;:::i;:::-;3904:63;;3862:115;3790:194;;;;:::o;3990:282::-;;4109:2;4097:9;4088:7;4084:23;4080:32;4077:2;;;4125:1;4122;4115:12;4077:2;4167:1;4191:64;4247:7;4238:6;4227:9;4223:22;4191:64;:::i;:::-;4181:74;;4139:126;4067:205;;;;:::o;4278:295::-;;4426:104;4526:3;4518:6;4426:104;:::i;:::-;4562:4;4557:3;4553:14;4539:28;;4416:157;;;;:::o;4579:268::-;;4739:102;4837:3;4829:6;4739:102;:::i;:::-;4725:116;;4715:132;;;;:::o;4853:108::-;4930:24;4948:5;4930:24;:::i;:::-;4925:3;4918:37;4908:53;;:::o;4967:118::-;5054:24;5072:5;5054:24;:::i;:::-;5049:3;5042:37;5032:53;;:::o;5155:964::-;;5361:83;5438:5;5361:83;:::i;:::-;5460:115;5568:6;5563:3;5460:115;:::i;:::-;5453:122;;5599:85;5678:5;5599:85;:::i;:::-;5707:7;5738:1;5723:371;5748:6;5745:1;5742:13;5723:371;;;5824:6;5818:13;5851:121;5968:3;5953:13;5851:121;:::i;:::-;5844:128;;5995:89;6077:6;5995:89;:::i;:::-;5985:99;;5783:311;5770:1;5767;5763:9;5758:14;;5723:371;;;5727:14;6110:3;6103:10;;5337:782;;;;;;;:::o;6187:1135::-;;6391:82;6467:5;6391:82;:::i;:::-;6489:114;6596:6;6591:3;6489:114;:::i;:::-;6482:121;;6629:3;6674:4;6666:6;6662:17;6657:3;6653:27;6704:84;6782:5;6704:84;:::i;:::-;6811:7;6842:1;6827:450;6852:6;6849:1;6846:13;6827:450;;;6923:9;6917:4;6913:20;6908:3;6901:33;6974:6;6968:13;7002:120;7117:4;7102:13;7002:120;:::i;:::-;6994:128;;7145:88;7226:6;7145:88;:::i;:::-;7135:98;;7262:4;7257:3;7253:14;7246:21;;6887:390;6874:1;6871;6867:9;6862:14;;6827:450;;;6831:14;7293:4;7286:11;;7313:3;7306:10;;6367:955;;;;;;;;;:::o;7328:99::-;7399:21;7414:5;7399:21;:::i;:::-;7394:3;7387:34;7377:50;;:::o;7433:340::-;;7537:38;7569:5;7537:38;:::i;:::-;7591:60;7644:6;7639:3;7591:60;:::i;:::-;7584:67;;7660:52;7705:6;7700:3;7693:4;7686:5;7682:16;7660:52;:::i;:::-;7737:29;7759:6;7737:29;:::i;:::-;7732:3;7728:39;7721:46;;7513:260;;;;;:::o;7779:373::-;;7911:38;7943:5;7911:38;:::i;:::-;7965:88;8046:6;8041:3;7965:88;:::i;:::-;7958:95;;8062:52;8107:6;8102:3;8095:4;8088:5;8084:16;8062:52;:::i;:::-;8139:6;8134:3;8130:16;8123:23;;7887:265;;;;;:::o;8158:147::-;8248:50;8292:5;8248:50;:::i;:::-;8243:3;8236:63;8226:79;;:::o;8311:161::-;8408:57;8459:5;8408:57;:::i;:::-;8403:3;8396:70;8386:86;;:::o;8478:155::-;8572:54;8620:5;8572:54;:::i;:::-;8567:3;8560:67;8550:83;;:::o;8639:147::-;8734:45;8773:5;8734:45;:::i;:::-;8729:3;8722:58;8712:74;;:::o;8792:364::-;;8908:39;8941:5;8908:39;:::i;:::-;8963:71;9027:6;9022:3;8963:71;:::i;:::-;8956:78;;9043:52;9088:6;9083:3;9076:4;9069:5;9065:16;9043:52;:::i;:::-;9120:29;9142:6;9120:29;:::i;:::-;9115:3;9111:39;9104:46;;8884:272;;;;;:::o;9162:369::-;;9325:67;9389:2;9384:3;9325:67;:::i;:::-;9318:74;;9422:34;9418:1;9413:3;9409:11;9402:55;9488:7;9483:2;9478:3;9474:12;9467:29;9522:2;9517:3;9513:12;9506:19;;9308:223;;;:::o;9537:370::-;;9700:67;9764:2;9759:3;9700:67;:::i;:::-;9693:74;;9797:34;9793:1;9788:3;9784:11;9777:55;9863:8;9858:2;9853:3;9849:12;9842:30;9898:2;9893:3;9889:12;9882:19;;9683:224;;;:::o;9913:325::-;;10076:67;10140:2;10135:3;10076:67;:::i;:::-;10069:74;;10173:29;10169:1;10164:3;10160:11;10153:50;10229:2;10224:3;10220:12;10213:19;;10059:179;;;:::o;10244:380::-;;10407:67;10471:2;10466:3;10407:67;:::i;:::-;10400:74;;10504:34;10500:1;10495:3;10491:11;10484:55;10570:18;10565:2;10560:3;10556:12;10549:40;10615:2;10610:3;10606:12;10599:19;;10390:234;;;:::o;10630:374::-;;10793:67;10857:2;10852:3;10793:67;:::i;:::-;10786:74;;10890:34;10886:1;10881:3;10877:11;10870:55;10956:12;10951:2;10946:3;10942:12;10935:34;10995:2;10990:3;10986:12;10979:19;;10776:228;;;:::o;11010:368::-;;11173:67;11237:2;11232:3;11173:67;:::i;:::-;11166:74;;11270:34;11266:1;11261:3;11257:11;11250:55;11336:6;11331:2;11326:3;11322:12;11315:28;11369:2;11364:3;11360:12;11353:19;;11156:222;;;:::o;11384:378::-;;11547:67;11611:2;11606:3;11547:67;:::i;:::-;11540:74;;11644:34;11640:1;11635:3;11631:11;11624:55;11710:16;11705:2;11700:3;11696:12;11689:38;11753:2;11748:3;11744:12;11737:19;;11530:232;;;:::o;11768:365::-;;11931:67;11995:2;11990:3;11931:67;:::i;:::-;11924:74;;12028:34;12024:1;12019:3;12015:11;12008:55;12094:3;12089:2;12084:3;12080:12;12073:25;12124:2;12119:3;12115:12;12108:19;;11914:219;;;:::o;12139:330::-;;12302:67;12366:2;12361:3;12302:67;:::i;:::-;12295:74;;12399:34;12395:1;12390:3;12386:11;12379:55;12460:2;12455:3;12451:12;12444:19;;12285:184;;;:::o;12535:508::-;12680:4;12675:3;12671:14;12768:4;12761:5;12757:16;12751:23;12787:63;12844:4;12839:3;12835:14;12821:12;12787:63;:::i;:::-;12695:165;12944:4;12937:5;12933:16;12927:23;12963:63;13020:4;13015:3;13011:14;12997:12;12963:63;:::i;:::-;12870:166;12649:394;;;:::o;13107:1778::-;;13258:6;13253:3;13249:16;13353:4;13346:5;13342:16;13336:23;13372:76;13442:4;13437:3;13433:14;13419:12;13372:76;:::i;:::-;13275:183;13545:4;13538:5;13534:16;13528:23;13564:63;13621:4;13616:3;13612:14;13598:12;13564:63;:::i;:::-;13468:169;13721:4;13714:5;13710:16;13704:23;13740:121;13855:4;13850:3;13846:14;13832:12;13740:121;:::i;:::-;13647:224;13964:4;13957:5;13953:16;13947:23;13983:63;14040:4;14035:3;14031:14;14017:12;13983:63;:::i;:::-;13881:175;14151:4;14144:5;14140:16;14134:23;14170:63;14227:4;14222:3;14218:14;14204:12;14170:63;:::i;:::-;14066:177;14333:4;14326:5;14322:16;14316:23;14352:65;14409:6;14404:3;14400:16;14386:12;14352:65;:::i;:::-;14253:174;14519:4;14512:5;14508:16;14502:23;14538:65;14595:6;14590:3;14586:16;14572:12;14538:65;:::i;:::-;14437:176;14695:4;14688:5;14684:16;14678:23;14750:3;14744:4;14740:14;14731:6;14726:3;14722:16;14715:40;14776:71;14842:4;14828:12;14776:71;:::i;:::-;14768:79;;14623:235;14875:4;14868:11;;13227:1658;;;;;:::o;14951:892::-;15096:4;15091:3;15087:14;15183:4;15176:5;15172:16;15166:23;15202:57;15253:4;15248:3;15244:14;15230:12;15202:57;:::i;:::-;15111:158;15359:4;15352:5;15348:16;15342:23;15378:83;15455:4;15450:3;15446:14;15432:12;15378:83;:::i;:::-;15279:192;15552:4;15545:5;15541:16;15535:23;15571:80;15645:4;15640:3;15636:14;15622:12;15571:80;:::i;:::-;15481:180;15744:4;15737:5;15733:16;15727:23;15763:63;15820:4;15815:3;15811:14;15797:12;15763:63;:::i;:::-;15671:165;15065:778;;;:::o;15849:108::-;15926:24;15944:5;15926:24;:::i;:::-;15921:3;15914:37;15904:53;;:::o;15963:118::-;16050:24;16068:5;16050:24;:::i;:::-;16045:3;16038:37;16028:53;;:::o;16087:271::-;;16239:93;16328:3;16319:6;16239:93;:::i;:::-;16232:100;;16349:3;16342:10;;16221:137;;;;:::o;16364:222::-;;16495:2;16484:9;16480:18;16472:26;;16508:71;16576:1;16565:9;16561:17;16552:6;16508:71;:::i;:::-;16462:124;;;;:::o;16592:348::-;;16759:2;16748:9;16744:18;16736:26;;16772:71;16840:1;16829:9;16825:17;16816:6;16772:71;:::i;:::-;16853:80;16929:2;16918:9;16914:18;16905:6;16853:80;:::i;:::-;16726:214;;;;;:::o;16946:332::-;;17105:2;17094:9;17090:18;17082:26;;17118:71;17186:1;17175:9;17171:17;17162:6;17118:71;:::i;:::-;17199:72;17267:2;17256:9;17252:18;17243:6;17199:72;:::i;:::-;17072:206;;;;;:::o;17284:862::-;;17657:2;17646:9;17642:18;17634:26;;17706:9;17700:4;17696:20;17692:1;17681:9;17677:17;17670:47;17734:166;17895:4;17886:6;17734:166;:::i;:::-;17726:174;;17947:9;17941:4;17937:20;17932:2;17921:9;17917:18;17910:48;17975:164;18134:4;18125:6;17975:164;:::i;:::-;17967:172;;17624:522;;;;;:::o;18152:313::-;;18303:2;18292:9;18288:18;18280:26;;18352:9;18346:4;18342:20;18338:1;18327:9;18323:17;18316:47;18380:78;18453:4;18444:6;18380:78;:::i;:::-;18372:86;;18270:195;;;;:::o;18471:419::-;;18675:2;18664:9;18660:18;18652:26;;18724:9;18718:4;18714:20;18710:1;18699:9;18695:17;18688:47;18752:131;18878:4;18752:131;:::i;:::-;18744:139;;18642:248;;;:::o;18896:419::-;;19100:2;19089:9;19085:18;19077:26;;19149:9;19143:4;19139:20;19135:1;19124:9;19120:17;19113:47;19177:131;19303:4;19177:131;:::i;:::-;19169:139;;19067:248;;;:::o;19321:419::-;;19525:2;19514:9;19510:18;19502:26;;19574:9;19568:4;19564:20;19560:1;19549:9;19545:17;19538:47;19602:131;19728:4;19602:131;:::i;:::-;19594:139;;19492:248;;;:::o;19746:419::-;;19950:2;19939:9;19935:18;19927:26;;19999:9;19993:4;19989:20;19985:1;19974:9;19970:17;19963:47;20027:131;20153:4;20027:131;:::i;:::-;20019:139;;19917:248;;;:::o;20171:419::-;;20375:2;20364:9;20360:18;20352:26;;20424:9;20418:4;20414:20;20410:1;20399:9;20395:17;20388:47;20452:131;20578:4;20452:131;:::i;:::-;20444:139;;20342:248;;;:::o;20596:419::-;;20800:2;20789:9;20785:18;20777:26;;20849:9;20843:4;20839:20;20835:1;20824:9;20820:17;20813:47;20877:131;21003:4;20877:131;:::i;:::-;20869:139;;20767:248;;;:::o;21021:419::-;;21225:2;21214:9;21210:18;21202:26;;21274:9;21268:4;21264:20;21260:1;21249:9;21245:17;21238:47;21302:131;21428:4;21302:131;:::i;:::-;21294:139;;21192:248;;;:::o;21446:419::-;;21650:2;21639:9;21635:18;21627:26;;21699:9;21693:4;21689:20;21685:1;21674:9;21670:17;21663:47;21727:131;21853:4;21727:131;:::i;:::-;21719:139;;21617:248;;;:::o;21871:419::-;;22075:2;22064:9;22060:18;22052:26;;22124:9;22118:4;22114:20;22110:1;22099:9;22095:17;22088:47;22152:131;22278:4;22152:131;:::i;:::-;22144:139;;22042:248;;;:::o;22296:222::-;;22427:2;22416:9;22412:18;22404:26;;22440:71;22508:1;22497:9;22493:17;22484:6;22440:71;:::i;:::-;22394:124;;;;:::o;22524:278::-;;22590:2;22584:9;22574:19;;22632:4;22624:6;22620:17;22739:6;22727:10;22724:22;22703:18;22691:10;22688:34;22685:62;22682:2;;;22750:13;;:::i;:::-;22682:2;22785:10;22781:2;22774:22;22564:238;;;;:::o;22808:326::-;;22959:18;22951:6;22948:30;22945:2;;;22981:13;;:::i;:::-;22945:2;23061:4;23057:9;23050:4;23042:6;23038:17;23034:33;23026:41;;23122:4;23116;23112:15;23104:23;;22874:260;;;:::o;23140:161::-;;23259:3;23251:11;;23289:4;23284:3;23280:14;23272:22;;23241:60;;;:::o;23307:160::-;;23425:3;23417:11;;23455:4;23450:3;23446:14;23438:22;;23407:60;;;:::o;23473:143::-;;23603:5;23597:12;23587:22;;23576:40;;;:::o;23622:142::-;;23751:5;23745:12;23735:22;;23724:40;;;:::o;23770:98::-;;23855:5;23849:12;23839:22;;23828:40;;;:::o;23874:99::-;;23960:5;23954:12;23944:22;;23933:40;;;:::o;23979:142::-;;24110:4;24105:3;24101:14;24093:22;;24083:38;;;:::o;24127:141::-;;24257:4;24252:3;24248:14;24240:22;;24230:38;;;:::o;24274:213::-;;24436:6;24431:3;24424:19;24476:4;24471:3;24467:14;24452:29;;24414:73;;;;:::o;24493:212::-;;24654:6;24649:3;24642:19;24694:4;24689:3;24685:14;24670:29;;24632:73;;;;:::o;24711:158::-;;24818:6;24813:3;24806:19;24858:4;24853:3;24849:14;24834:29;;24796:73;;;;:::o;24875:147::-;;25013:3;24998:18;;24988:34;;;;:::o;25028:169::-;;25146:6;25141:3;25134:19;25186:4;25181:3;25177:14;25162:29;;25124:73;;;;:::o;25203:96::-;;25269:24;25287:5;25269:24;:::i;:::-;25258:35;;25248:51;;;:::o;25305:90::-;;25382:5;25375:13;25368:21;25357:32;;25347:48;;;:::o;25401:141::-;;25482:5;25471:16;;25488:48;25530:5;25488:48;:::i;:::-;25461:81;;;:::o;25548:155::-;;25636:5;25625:16;;25642:55;25691:5;25642:55;:::i;:::-;25615:88;;;:::o;25709:149::-;;25794:5;25783:16;;25800:52;25846:5;25800:52;:::i;:::-;25773:85;;;:::o;25864:126::-;;25941:42;25934:5;25930:54;25919:65;;25909:81;;;:::o;25996:77::-;;26062:5;26051:16;;26041:32;;;:::o;26079:141::-;;26175:39;26208:5;26175:39;:::i;:::-;26162:52;;26152:68;;;:::o;26226:155::-;;26329:46;26369:5;26329:46;:::i;:::-;26316:59;;26306:75;;;:::o;26387:149::-;;26487:43;26524:5;26487:43;:::i;:::-;26474:56;;26464:72;;;:::o;26542:121::-;;26633:24;26651:5;26633:24;:::i;:::-;26620:37;;26610:53;;;:::o;26669:154::-;26753:6;26748:3;26743;26730:30;26815:1;26806:6;26801:3;26797:16;26790:27;26720:103;;;:::o;26829:307::-;26897:1;26907:113;26921:6;26918:1;26915:13;26907:113;;;27006:1;27001:3;26997:11;26991:18;26987:1;26982:3;26978:11;26971:39;26943:2;26940:1;26936:10;26931:15;;26907:113;;;27038:6;27035:1;27032:13;27029:2;;;27118:1;27109:6;27104:3;27100:16;27093:27;27029:2;26878:258;;;;:::o;27142:48::-;27175:9;27196:102;;27288:2;27284:7;27279:2;27272:5;27268:14;27264:28;27254:38;;27244:54;;;:::o;27304:115::-;27392:1;27385:5;27382:12;27372:2;;27398:13;;:::i;:::-;27372:2;27362:57;:::o;27425:122::-;27520:1;27513:5;27510:12;27500:2;;27526:13;;:::i;:::-;27500:2;27490:57;:::o;27553:119::-;27645:1;27638:5;27635:12;27625:2;;27651:13;;:::i;:::-;27625:2;27615:57;:::o;27678:122::-;27751:24;27769:5;27751:24;:::i;:::-;27744:5;27741:35;27731:2;;27790:1;27787;27780:12;27731:2;27721:79;:::o;27806:116::-;27876:21;27891:5;27876:21;:::i;:::-;27869:5;27866:32;27856:2;;27912:1;27909;27902:12;27856:2;27846:76;:::o;27928:122::-;28001:24;28019:5;28001:24;:::i;:::-;27994:5;27991:35;27981:2;;28040:1;28037;28030:12;27981:2;27971:79;:::o",
  "source": "/*\n\n    Copyright 2020 Kollateral LLC.\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n\n*/\n\n// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.7.0;\npragma experimental ABIEncoderV2;\n\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"../../common/invoke/IInvoker.sol\";\nimport \"../../common/utils/BalanceCarrier.sol\";\nimport \"../../common/utils/WETHHandler.sol\";\nimport \"../ILiquidityProxy.sol\";\nimport \"./ISoloMargin.sol\";\nimport \"./Types.sol\";\nimport \"./ICallee.sol\";\n\ncontract SoloLiquidityProxy is\n    Ownable,\n    ILiquidityProxy,\n    BalanceCarrier,\n    ICallee,\n    WETHHandler\n{\n    using SafeMath for uint256;\n\n    uint256 internal NULL_ACCOUNT_ID = 0;\n    uint256 internal NULL_MARKET_ID = 0;\n    Types.AssetAmount internal NULL_AMOUNT = Types.AssetAmount({\n        sign: false,\n        denomination: Types.AssetDenomination.Wei,\n        ref: Types.AssetReference.Delta,\n        value: 0\n    });\n    bytes internal NULL_DATA = \"\";\n\n    address internal _soloMarginAddress;\n    mapping(address => uint256) internal _tokenAddressToMarketId;\n    mapping(uint256 => address) internal _marketIdToTokenAddress;\n    mapping(address => bool) internal _tokenAddressRegistered;\n\n    address payable internal _scheduleInvokerAddress;\n    address internal _scheduleTokenAddress;\n    uint256 internal _scheduleTokenAmount;\n\n    constructor(address soloMarginAddress, address payable wethAddress)\n        BalanceCarrier(address(1))\n        WETHHandler(wethAddress)\n    {\n        _soloMarginAddress = soloMarginAddress;\n    }\n\n    receive() external payable {}\n\n    fallback() external payable {}\n\n    function registerPool(uint256 marketId) external onlyOwner {\n        address tokenAddress = unmapTokenAddress(\n            ISoloMargin(_soloMarginAddress).getMarketTokenAddress(marketId)\n        );\n        require(\n            tokenAddress != address(0),\n            \"SoloLiquidityProxy: cannot register empty market\"\n        );\n\n        _tokenAddressToMarketId[tokenAddress] = marketId;\n        _marketIdToTokenAddress[marketId] = tokenAddress;\n        _tokenAddressRegistered[tokenAddress] = true;\n        IERC20(remapTokenAddress(tokenAddress)).approve(\n            _soloMarginAddress,\n            uint256(-1)\n        );\n    }\n\n    function deregisterPool(uint256 marketId) external onlyOwner {\n        address tokenAddress = _marketIdToTokenAddress[marketId];\n\n        _tokenAddressToMarketId[tokenAddress] = 0;\n        _marketIdToTokenAddress[marketId] = address(0);\n        _tokenAddressRegistered[tokenAddress] = false;\n        IERC20(remapTokenAddress(tokenAddress)).approve(_soloMarginAddress, 0);\n    }\n\n    function getRepaymentAddress(address tokenAddress)\n        external\n        view\n        override\n        returns (address)\n    {\n        return address(this);\n    }\n\n    function getTotalReserve(address tokenAddress)\n        external\n        view\n        override\n        returns (uint256)\n    {\n        if (isRegistered(tokenAddress) && !isClosing(tokenAddress)) {\n            return\n                IERC20(remapTokenAddress(tokenAddress)).balanceOf(\n                    _soloMarginAddress\n                );\n        }\n\n        return 0;\n    }\n\n    function getRepaymentAmount(address tokenAddress, uint256 tokenAmount)\n        external\n        view\n        override\n        returns (uint256)\n    {\n        return getRepaymentAmountInternal(tokenAddress, tokenAmount);\n    }\n\n    function getRepaymentAmountInternal(\n        address tokenAddress,\n        uint256 tokenAmount\n    ) internal view returns (uint256) {\n        // Add 1 wei for markets 0-1 and 2 wei for markets 2-3\n        return\n            tokenAmount.add(marketIdFromTokenAddress(tokenAddress) < 2 ? 1 : 2);\n    }\n\n    function borrow(address tokenAddress, uint256 tokenAmount)\n        external\n        override\n    {\n        _scheduleInvokerAddress = msg.sender;\n        _scheduleTokenAddress = tokenAddress;\n        _scheduleTokenAmount = tokenAmount;\n\n        ISoloMargin solo = ISoloMargin(_soloMarginAddress);\n        Types.ActionArgs[] memory operations = new Types.ActionArgs[](3);\n        operations[0] = getWithdrawAction(tokenAddress, tokenAmount);\n        operations[1] = getCallAction();\n        operations[2] = getDepositAction(\n            tokenAddress,\n            getRepaymentAmountInternal(tokenAddress, tokenAmount)\n        );\n        Types.AccountInfo[] memory accountInfos = new Types.AccountInfo[](1);\n        accountInfos[0] = getAccountInfo();\n\n        solo.operate(accountInfos, operations);\n\n        _scheduleInvokerAddress = address(0);\n        _scheduleTokenAddress = address(0);\n        _scheduleTokenAmount = 0;\n    }\n\n    function callFunction(\n        address sender,\n        Types.AccountInfo memory accountInfo,\n        bytes memory data\n    ) public override {\n        require(\n            _scheduleInvokerAddress != address(0),\n            \"SoloLiquidityProxy: not scheduled\"\n        );\n\n        if (_scheduleTokenAddress == address(1)) {\n            unwrap(_scheduleTokenAmount);\n        }\n\n        require(\n            transfer(\n                _scheduleTokenAddress,\n                _scheduleInvokerAddress,\n                _scheduleTokenAmount\n            ),\n            \"SoloLiquidityProxy: transfer to invoker failed\"\n        );\n\n        IInvoker invoker = IInvoker(_scheduleInvokerAddress);\n        invoker.invokeCallback();\n\n        if (_scheduleTokenAddress == address(1)) {\n            wrap(\n                getRepaymentAmountInternal(\n                    _scheduleTokenAddress,\n                    _scheduleTokenAmount\n                )\n            );\n        }\n    }\n\n    function getAccountInfo() internal view returns (Types.AccountInfo memory) {\n        return Types.AccountInfo({owner: address(this), number: 1});\n    }\n\n    function getWithdrawAction(address tokenAddress, uint256 tokenAmount)\n        internal\n        view\n        returns (Types.ActionArgs memory)\n    {\n        return\n            Types.ActionArgs({\n                actionType: Types.ActionType.Withdraw,\n                accountId: 0,\n                amount: Types.AssetAmount({\n                    sign: false,\n                    denomination: Types.AssetDenomination.Wei,\n                    ref: Types.AssetReference.Delta,\n                    value: tokenAmount\n                }),\n                primaryMarketId: marketIdFromTokenAddress(tokenAddress),\n                secondaryMarketId: NULL_MARKET_ID,\n                otherAddress: address(this),\n                otherAccountId: NULL_ACCOUNT_ID,\n                data: NULL_DATA\n            });\n    }\n\n    function getDepositAction(address tokenAddress, uint256 repaymentAmount)\n        internal\n        view\n        returns (Types.ActionArgs memory)\n    {\n        return\n            Types.ActionArgs({\n                actionType: Types.ActionType.Deposit,\n                accountId: 0,\n                amount: Types.AssetAmount({\n                    sign: true,\n                    denomination: Types.AssetDenomination.Wei,\n                    ref: Types.AssetReference.Delta,\n                    value: repaymentAmount\n                }),\n                primaryMarketId: marketIdFromTokenAddress(tokenAddress),\n                secondaryMarketId: NULL_MARKET_ID,\n                otherAddress: address(this),\n                otherAccountId: NULL_ACCOUNT_ID,\n                data: NULL_DATA\n            });\n    }\n\n    function getCallAction() internal view returns (Types.ActionArgs memory) {\n        return\n            Types.ActionArgs({\n                actionType: Types.ActionType.Call,\n                accountId: 0,\n                amount: NULL_AMOUNT,\n                primaryMarketId: NULL_MARKET_ID,\n                secondaryMarketId: NULL_MARKET_ID,\n                otherAddress: address(this),\n                otherAccountId: NULL_ACCOUNT_ID,\n                data: NULL_DATA\n            });\n    }\n\n    function isRegistered(address tokenAddress) internal view returns (bool) {\n        return _tokenAddressRegistered[tokenAddress];\n    }\n\n    function marketIdFromTokenAddress(address tokenAddress)\n        internal\n        view\n        returns (uint256)\n    {\n        return _tokenAddressToMarketId[tokenAddress];\n    }\n\n    function remapTokenAddress(address tokenAddress)\n        internal\n        view\n        returns (address)\n    {\n        return tokenAddress == address(1) ? _wethAddress : tokenAddress;\n    }\n\n    function unmapTokenAddress(address tokenAddress)\n        internal\n        view\n        returns (address)\n    {\n        return tokenAddress == _wethAddress ? address(1) : tokenAddress;\n    }\n\n    function isClosing(address tokenAddress) internal view returns (bool) {\n        uint256 marketId = _tokenAddressToMarketId[tokenAddress];\n        return ISoloMargin(_soloMarginAddress).getMarketIsClosing(marketId);\n    }\n}\n",
  "sourcePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/dydx/SoloLiquidityProxy.sol",
  "ast": {
    "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/dydx/SoloLiquidityProxy.sol",
    "exportedSymbols": {
      "BalanceCarrier": [
        1464
      ],
      "Context": [
        5279
      ],
      "ExternalCaller": [
        1563
      ],
      "ICallee": [
        2482
      ],
      "IERC20": [
        6165
      ],
      "IInvocationHook": [
        1170
      ],
      "IInvoker": [
        1234
      ],
      "ILiquidityProxy": [
        2148
      ],
      "ISoloMargin": [
        2510
      ],
      "IWETH": [
        1578
      ],
      "Ownable": [
        5388
      ],
      "SafeMath": [
        5584
      ],
      "SoloLiquidityProxy": [
        3171
      ],
      "Types": [
        3226
      ],
      "WETHHandler": [
        1650
      ]
    },
    "id": 3172,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 2512,
        "literals": [
          "solidity",
          "^",
          "0.7",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "640:23:23"
      },
      {
        "id": 2513,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "664:33:23"
      },
      {
        "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
        "file": "@openzeppelin/contracts/math/SafeMath.sol",
        "id": 2514,
        "nodeType": "ImportDirective",
        "scope": 3172,
        "sourceUnit": 5585,
        "src": "699:51:23",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
        "file": "@openzeppelin/contracts/access/Ownable.sol",
        "id": 2515,
        "nodeType": "ImportDirective",
        "scope": 3172,
        "sourceUnit": 5389,
        "src": "751:52:23",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
        "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
        "id": 2516,
        "nodeType": "ImportDirective",
        "scope": 3172,
        "sourceUnit": 6166,
        "src": "804:56:23",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvoker.sol",
        "file": "../../common/invoke/IInvoker.sol",
        "id": 2517,
        "nodeType": "ImportDirective",
        "scope": 3172,
        "sourceUnit": 1235,
        "src": "861:42:23",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/BalanceCarrier.sol",
        "file": "../../common/utils/BalanceCarrier.sol",
        "id": 2518,
        "nodeType": "ImportDirective",
        "scope": 3172,
        "sourceUnit": 1465,
        "src": "904:47:23",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/WETHHandler.sol",
        "file": "../../common/utils/WETHHandler.sol",
        "id": 2519,
        "nodeType": "ImportDirective",
        "scope": 3172,
        "sourceUnit": 1651,
        "src": "952:44:23",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/ILiquidityProxy.sol",
        "file": "../ILiquidityProxy.sol",
        "id": 2520,
        "nodeType": "ImportDirective",
        "scope": 3172,
        "sourceUnit": 2149,
        "src": "997:32:23",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/dydx/ISoloMargin.sol",
        "file": "./ISoloMargin.sol",
        "id": 2521,
        "nodeType": "ImportDirective",
        "scope": 3172,
        "sourceUnit": 2511,
        "src": "1030:27:23",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/dydx/Types.sol",
        "file": "./Types.sol",
        "id": 2522,
        "nodeType": "ImportDirective",
        "scope": 3172,
        "sourceUnit": 3227,
        "src": "1058:21:23",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/dydx/ICallee.sol",
        "file": "./ICallee.sol",
        "id": 2523,
        "nodeType": "ImportDirective",
        "scope": 3172,
        "sourceUnit": 2483,
        "src": "1080:23:23",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 2524,
              "name": "Ownable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5388,
              "src": "1140:7:23",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Ownable_$5388",
                "typeString": "contract Ownable"
              }
            },
            "id": 2525,
            "nodeType": "InheritanceSpecifier",
            "src": "1140:7:23"
          },
          {
            "baseName": {
              "id": 2526,
              "name": "ILiquidityProxy",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2148,
              "src": "1153:15:23",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                "typeString": "contract ILiquidityProxy"
              }
            },
            "id": 2527,
            "nodeType": "InheritanceSpecifier",
            "src": "1153:15:23"
          },
          {
            "baseName": {
              "id": 2528,
              "name": "BalanceCarrier",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1464,
              "src": "1174:14:23",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BalanceCarrier_$1464",
                "typeString": "contract BalanceCarrier"
              }
            },
            "id": 2529,
            "nodeType": "InheritanceSpecifier",
            "src": "1174:14:23"
          },
          {
            "baseName": {
              "id": 2530,
              "name": "ICallee",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 2482,
              "src": "1194:7:23",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_ICallee_$2482",
                "typeString": "contract ICallee"
              }
            },
            "id": 2531,
            "nodeType": "InheritanceSpecifier",
            "src": "1194:7:23"
          },
          {
            "baseName": {
              "id": 2532,
              "name": "WETHHandler",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1650,
              "src": "1207:11:23",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_WETHHandler_$1650",
                "typeString": "contract WETHHandler"
              }
            },
            "id": 2533,
            "nodeType": "InheritanceSpecifier",
            "src": "1207:11:23"
          }
        ],
        "contractDependencies": [
          1464,
          1563,
          1650,
          2148,
          2482,
          5279,
          5388
        ],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 3171,
        "linearizedBaseContracts": [
          3171,
          1650,
          2482,
          1464,
          1563,
          2148,
          5388,
          5279
        ],
        "name": "SoloLiquidityProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 2536,
            "libraryName": {
              "id": 2534,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 5584,
              "src": "1231:8:23",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$5584",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "1225:27:23",
            "typeName": {
              "id": 2535,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1244:7:23",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "constant": false,
            "id": 2539,
            "mutability": "mutable",
            "name": "NULL_ACCOUNT_ID",
            "nodeType": "VariableDeclaration",
            "scope": 3171,
            "src": "1258:36:23",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2537,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1258:7:23",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "30",
              "id": 2538,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1293:1:23",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2542,
            "mutability": "mutable",
            "name": "NULL_MARKET_ID",
            "nodeType": "VariableDeclaration",
            "scope": 3171,
            "src": "1300:35:23",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2540,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1300:7:23",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "30",
              "id": 2541,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1334:1:23",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_0_by_1",
                "typeString": "int_const 0"
              },
              "value": "0"
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2555,
            "mutability": "mutable",
            "name": "NULL_AMOUNT",
            "nodeType": "VariableDeclaration",
            "scope": 3171,
            "src": "1341:197:23",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_AssetAmount_$3198_storage",
              "typeString": "struct Types.AssetAmount"
            },
            "typeName": {
              "id": 2543,
              "name": "Types.AssetAmount",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3198,
              "src": "1341:17:23",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_AssetAmount_$3198_storage_ptr",
                "typeString": "struct Types.AssetAmount"
              }
            },
            "value": {
              "arguments": [
                {
                  "hexValue": "66616c7365",
                  "id": 2546,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "bool",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1416:5:23",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "value": "false"
                },
                {
                  "expression": {
                    "expression": {
                      "id": 2547,
                      "name": "Types",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3226,
                      "src": "1445:5:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Types_$3226_$",
                        "typeString": "type(library Types)"
                      }
                    },
                    "id": 2548,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "AssetDenomination",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3186,
                    "src": "1445:23:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$3186_$",
                      "typeString": "type(enum Types.AssetDenomination)"
                    }
                  },
                  "id": 2549,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberName": "Wei",
                  "nodeType": "MemberAccess",
                  "src": "1445:27:23",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_AssetDenomination_$3186",
                    "typeString": "enum Types.AssetDenomination"
                  }
                },
                {
                  "expression": {
                    "expression": {
                      "id": 2550,
                      "name": "Types",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3226,
                      "src": "1487:5:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_Types_$3226_$",
                        "typeString": "type(library Types)"
                      }
                    },
                    "id": 2551,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "AssetReference",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3189,
                    "src": "1487:20:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_enum$_AssetReference_$3189_$",
                      "typeString": "type(enum Types.AssetReference)"
                    }
                  },
                  "id": 2552,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "memberName": "Delta",
                  "nodeType": "MemberAccess",
                  "src": "1487:26:23",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_AssetReference_$3189",
                    "typeString": "enum Types.AssetReference"
                  }
                },
                {
                  "hexValue": "30",
                  "id": 2553,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1530:1:23",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  },
                  "value": "0"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  {
                    "typeIdentifier": "t_enum$_AssetDenomination_$3186",
                    "typeString": "enum Types.AssetDenomination"
                  },
                  {
                    "typeIdentifier": "t_enum$_AssetReference_$3189",
                    "typeString": "enum Types.AssetReference"
                  },
                  {
                    "typeIdentifier": "t_rational_0_by_1",
                    "typeString": "int_const 0"
                  }
                ],
                "expression": {
                  "id": 2544,
                  "name": "Types",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3226,
                  "src": "1382:5:23",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Types_$3226_$",
                    "typeString": "type(library Types)"
                  }
                },
                "id": 2545,
                "isConstant": false,
                "isLValue": false,
                "isPure": false,
                "lValueRequested": false,
                "memberName": "AssetAmount",
                "nodeType": "MemberAccess",
                "referencedDeclaration": 3198,
                "src": "1382:17:23",
                "typeDescriptions": {
                  "typeIdentifier": "t_type$_t_struct$_AssetAmount_$3198_storage_ptr_$",
                  "typeString": "type(struct Types.AssetAmount storage pointer)"
                }
              },
              "id": 2554,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "structConstructorCall",
              "lValueRequested": false,
              "names": [
                "sign",
                "denomination",
                "ref",
                "value"
              ],
              "nodeType": "FunctionCall",
              "src": "1382:156:23",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_AssetAmount_$3198_memory_ptr",
                "typeString": "struct Types.AssetAmount memory"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2558,
            "mutability": "mutable",
            "name": "NULL_DATA",
            "nodeType": "VariableDeclaration",
            "scope": 3171,
            "src": "1544:29:23",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes_storage",
              "typeString": "bytes"
            },
            "typeName": {
              "id": 2556,
              "name": "bytes",
              "nodeType": "ElementaryTypeName",
              "src": "1544:5:23",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes_storage_ptr",
                "typeString": "bytes"
              }
            },
            "value": {
              "hexValue": "",
              "id": 2557,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1571:2:23",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                "typeString": "literal_string \"\""
              },
              "value": ""
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2560,
            "mutability": "mutable",
            "name": "_soloMarginAddress",
            "nodeType": "VariableDeclaration",
            "scope": 3171,
            "src": "1580:35:23",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2559,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1580:7:23",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2564,
            "mutability": "mutable",
            "name": "_tokenAddressToMarketId",
            "nodeType": "VariableDeclaration",
            "scope": 3171,
            "src": "1621:60:23",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
              "typeString": "mapping(address => uint256)"
            },
            "typeName": {
              "id": 2563,
              "keyType": {
                "id": 2561,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1629:7:23",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1621:27:23",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                "typeString": "mapping(address => uint256)"
              },
              "valueType": {
                "id": 2562,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1640:7:23",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2568,
            "mutability": "mutable",
            "name": "_marketIdToTokenAddress",
            "nodeType": "VariableDeclaration",
            "scope": 3171,
            "src": "1687:60:23",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
              "typeString": "mapping(uint256 => address)"
            },
            "typeName": {
              "id": 2567,
              "keyType": {
                "id": 2565,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1695:7:23",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1687:27:23",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                "typeString": "mapping(uint256 => address)"
              },
              "valueType": {
                "id": 2566,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1706:7:23",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2572,
            "mutability": "mutable",
            "name": "_tokenAddressRegistered",
            "nodeType": "VariableDeclaration",
            "scope": 3171,
            "src": "1753:57:23",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
              "typeString": "mapping(address => bool)"
            },
            "typeName": {
              "id": 2571,
              "keyType": {
                "id": 2569,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1761:7:23",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1753:24:23",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                "typeString": "mapping(address => bool)"
              },
              "valueType": {
                "id": 2570,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1772:4:23",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2574,
            "mutability": "mutable",
            "name": "_scheduleInvokerAddress",
            "nodeType": "VariableDeclaration",
            "scope": 3171,
            "src": "1817:48:23",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address_payable",
              "typeString": "address payable"
            },
            "typeName": {
              "id": 2573,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1817:15:23",
              "stateMutability": "payable",
              "typeDescriptions": {
                "typeIdentifier": "t_address_payable",
                "typeString": "address payable"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2576,
            "mutability": "mutable",
            "name": "_scheduleTokenAddress",
            "nodeType": "VariableDeclaration",
            "scope": 3171,
            "src": "1871:38:23",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 2575,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1871:7:23",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 2578,
            "mutability": "mutable",
            "name": "_scheduleTokenAmount",
            "nodeType": "VariableDeclaration",
            "scope": 3171,
            "src": "1915:37:23",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 2577,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1915:7:23",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 2598,
              "nodeType": "Block",
              "src": "2099:55:23",
              "statements": [
                {
                  "expression": {
                    "id": 2596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2594,
                      "name": "_soloMarginAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2560,
                      "src": "2109:18:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2595,
                      "name": "soloMarginAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2580,
                      "src": "2130:17:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2109:38:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2597,
                  "nodeType": "ExpressionStatement",
                  "src": "2109:38:23"
                }
              ]
            },
            "id": 2599,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "arguments": [
                      {
                        "hexValue": "31",
                        "id": 2587,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2058:1:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 2586,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "2050:7:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 2585,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2050:7:23",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 2588,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2050:10:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  }
                ],
                "id": 2589,
                "modifierName": {
                  "id": 2584,
                  "name": "BalanceCarrier",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1464,
                  "src": "2035:14:23",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_BalanceCarrier_$1464_$",
                    "typeString": "type(contract BalanceCarrier)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2035:26:23"
              },
              {
                "arguments": [
                  {
                    "id": 2591,
                    "name": "wethAddress",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 2582,
                    "src": "2082:11:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  }
                ],
                "id": 2592,
                "modifierName": {
                  "id": 2590,
                  "name": "WETHHandler",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 1650,
                  "src": "2070:11:23",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_WETHHandler_$1650_$",
                    "typeString": "type(contract WETHHandler)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2070:24:23"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2583,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2580,
                  "mutability": "mutable",
                  "name": "soloMarginAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 2599,
                  "src": "1971:25:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2579,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1971:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2582,
                  "mutability": "mutable",
                  "name": "wethAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 2599,
                  "src": "1998:27:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 2581,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1998:15:23",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1970:56:23"
            },
            "returnParameters": {
              "id": 2593,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2099:0:23"
            },
            "scope": 3171,
            "src": "1959:195:23",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2602,
              "nodeType": "Block",
              "src": "2187:2:23",
              "statements": []
            },
            "id": 2603,
            "implemented": true,
            "kind": "receive",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2600,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2167:2:23"
            },
            "returnParameters": {
              "id": 2601,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2187:0:23"
            },
            "scope": 3171,
            "src": "2160:29:23",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2606,
              "nodeType": "Block",
              "src": "2223:2:23",
              "statements": []
            },
            "id": 2607,
            "implemented": true,
            "kind": "fallback",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2604,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2203:2:23"
            },
            "returnParameters": {
              "id": 2605,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2223:0:23"
            },
            "scope": 3171,
            "src": "2195:30:23",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2667,
              "nodeType": "Block",
              "src": "2290:570:23",
              "statements": [
                {
                  "assignments": [
                    2615
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2615,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 2667,
                      "src": "2300:20:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2614,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2300:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2624,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2621,
                            "name": "marketId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2609,
                            "src": "2408:8:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "arguments": [
                              {
                                "id": 2618,
                                "name": "_soloMarginAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2560,
                                "src": "2366:18:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2617,
                              "name": "ISoloMargin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2510,
                              "src": "2354:11:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_ISoloMargin_$2510_$",
                                "typeString": "type(contract ISoloMargin)"
                              }
                            },
                            "id": 2619,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2354:31:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ISoloMargin_$2510",
                              "typeString": "contract ISoloMargin"
                            }
                          },
                          "id": 2620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getMarketTokenAddress",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2509,
                          "src": "2354:53:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$",
                            "typeString": "function (uint256) view external returns (address)"
                          }
                        },
                        "id": 2622,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2354:63:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2616,
                      "name": "unmapTokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3149,
                      "src": "2323:17:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                        "typeString": "function (address) view returns (address)"
                      }
                    },
                    "id": 2623,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2323:104:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2300:127:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 2631,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2626,
                          "name": "tokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2615,
                          "src": "2458:12:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 2629,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2482:1:23",
                              "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": 2628,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2474:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2627,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2474:7:23",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2474:10:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "2458:26:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "536f6c6f4c697175696469747950726f78793a2063616e6e6f7420726567697374657220656d707479206d61726b6574",
                        "id": 2632,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2498:50:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_325acd3716ec1c446e4602a383beb016d9ec685175702cd049a92ae420fe28a1",
                          "typeString": "literal_string \"SoloLiquidityProxy: cannot register empty market\""
                        },
                        "value": "SoloLiquidityProxy: cannot register empty market"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_325acd3716ec1c446e4602a383beb016d9ec685175702cd049a92ae420fe28a1",
                          "typeString": "literal_string \"SoloLiquidityProxy: cannot register empty market\""
                        }
                      ],
                      "id": 2625,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2437:7:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2633,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2437:121:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2634,
                  "nodeType": "ExpressionStatement",
                  "src": "2437:121:23"
                },
                {
                  "expression": {
                    "id": 2639,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 2635,
                        "name": "_tokenAddressToMarketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2564,
                        "src": "2569:23:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2637,
                      "indexExpression": {
                        "id": 2636,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2615,
                        "src": "2593:12:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2569:37:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2638,
                      "name": "marketId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2609,
                      "src": "2609:8:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2569:48:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2640,
                  "nodeType": "ExpressionStatement",
                  "src": "2569:48:23"
                },
                {
                  "expression": {
                    "id": 2645,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 2641,
                        "name": "_marketIdToTokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2568,
                        "src": "2627:23:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 2643,
                      "indexExpression": {
                        "id": 2642,
                        "name": "marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2609,
                        "src": "2651:8:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2627:33:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2644,
                      "name": "tokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2615,
                      "src": "2663:12:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "2627:48:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2646,
                  "nodeType": "ExpressionStatement",
                  "src": "2627:48:23"
                },
                {
                  "expression": {
                    "id": 2651,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 2647,
                        "name": "_tokenAddressRegistered",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2572,
                        "src": "2685:23:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 2649,
                      "indexExpression": {
                        "id": 2648,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2615,
                        "src": "2709:12:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2685:37:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 2650,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2725:4:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2685:44:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2652,
                  "nodeType": "ExpressionStatement",
                  "src": "2685:44:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2659,
                        "name": "_soloMarginAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2560,
                        "src": "2800:18:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 2663,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "2840:2:23",
                            "subExpression": {
                              "hexValue": "31",
                              "id": 2662,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2841:1:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          ],
                          "id": 2661,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2832:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 2660,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2832:7:23",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 2664,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2832:11:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 2655,
                                "name": "tokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2615,
                                "src": "2764:12:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2654,
                              "name": "remapTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3131,
                              "src": "2746:17:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                                "typeString": "function (address) view returns (address)"
                              }
                            },
                            "id": 2656,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2746:31:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2653,
                          "name": "IERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6165,
                          "src": "2739:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC20_$6165_$",
                            "typeString": "type(contract IERC20)"
                          }
                        },
                        "id": 2657,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2739:39:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$6165",
                          "typeString": "contract IERC20"
                        }
                      },
                      "id": 2658,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "approve",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6134,
                      "src": "2739:47:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 2665,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2739:114:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2666,
                  "nodeType": "ExpressionStatement",
                  "src": "2739:114:23"
                }
              ]
            },
            "functionSelector": "0c938657",
            "id": 2668,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 2612,
                "modifierName": {
                  "id": 2611,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5337,
                  "src": "2280:9:23",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2280:9:23"
              }
            ],
            "name": "registerPool",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2610,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2609,
                  "mutability": "mutable",
                  "name": "marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2668,
                  "src": "2253:16:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2608,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2253:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2252:18:23"
            },
            "returnParameters": {
              "id": 2613,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2290:0:23"
            },
            "scope": 3171,
            "src": "2231:629:23",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2712,
              "nodeType": "Block",
              "src": "2927:316:23",
              "statements": [
                {
                  "assignments": [
                    2676
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2676,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "nodeType": "VariableDeclaration",
                      "scope": 2712,
                      "src": "2937:20:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2675,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2937:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2680,
                  "initialValue": {
                    "baseExpression": {
                      "id": 2677,
                      "name": "_marketIdToTokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2568,
                      "src": "2960:23:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                        "typeString": "mapping(uint256 => address)"
                      }
                    },
                    "id": 2679,
                    "indexExpression": {
                      "id": 2678,
                      "name": "marketId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2670,
                      "src": "2984:8:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2960:33:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2937:56:23"
                },
                {
                  "expression": {
                    "id": 2685,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 2681,
                        "name": "_tokenAddressToMarketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2564,
                        "src": "3004:23:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                          "typeString": "mapping(address => uint256)"
                        }
                      },
                      "id": 2683,
                      "indexExpression": {
                        "id": 2682,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2676,
                        "src": "3028:12:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3004:37:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "30",
                      "id": 2684,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3044:1:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3004:41:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2686,
                  "nodeType": "ExpressionStatement",
                  "src": "3004:41:23"
                },
                {
                  "expression": {
                    "id": 2694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 2687,
                        "name": "_marketIdToTokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2568,
                        "src": "3055:23:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$",
                          "typeString": "mapping(uint256 => address)"
                        }
                      },
                      "id": 2689,
                      "indexExpression": {
                        "id": 2688,
                        "name": "marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2670,
                        "src": "3079:8:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3055:33:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 2692,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3099:1:23",
                          "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": 2691,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3091:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 2690,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3091:7:23",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 2693,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3091:10:23",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "3055:46:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2695,
                  "nodeType": "ExpressionStatement",
                  "src": "3055:46:23"
                },
                {
                  "expression": {
                    "id": 2700,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 2696,
                        "name": "_tokenAddressRegistered",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2572,
                        "src": "3111:23:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                          "typeString": "mapping(address => bool)"
                        }
                      },
                      "id": 2698,
                      "indexExpression": {
                        "id": 2697,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2676,
                        "src": "3135:12:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "3111:37:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "66616c7365",
                      "id": 2699,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3151:5:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "3111:45:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2701,
                  "nodeType": "ExpressionStatement",
                  "src": "3111:45:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2708,
                        "name": "_soloMarginAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2560,
                        "src": "3214:18:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 2709,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3234:1:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 2704,
                                "name": "tokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2676,
                                "src": "3191:12:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2703,
                              "name": "remapTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3131,
                              "src": "3173:17:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                                "typeString": "function (address) view returns (address)"
                              }
                            },
                            "id": 2705,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3173:31:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2702,
                          "name": "IERC20",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6165,
                          "src": "3166:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IERC20_$6165_$",
                            "typeString": "type(contract IERC20)"
                          }
                        },
                        "id": 2706,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3166:39:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERC20_$6165",
                          "typeString": "contract IERC20"
                        }
                      },
                      "id": 2707,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "approve",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6134,
                      "src": "3166:47:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 2710,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3166:70:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2711,
                  "nodeType": "ExpressionStatement",
                  "src": "3166:70:23"
                }
              ]
            },
            "functionSelector": "549d0d84",
            "id": 2713,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 2673,
                "modifierName": {
                  "id": 2672,
                  "name": "onlyOwner",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 5337,
                  "src": "2917:9:23",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2917:9:23"
              }
            ],
            "name": "deregisterPool",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2671,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2670,
                  "mutability": "mutable",
                  "name": "marketId",
                  "nodeType": "VariableDeclaration",
                  "scope": 2713,
                  "src": "2890:16:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2669,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2890:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2889:18:23"
            },
            "returnParameters": {
              "id": 2674,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2927:0:23"
            },
            "scope": 3171,
            "src": "2866:377:23",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              2131
            ],
            "body": {
              "id": 2726,
              "nodeType": "Block",
              "src": "3377:37:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2723,
                        "name": "this",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -28,
                        "src": "3402:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_SoloLiquidityProxy_$3171",
                          "typeString": "contract SoloLiquidityProxy"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_SoloLiquidityProxy_$3171",
                          "typeString": "contract SoloLiquidityProxy"
                        }
                      ],
                      "id": 2722,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "3394:7:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 2721,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3394:7:23",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 2724,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3394:13:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "functionReturnParameters": 2720,
                  "id": 2725,
                  "nodeType": "Return",
                  "src": "3387:20:23"
                }
              ]
            },
            "functionSelector": "680c7b94",
            "id": 2727,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getRepaymentAddress",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2717,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3338:8:23"
            },
            "parameters": {
              "id": 2716,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2715,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 2727,
                  "src": "3278:20:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2714,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3278:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3277:22:23"
            },
            "returnParameters": {
              "id": 2720,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2719,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2727,
                  "src": "3364:7:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2718,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3364:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3363:9:23"
            },
            "scope": 3171,
            "src": "3249:165:23",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              2124
            ],
            "body": {
              "id": 2756,
              "nodeType": "Block",
              "src": "3544:250:23",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 2742,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "id": 2736,
                          "name": "tokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2729,
                          "src": "3571:12:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 2735,
                        "name": "isRegistered",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3101,
                        "src": "3558:12:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                          "typeString": "function (address) view returns (bool)"
                        }
                      },
                      "id": 2737,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3558:26:23",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "id": 2741,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "!",
                      "prefix": true,
                      "src": "3588:24:23",
                      "subExpression": {
                        "arguments": [
                          {
                            "id": 2739,
                            "name": "tokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2729,
                            "src": "3599:12:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2738,
                          "name": "isClosing",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3170,
                          "src": "3589:9:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 2740,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3589:23:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3558:54:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2753,
                  "nodeType": "IfStatement",
                  "src": "3554:215:23",
                  "trueBody": {
                    "id": 2752,
                    "nodeType": "Block",
                    "src": "3614:155:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2749,
                              "name": "_soloMarginAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2560,
                              "src": "3722:18:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 2745,
                                      "name": "tokenAddress",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2729,
                                      "src": "3676:12:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2744,
                                    "name": "remapTokenAddress",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3131,
                                    "src": "3658:17:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                                      "typeString": "function (address) view returns (address)"
                                    }
                                  },
                                  "id": 2746,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3658:31:23",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2743,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6165,
                                "src": "3651:6:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$6165_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 2747,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3651:39:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$6165",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 2748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6104,
                            "src": "3651:49:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 2750,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3651:107:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "functionReturnParameters": 2734,
                        "id": 2751,
                        "nodeType": "Return",
                        "src": "3628:130:23"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "hexValue": "30",
                    "id": 2754,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3786:1:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "functionReturnParameters": 2734,
                  "id": 2755,
                  "nodeType": "Return",
                  "src": "3779:8:23"
                }
              ]
            },
            "functionSelector": "c32dc3b6",
            "id": 2757,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getTotalReserve",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2731,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3505:8:23"
            },
            "parameters": {
              "id": 2730,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2729,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 2757,
                  "src": "3445:20:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2728,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3445:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3444:22:23"
            },
            "returnParameters": {
              "id": 2734,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2733,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2757,
                  "src": "3531:7:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2732,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3531:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3530:9:23"
            },
            "scope": 3171,
            "src": "3420:374:23",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              2140
            ],
            "body": {
              "id": 2772,
              "nodeType": "Block",
              "src": "3948:77:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2768,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2759,
                        "src": "3992:12:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 2769,
                        "name": "tokenAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2761,
                        "src": "4006:11:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 2767,
                      "name": "getRepaymentAmountInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2795,
                      "src": "3965:26:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (address,uint256) view returns (uint256)"
                      }
                    },
                    "id": 2770,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3965:53:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2766,
                  "id": 2771,
                  "nodeType": "Return",
                  "src": "3958:60:23"
                }
              ]
            },
            "functionSelector": "aa819057",
            "id": 2773,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getRepaymentAmount",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2763,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "3909:8:23"
            },
            "parameters": {
              "id": 2762,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2759,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 2773,
                  "src": "3828:20:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2758,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3828:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2761,
                  "mutability": "mutable",
                  "name": "tokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2773,
                  "src": "3850:19:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2760,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3850:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3827:43:23"
            },
            "returnParameters": {
              "id": 2766,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2765,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2773,
                  "src": "3935:7:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2764,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3935:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3934:9:23"
            },
            "scope": 3171,
            "src": "3800:225:23",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 2794,
              "nodeType": "Block",
              "src": "4164:166:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2788,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 2785,
                                "name": "tokenAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2775,
                                "src": "4297:12:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2784,
                              "name": "marketIdFromTokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3113,
                              "src": "4272:24:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view returns (uint256)"
                              }
                            },
                            "id": 2786,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4272:38:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<",
                          "rightExpression": {
                            "hexValue": "32",
                            "id": 2787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4313:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "4272:42:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "hexValue": "32",
                          "id": 2790,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4321:1:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "id": 2791,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "4272:50:23",
                        "trueExpression": {
                          "hexValue": "31",
                          "id": 2789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4317:1:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "expression": {
                        "id": 2782,
                        "name": "tokenAmount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2777,
                        "src": "4256:11:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 2783,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "add",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5417,
                      "src": "4256:15:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 2792,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4256:67:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 2781,
                  "id": 2793,
                  "nodeType": "Return",
                  "src": "4237:86:23"
                }
              ]
            },
            "id": 2795,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getRepaymentAmountInternal",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2778,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2775,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 2795,
                  "src": "4076:20:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2774,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4076:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2777,
                  "mutability": "mutable",
                  "name": "tokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2795,
                  "src": "4106:19:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2776,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4106:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4066:65:23"
            },
            "returnParameters": {
              "id": 2781,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2780,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2795,
                  "src": "4155:7:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2779,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4155:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4154:9:23"
            },
            "scope": 3171,
            "src": "4031:299:23",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "baseFunctions": [
              2147
            ],
            "body": {
              "id": 2904,
              "nodeType": "Block",
              "src": "4433:830:23",
              "statements": [
                {
                  "expression": {
                    "id": 2806,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2803,
                      "name": "_scheduleInvokerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2574,
                      "src": "4443:23:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "expression": {
                        "id": 2804,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "4469:3:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 2805,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "src": "4469:10:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "4443:36:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "id": 2807,
                  "nodeType": "ExpressionStatement",
                  "src": "4443:36:23"
                },
                {
                  "expression": {
                    "id": 2810,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2808,
                      "name": "_scheduleTokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2576,
                      "src": "4489:21:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2809,
                      "name": "tokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2797,
                      "src": "4513:12:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "4489:36:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2811,
                  "nodeType": "ExpressionStatement",
                  "src": "4489:36:23"
                },
                {
                  "expression": {
                    "id": 2814,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2812,
                      "name": "_scheduleTokenAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2578,
                      "src": "4535:20:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 2813,
                      "name": "tokenAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2799,
                      "src": "4558:11:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4535:34:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2815,
                  "nodeType": "ExpressionStatement",
                  "src": "4535:34:23"
                },
                {
                  "assignments": [
                    2817
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2817,
                      "mutability": "mutable",
                      "name": "solo",
                      "nodeType": "VariableDeclaration",
                      "scope": 2904,
                      "src": "4580:16:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_ISoloMargin_$2510",
                        "typeString": "contract ISoloMargin"
                      },
                      "typeName": {
                        "id": 2816,
                        "name": "ISoloMargin",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2510,
                        "src": "4580:11:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISoloMargin_$2510",
                          "typeString": "contract ISoloMargin"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2821,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2819,
                        "name": "_soloMarginAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2560,
                        "src": "4611:18:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 2818,
                      "name": "ISoloMargin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2510,
                      "src": "4599:11:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_ISoloMargin_$2510_$",
                        "typeString": "type(contract ISoloMargin)"
                      }
                    },
                    "id": 2820,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4599:31:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_ISoloMargin_$2510",
                      "typeString": "contract ISoloMargin"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4580:50:23"
                },
                {
                  "assignments": [
                    2826
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2826,
                      "mutability": "mutable",
                      "name": "operations",
                      "nodeType": "VariableDeclaration",
                      "scope": 2904,
                      "src": "4640:36:23",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct Types.ActionArgs[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2824,
                          "name": "Types.ActionArgs",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3220,
                          "src": "4640:16:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ActionArgs_$3220_storage_ptr",
                            "typeString": "struct Types.ActionArgs"
                          }
                        },
                        "id": 2825,
                        "nodeType": "ArrayTypeName",
                        "src": "4640:18:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$3220_storage_$dyn_storage_ptr",
                          "typeString": "struct Types.ActionArgs[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2832,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "33",
                        "id": 2830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4702:1:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        }
                      ],
                      "id": 2829,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4679:22:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (struct Types.ActionArgs memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2827,
                          "name": "Types.ActionArgs",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3220,
                          "src": "4683:16:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ActionArgs_$3220_storage_ptr",
                            "typeString": "struct Types.ActionArgs"
                          }
                        },
                        "id": 2828,
                        "nodeType": "ArrayTypeName",
                        "src": "4683:18:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$3220_storage_$dyn_storage_ptr",
                          "typeString": "struct Types.ActionArgs[]"
                        }
                      }
                    },
                    "id": 2831,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4679:25:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct Types.ActionArgs memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4640:64:23"
                },
                {
                  "expression": {
                    "id": 2840,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 2833,
                        "name": "operations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2826,
                        "src": "4714:10:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Types.ActionArgs memory[] memory"
                        }
                      },
                      "id": 2835,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 2834,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4725:1:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4714:13:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ActionArgs_$3220_memory_ptr",
                        "typeString": "struct Types.ActionArgs memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2837,
                          "name": "tokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2797,
                          "src": "4748:12:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "id": 2838,
                          "name": "tokenAmount",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2799,
                          "src": "4762:11:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2836,
                        "name": "getWithdrawAction",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3027,
                        "src": "4730:17:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_struct$_ActionArgs_$3220_memory_ptr_$",
                          "typeString": "function (address,uint256) view returns (struct Types.ActionArgs memory)"
                        }
                      },
                      "id": 2839,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4730:44:23",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ActionArgs_$3220_memory_ptr",
                        "typeString": "struct Types.ActionArgs memory"
                      }
                    },
                    "src": "4714:60:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ActionArgs_$3220_memory_ptr",
                      "typeString": "struct Types.ActionArgs memory"
                    }
                  },
                  "id": 2841,
                  "nodeType": "ExpressionStatement",
                  "src": "4714:60:23"
                },
                {
                  "expression": {
                    "id": 2847,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 2842,
                        "name": "operations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2826,
                        "src": "4784:10:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Types.ActionArgs memory[] memory"
                        }
                      },
                      "id": 2844,
                      "indexExpression": {
                        "hexValue": "31",
                        "id": 2843,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4795:1:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4784:13:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ActionArgs_$3220_memory_ptr",
                        "typeString": "struct Types.ActionArgs memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 2845,
                        "name": "getCallAction",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3089,
                        "src": "4800:13:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_ActionArgs_$3220_memory_ptr_$",
                          "typeString": "function () view returns (struct Types.ActionArgs memory)"
                        }
                      },
                      "id": 2846,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4800:15:23",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ActionArgs_$3220_memory_ptr",
                        "typeString": "struct Types.ActionArgs memory"
                      }
                    },
                    "src": "4784:31:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ActionArgs_$3220_memory_ptr",
                      "typeString": "struct Types.ActionArgs memory"
                    }
                  },
                  "id": 2848,
                  "nodeType": "ExpressionStatement",
                  "src": "4784:31:23"
                },
                {
                  "expression": {
                    "id": 2859,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 2849,
                        "name": "operations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2826,
                        "src": "4825:10:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Types.ActionArgs memory[] memory"
                        }
                      },
                      "id": 2851,
                      "indexExpression": {
                        "hexValue": "32",
                        "id": 2850,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4836:1:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_2_by_1",
                          "typeString": "int_const 2"
                        },
                        "value": "2"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "4825:13:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ActionArgs_$3220_memory_ptr",
                        "typeString": "struct Types.ActionArgs memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 2853,
                          "name": "tokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2797,
                          "src": "4871:12:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "arguments": [
                            {
                              "id": 2855,
                              "name": "tokenAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2797,
                              "src": "4924:12:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "id": 2856,
                              "name": "tokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2799,
                              "src": "4938:11:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2854,
                            "name": "getRepaymentAmountInternal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2795,
                            "src": "4897:26:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256) view returns (uint256)"
                            }
                          },
                          "id": 2857,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4897:53:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 2852,
                        "name": "getDepositAction",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3066,
                        "src": "4841:16:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_struct$_ActionArgs_$3220_memory_ptr_$",
                          "typeString": "function (address,uint256) view returns (struct Types.ActionArgs memory)"
                        }
                      },
                      "id": 2858,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4841:119:23",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ActionArgs_$3220_memory_ptr",
                        "typeString": "struct Types.ActionArgs memory"
                      }
                    },
                    "src": "4825:135:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ActionArgs_$3220_memory_ptr",
                      "typeString": "struct Types.ActionArgs memory"
                    }
                  },
                  "id": 2860,
                  "nodeType": "ExpressionStatement",
                  "src": "4825:135:23"
                },
                {
                  "assignments": [
                    2865
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2865,
                      "mutability": "mutable",
                      "name": "accountInfos",
                      "nodeType": "VariableDeclaration",
                      "scope": 2904,
                      "src": "4970:39:23",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct Types.AccountInfo[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2863,
                          "name": "Types.AccountInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3225,
                          "src": "4970:17:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AccountInfo_$3225_storage_ptr",
                            "typeString": "struct Types.AccountInfo"
                          }
                        },
                        "id": 2864,
                        "nodeType": "ArrayTypeName",
                        "src": "4970:19:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AccountInfo_$3225_storage_$dyn_storage_ptr",
                          "typeString": "struct Types.AccountInfo[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2871,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "31",
                        "id": 2869,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5036:1:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 2868,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "5012:23:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (struct Types.AccountInfo memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 2866,
                          "name": "Types.AccountInfo",
                          "nodeType": "UserDefinedTypeName",
                          "referencedDeclaration": 3225,
                          "src": "5016:17:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_AccountInfo_$3225_storage_ptr",
                            "typeString": "struct Types.AccountInfo"
                          }
                        },
                        "id": 2867,
                        "nodeType": "ArrayTypeName",
                        "src": "5016:19:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AccountInfo_$3225_storage_$dyn_storage_ptr",
                          "typeString": "struct Types.AccountInfo[]"
                        }
                      }
                    },
                    "id": 2870,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5012:26:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct Types.AccountInfo memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4970:68:23"
                },
                {
                  "expression": {
                    "id": 2877,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 2872,
                        "name": "accountInfos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2865,
                        "src": "5048:12:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Types.AccountInfo memory[] memory"
                        }
                      },
                      "id": 2874,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 2873,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5061:1:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "5048:15:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AccountInfo_$3225_memory_ptr",
                        "typeString": "struct Types.AccountInfo memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "id": 2875,
                        "name": "getAccountInfo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2988,
                        "src": "5066:14:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_view$__$returns$_t_struct$_AccountInfo_$3225_memory_ptr_$",
                          "typeString": "function () view returns (struct Types.AccountInfo memory)"
                        }
                      },
                      "id": 2876,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5066:16:23",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_AccountInfo_$3225_memory_ptr",
                        "typeString": "struct Types.AccountInfo memory"
                      }
                    },
                    "src": "5048:34:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AccountInfo_$3225_memory_ptr",
                      "typeString": "struct Types.AccountInfo memory"
                    }
                  },
                  "id": 2878,
                  "nodeType": "ExpressionStatement",
                  "src": "5048:34:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 2882,
                        "name": "accountInfos",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2865,
                        "src": "5106:12:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Types.AccountInfo memory[] memory"
                        }
                      },
                      {
                        "id": 2883,
                        "name": "operations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2826,
                        "src": "5120:10:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Types.ActionArgs memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Types.AccountInfo memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct Types.ActionArgs memory[] memory"
                        }
                      ],
                      "expression": {
                        "id": 2879,
                        "name": "solo",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2817,
                        "src": "5093:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISoloMargin_$2510",
                          "typeString": "contract ISoloMargin"
                        }
                      },
                      "id": 2881,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "operate",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2495,
                      "src": "5093:12:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr_$_t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (struct Types.AccountInfo memory[] memory,struct Types.ActionArgs memory[] memory) external"
                      }
                    },
                    "id": 2884,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5093:38:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2885,
                  "nodeType": "ExpressionStatement",
                  "src": "5093:38:23"
                },
                {
                  "expression": {
                    "id": 2891,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2886,
                      "name": "_scheduleInvokerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2574,
                      "src": "5142:23:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 2889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5176:1:23",
                          "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": 2888,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5168:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 2887,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5168:7:23",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 2890,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5168:10:23",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "5142:36:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "id": 2892,
                  "nodeType": "ExpressionStatement",
                  "src": "5142:36:23"
                },
                {
                  "expression": {
                    "id": 2898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2893,
                      "name": "_scheduleTokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2576,
                      "src": "5188:21:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "hexValue": "30",
                          "id": 2896,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5220:1:23",
                          "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": 2895,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5212:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 2894,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5212:7:23",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 2897,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5212:10:23",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "5188:34:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 2899,
                  "nodeType": "ExpressionStatement",
                  "src": "5188:34:23"
                },
                {
                  "expression": {
                    "id": 2902,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 2900,
                      "name": "_scheduleTokenAmount",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2578,
                      "src": "5232:20:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "30",
                      "id": 2901,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5255:1:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5232:24:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 2903,
                  "nodeType": "ExpressionStatement",
                  "src": "5232:24:23"
                }
              ]
            },
            "functionSelector": "4b8a3529",
            "id": 2905,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "borrow",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2801,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "4420:8:23"
            },
            "parameters": {
              "id": 2800,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2797,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 2905,
                  "src": "4352:20:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2796,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4352:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2799,
                  "mutability": "mutable",
                  "name": "tokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 2905,
                  "src": "4374:19:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2798,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4374:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4351:43:23"
            },
            "returnParameters": {
              "id": 2802,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4433:0:23"
            },
            "scope": 3171,
            "src": "4336:927:23",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "baseFunctions": [
              2481
            ],
            "body": {
              "id": 2972,
              "nodeType": "Block",
              "src": "5410:820:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "id": 2921,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 2916,
                          "name": "_scheduleInvokerAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2574,
                          "src": "5441:23:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "arguments": [
                            {
                              "hexValue": "30",
                              "id": 2919,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5476:1:23",
                              "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": 2918,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5468:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 2917,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "5468:7:23",
                              "typeDescriptions": {}
                            }
                          },
                          "id": 2920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5468:10:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "5441:37:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "536f6c6f4c697175696469747950726f78793a206e6f74207363686564756c6564",
                        "id": 2922,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5492:35:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8a2292a52ba49c99160c2313a505cb960546128d10b4e96c3ad0220c0cf8c647",
                          "typeString": "literal_string \"SoloLiquidityProxy: not scheduled\""
                        },
                        "value": "SoloLiquidityProxy: not scheduled"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8a2292a52ba49c99160c2313a505cb960546128d10b4e96c3ad0220c0cf8c647",
                          "typeString": "literal_string \"SoloLiquidityProxy: not scheduled\""
                        }
                      ],
                      "id": 2915,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5420:7:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2923,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5420:117:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2924,
                  "nodeType": "ExpressionStatement",
                  "src": "5420:117:23"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2930,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2925,
                      "name": "_scheduleTokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2576,
                      "src": "5552:21:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "31",
                          "id": 2928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5585:1:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "id": 2927,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5577:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 2926,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5577:7:23",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 2929,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5577:10:23",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "5552:35:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2936,
                  "nodeType": "IfStatement",
                  "src": "5548:94:23",
                  "trueBody": {
                    "id": 2935,
                    "nodeType": "Block",
                    "src": "5589:53:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 2932,
                              "name": "_scheduleTokenAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2578,
                              "src": "5610:20:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2931,
                            "name": "unwrap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1649,
                            "src": "5603:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 2933,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5603:28:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2934,
                        "nodeType": "ExpressionStatement",
                        "src": "5603:28:23"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2939,
                            "name": "_scheduleTokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2576,
                            "src": "5699:21:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "id": 2940,
                            "name": "_scheduleInvokerAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2574,
                            "src": "5738:23:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "id": 2941,
                            "name": "_scheduleTokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2578,
                            "src": "5779:20:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2938,
                          "name": "transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1433,
                          "src": "5673:8:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) returns (bool)"
                          }
                        },
                        "id": 2942,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5673:140:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "536f6c6f4c697175696469747950726f78793a207472616e7366657220746f20696e766f6b6572206661696c6564",
                        "id": 2943,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5827:48:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_6ee23ad3fd088e06cb3b515a08546b513b08fc6447a368fbe64a37067915d8c0",
                          "typeString": "literal_string \"SoloLiquidityProxy: transfer to invoker failed\""
                        },
                        "value": "SoloLiquidityProxy: transfer to invoker failed"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_6ee23ad3fd088e06cb3b515a08546b513b08fc6447a368fbe64a37067915d8c0",
                          "typeString": "literal_string \"SoloLiquidityProxy: transfer to invoker failed\""
                        }
                      ],
                      "id": 2937,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5652:7:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 2944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5652:233:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2945,
                  "nodeType": "ExpressionStatement",
                  "src": "5652:233:23"
                },
                {
                  "assignments": [
                    2947
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 2947,
                      "mutability": "mutable",
                      "name": "invoker",
                      "nodeType": "VariableDeclaration",
                      "scope": 2972,
                      "src": "5896:16:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IInvoker_$1234",
                        "typeString": "contract IInvoker"
                      },
                      "typeName": {
                        "id": 2946,
                        "name": "IInvoker",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1234,
                        "src": "5896:8:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IInvoker_$1234",
                          "typeString": "contract IInvoker"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 2951,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 2949,
                        "name": "_scheduleInvokerAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2574,
                        "src": "5924:23:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 2948,
                      "name": "IInvoker",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1234,
                      "src": "5915:8:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IInvoker_$1234_$",
                        "typeString": "type(contract IInvoker)"
                      }
                    },
                    "id": 2950,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5915:33:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IInvoker_$1234",
                      "typeString": "contract IInvoker"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5896:52:23"
                },
                {
                  "expression": {
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "id": 2952,
                        "name": "invoker",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2947,
                        "src": "5958:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IInvoker_$1234",
                          "typeString": "contract IInvoker"
                        }
                      },
                      "id": 2954,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "invokeCallback",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1197,
                      "src": "5958:22:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 2955,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5958:24:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 2956,
                  "nodeType": "ExpressionStatement",
                  "src": "5958:24:23"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 2962,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 2957,
                      "name": "_scheduleTokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2576,
                      "src": "5997:21:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "arguments": [
                        {
                          "hexValue": "31",
                          "id": 2960,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6030:1:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "id": 2959,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6022:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 2958,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6022:7:23",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 2961,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6022:10:23",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "5997:35:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 2971,
                  "nodeType": "IfStatement",
                  "src": "5993:231:23",
                  "trueBody": {
                    "id": 2970,
                    "nodeType": "Block",
                    "src": "6034:190:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "id": 2965,
                                  "name": "_scheduleTokenAddress",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2576,
                                  "src": "6118:21:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "id": 2966,
                                  "name": "_scheduleTokenAmount",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2578,
                                  "src": "6161:20:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 2964,
                                "name": "getRepaymentAmountInternal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2795,
                                "src": "6070:26:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (address,uint256) view returns (uint256)"
                                }
                              },
                              "id": 2967,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6070:129:23",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2963,
                            "name": "wrap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1618,
                            "src": "6048:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 2968,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6048:165:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2969,
                        "nodeType": "ExpressionStatement",
                        "src": "6048:165:23"
                      }
                    ]
                  }
                }
              ]
            },
            "functionSelector": "8b418713",
            "id": 2973,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "callFunction",
            "nodeType": "FunctionDefinition",
            "overrides": {
              "id": 2913,
              "nodeType": "OverrideSpecifier",
              "overrides": [],
              "src": "5401:8:23"
            },
            "parameters": {
              "id": 2912,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2907,
                  "mutability": "mutable",
                  "name": "sender",
                  "nodeType": "VariableDeclaration",
                  "scope": 2973,
                  "src": "5300:14:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2906,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5300:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2909,
                  "mutability": "mutable",
                  "name": "accountInfo",
                  "nodeType": "VariableDeclaration",
                  "scope": 2973,
                  "src": "5324:36:23",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AccountInfo_$3225_memory_ptr",
                    "typeString": "struct Types.AccountInfo"
                  },
                  "typeName": {
                    "id": 2908,
                    "name": "Types.AccountInfo",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3225,
                    "src": "5324:17:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AccountInfo_$3225_storage_ptr",
                      "typeString": "struct Types.AccountInfo"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2911,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "scope": 2973,
                  "src": "5370:17:23",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 2910,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5370:5:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5290:103:23"
            },
            "returnParameters": {
              "id": 2914,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5410:0:23"
            },
            "scope": 3171,
            "src": "5269:961:23",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 2987,
              "nodeType": "Block",
              "src": "6311:76:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 2982,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "6362:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_SoloLiquidityProxy_$3171",
                              "typeString": "contract SoloLiquidityProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_SoloLiquidityProxy_$3171",
                              "typeString": "contract SoloLiquidityProxy"
                            }
                          ],
                          "id": 2981,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6354:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 2980,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6354:7:23",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 2983,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6354:13:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "hexValue": "31",
                        "id": 2984,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6377:1:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "expression": {
                        "id": 2978,
                        "name": "Types",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3226,
                        "src": "6328:5:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Types_$3226_$",
                          "typeString": "type(library Types)"
                        }
                      },
                      "id": 2979,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "AccountInfo",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3225,
                      "src": "6328:17:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_AccountInfo_$3225_storage_ptr_$",
                        "typeString": "type(struct Types.AccountInfo storage pointer)"
                      }
                    },
                    "id": 2985,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "owner",
                      "number"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "6328:52:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AccountInfo_$3225_memory_ptr",
                      "typeString": "struct Types.AccountInfo memory"
                    }
                  },
                  "functionReturnParameters": 2977,
                  "id": 2986,
                  "nodeType": "Return",
                  "src": "6321:59:23"
                }
              ]
            },
            "id": 2988,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAccountInfo",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2974,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6259:2:23"
            },
            "returnParameters": {
              "id": 2977,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2976,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 2988,
                  "src": "6285:24:23",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_AccountInfo_$3225_memory_ptr",
                    "typeString": "struct Types.AccountInfo"
                  },
                  "typeName": {
                    "id": 2975,
                    "name": "Types.AccountInfo",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3225,
                    "src": "6285:17:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_AccountInfo_$3225_storage_ptr",
                      "typeString": "struct Types.AccountInfo"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6284:26:23"
            },
            "scope": 3171,
            "src": "6236:151:23",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3026,
              "nodeType": "Block",
              "src": "6539:656:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "expression": {
                            "id": 2999,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3226,
                            "src": "6615:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$3226_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 3000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "ActionType",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3183,
                          "src": "6615:16:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ActionType_$3183_$",
                            "typeString": "type(enum Types.ActionType)"
                          }
                        },
                        "id": 3001,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Withdraw",
                        "nodeType": "MemberAccess",
                        "src": "6615:25:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ActionType_$3183",
                          "typeString": "enum Types.ActionType"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 3002,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6669:1:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "66616c7365",
                            "id": 3005,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6742:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "false"
                          },
                          {
                            "expression": {
                              "expression": {
                                "id": 3006,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3226,
                                "src": "6783:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$3226_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 3007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3186,
                              "src": "6783:23:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$3186_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 3008,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "src": "6783:27:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$3186",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "expression": {
                              "expression": {
                                "id": 3009,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3226,
                                "src": "6837:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$3226_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 3010,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetReference",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3189,
                              "src": "6837:20:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetReference_$3189_$",
                                "typeString": "type(enum Types.AssetReference)"
                              }
                            },
                            "id": 3011,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Delta",
                            "nodeType": "MemberAccess",
                            "src": "6837:26:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$3189",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "id": 3012,
                            "name": "tokenAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2992,
                            "src": "6892:11:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$3186",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$3189",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 3003,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3226,
                            "src": "6696:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$3226_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 3004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3198,
                          "src": "6696:17:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$3198_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 3013,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "6696:226:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$3198_memory_ptr",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 3015,
                            "name": "tokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2990,
                            "src": "6982:12:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3014,
                          "name": "marketIdFromTokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3113,
                          "src": "6957:24:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view returns (uint256)"
                          }
                        },
                        "id": 3016,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6957:38:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3017,
                        "name": "NULL_MARKET_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2542,
                        "src": "7032:14:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 3020,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "7086:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_SoloLiquidityProxy_$3171",
                              "typeString": "contract SoloLiquidityProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_SoloLiquidityProxy_$3171",
                              "typeString": "contract SoloLiquidityProxy"
                            }
                          ],
                          "id": 3019,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7078:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3018,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7078:7:23",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3021,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7078:13:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 3022,
                        "name": "NULL_ACCOUNT_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2539,
                        "src": "7125:15:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3023,
                        "name": "NULL_DATA",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2558,
                        "src": "7164:9:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_enum$_ActionType_$3183",
                          "typeString": "enum Types.ActionType"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$3198_memory_ptr",
                          "typeString": "struct Types.AssetAmount memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      ],
                      "expression": {
                        "id": 2997,
                        "name": "Types",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3226,
                        "src": "6568:5:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Types_$3226_$",
                          "typeString": "type(library Types)"
                        }
                      },
                      "id": 2998,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ActionArgs",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3220,
                      "src": "6568:16:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_ActionArgs_$3220_storage_ptr_$",
                        "typeString": "type(struct Types.ActionArgs storage pointer)"
                      }
                    },
                    "id": 3024,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "actionType",
                      "accountId",
                      "amount",
                      "primaryMarketId",
                      "secondaryMarketId",
                      "otherAddress",
                      "otherAccountId",
                      "data"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "6568:620:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ActionArgs_$3220_memory_ptr",
                      "typeString": "struct Types.ActionArgs memory"
                    }
                  },
                  "functionReturnParameters": 2996,
                  "id": 3025,
                  "nodeType": "Return",
                  "src": "6549:639:23"
                }
              ]
            },
            "id": 3027,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getWithdrawAction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 2993,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2990,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3027,
                  "src": "6420:20:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 2989,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6420:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 2992,
                  "mutability": "mutable",
                  "name": "tokenAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3027,
                  "src": "6442:19:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 2991,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6442:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6419:43:23"
            },
            "returnParameters": {
              "id": 2996,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 2995,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3027,
                  "src": "6510:23:23",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ActionArgs_$3220_memory_ptr",
                    "typeString": "struct Types.ActionArgs"
                  },
                  "typeName": {
                    "id": 2994,
                    "name": "Types.ActionArgs",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3220,
                    "src": "6510:16:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ActionArgs_$3220_storage_ptr",
                      "typeString": "struct Types.ActionArgs"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6509:25:23"
            },
            "scope": 3171,
            "src": "6393:802:23",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3065,
              "nodeType": "Block",
              "src": "7350:658:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "expression": {
                            "id": 3038,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3226,
                            "src": "7426:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$3226_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 3039,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "ActionType",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3183,
                          "src": "7426:16:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ActionType_$3183_$",
                            "typeString": "type(enum Types.ActionType)"
                          }
                        },
                        "id": 3040,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Deposit",
                        "nodeType": "MemberAccess",
                        "src": "7426:24:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ActionType_$3183",
                          "typeString": "enum Types.ActionType"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 3041,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7479:1:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "hexValue": "74727565",
                            "id": 3044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7552:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          {
                            "expression": {
                              "expression": {
                                "id": 3045,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3226,
                                "src": "7592:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$3226_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 3046,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetDenomination",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3186,
                              "src": "7592:23:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetDenomination_$3186_$",
                                "typeString": "type(enum Types.AssetDenomination)"
                              }
                            },
                            "id": 3047,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Wei",
                            "nodeType": "MemberAccess",
                            "src": "7592:27:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetDenomination_$3186",
                              "typeString": "enum Types.AssetDenomination"
                            }
                          },
                          {
                            "expression": {
                              "expression": {
                                "id": 3048,
                                "name": "Types",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3226,
                                "src": "7646:5:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_Types_$3226_$",
                                  "typeString": "type(library Types)"
                                }
                              },
                              "id": 3049,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AssetReference",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3189,
                              "src": "7646:20:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_AssetReference_$3189_$",
                                "typeString": "type(enum Types.AssetReference)"
                              }
                            },
                            "id": 3050,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Delta",
                            "nodeType": "MemberAccess",
                            "src": "7646:26:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_AssetReference_$3189",
                              "typeString": "enum Types.AssetReference"
                            }
                          },
                          {
                            "id": 3051,
                            "name": "repaymentAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3031,
                            "src": "7701:15:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetDenomination_$3186",
                              "typeString": "enum Types.AssetDenomination"
                            },
                            {
                              "typeIdentifier": "t_enum$_AssetReference_$3189",
                              "typeString": "enum Types.AssetReference"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "id": 3042,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3226,
                            "src": "7506:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$3226_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 3043,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AssetAmount",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3198,
                          "src": "7506:17:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_AssetAmount_$3198_storage_ptr_$",
                            "typeString": "type(struct Types.AssetAmount storage pointer)"
                          }
                        },
                        "id": 3052,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [
                          "sign",
                          "denomination",
                          "ref",
                          "value"
                        ],
                        "nodeType": "FunctionCall",
                        "src": "7506:229:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$3198_memory_ptr",
                          "typeString": "struct Types.AssetAmount memory"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 3054,
                            "name": "tokenAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3029,
                            "src": "7795:12:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3053,
                          "name": "marketIdFromTokenAddress",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3113,
                          "src": "7770:24:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view returns (uint256)"
                          }
                        },
                        "id": 3055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7770:38:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3056,
                        "name": "NULL_MARKET_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2542,
                        "src": "7845:14:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 3059,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "7899:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_SoloLiquidityProxy_$3171",
                              "typeString": "contract SoloLiquidityProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_SoloLiquidityProxy_$3171",
                              "typeString": "contract SoloLiquidityProxy"
                            }
                          ],
                          "id": 3058,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "7891:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3057,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "7891:7:23",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3060,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7891:13:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 3061,
                        "name": "NULL_ACCOUNT_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2539,
                        "src": "7938:15:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3062,
                        "name": "NULL_DATA",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2558,
                        "src": "7977:9:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_enum$_ActionType_$3183",
                          "typeString": "enum Types.ActionType"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$3198_memory_ptr",
                          "typeString": "struct Types.AssetAmount memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      ],
                      "expression": {
                        "id": 3036,
                        "name": "Types",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3226,
                        "src": "7379:5:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Types_$3226_$",
                          "typeString": "type(library Types)"
                        }
                      },
                      "id": 3037,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ActionArgs",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3220,
                      "src": "7379:16:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_ActionArgs_$3220_storage_ptr_$",
                        "typeString": "type(struct Types.ActionArgs storage pointer)"
                      }
                    },
                    "id": 3063,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "actionType",
                      "accountId",
                      "amount",
                      "primaryMarketId",
                      "secondaryMarketId",
                      "otherAddress",
                      "otherAccountId",
                      "data"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "7379:622:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ActionArgs_$3220_memory_ptr",
                      "typeString": "struct Types.ActionArgs memory"
                    }
                  },
                  "functionReturnParameters": 3035,
                  "id": 3064,
                  "nodeType": "Return",
                  "src": "7360:641:23"
                }
              ]
            },
            "id": 3066,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getDepositAction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3032,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3029,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3066,
                  "src": "7227:20:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3028,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7227:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3031,
                  "mutability": "mutable",
                  "name": "repaymentAmount",
                  "nodeType": "VariableDeclaration",
                  "scope": 3066,
                  "src": "7249:23:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3030,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7249:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7226:47:23"
            },
            "returnParameters": {
              "id": 3035,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3034,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3066,
                  "src": "7321:23:23",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ActionArgs_$3220_memory_ptr",
                    "typeString": "struct Types.ActionArgs"
                  },
                  "typeName": {
                    "id": 3033,
                    "name": "Types.ActionArgs",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3220,
                    "src": "7321:16:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ActionArgs_$3220_storage_ptr",
                      "typeString": "struct Types.ActionArgs"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7320:25:23"
            },
            "scope": 3171,
            "src": "7201:807:23",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3088,
              "nodeType": "Block",
              "src": "8087:413:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "expression": {
                            "id": 3073,
                            "name": "Types",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3226,
                            "src": "8163:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Types_$3226_$",
                              "typeString": "type(library Types)"
                            }
                          },
                          "id": 3074,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "ActionType",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3183,
                          "src": "8163:16:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ActionType_$3183_$",
                            "typeString": "type(enum Types.ActionType)"
                          }
                        },
                        "id": 3075,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Call",
                        "nodeType": "MemberAccess",
                        "src": "8163:21:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ActionType_$3183",
                          "typeString": "enum Types.ActionType"
                        }
                      },
                      {
                        "hexValue": "30",
                        "id": 3076,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8213:1:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "id": 3077,
                        "name": "NULL_AMOUNT",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2555,
                        "src": "8240:11:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_AssetAmount_$3198_storage",
                          "typeString": "struct Types.AssetAmount storage ref"
                        }
                      },
                      {
                        "id": 3078,
                        "name": "NULL_MARKET_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2542,
                        "src": "8286:14:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3079,
                        "name": "NULL_MARKET_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2542,
                        "src": "8337:14:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "arguments": [
                          {
                            "id": 3082,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "8391:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_SoloLiquidityProxy_$3171",
                              "typeString": "contract SoloLiquidityProxy"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_SoloLiquidityProxy_$3171",
                              "typeString": "contract SoloLiquidityProxy"
                            }
                          ],
                          "id": 3081,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8383:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3080,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "8383:7:23",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3083,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8383:13:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "id": 3084,
                        "name": "NULL_ACCOUNT_ID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2539,
                        "src": "8430:15:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 3085,
                        "name": "NULL_DATA",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2558,
                        "src": "8469:9:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_enum$_ActionType_$3183",
                          "typeString": "enum Types.ActionType"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        {
                          "typeIdentifier": "t_struct$_AssetAmount_$3198_storage",
                          "typeString": "struct Types.AssetAmount storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      ],
                      "expression": {
                        "id": 3071,
                        "name": "Types",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3226,
                        "src": "8116:5:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Types_$3226_$",
                          "typeString": "type(library Types)"
                        }
                      },
                      "id": 3072,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "ActionArgs",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3220,
                      "src": "8116:16:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_ActionArgs_$3220_storage_ptr_$",
                        "typeString": "type(struct Types.ActionArgs storage pointer)"
                      }
                    },
                    "id": 3086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "names": [
                      "actionType",
                      "accountId",
                      "amount",
                      "primaryMarketId",
                      "secondaryMarketId",
                      "otherAddress",
                      "otherAccountId",
                      "data"
                    ],
                    "nodeType": "FunctionCall",
                    "src": "8116:377:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ActionArgs_$3220_memory_ptr",
                      "typeString": "struct Types.ActionArgs memory"
                    }
                  },
                  "functionReturnParameters": 3070,
                  "id": 3087,
                  "nodeType": "Return",
                  "src": "8097:396:23"
                }
              ]
            },
            "id": 3089,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getCallAction",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3067,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8036:2:23"
            },
            "returnParameters": {
              "id": 3070,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3069,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3089,
                  "src": "8062:23:23",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ActionArgs_$3220_memory_ptr",
                    "typeString": "struct Types.ActionArgs"
                  },
                  "typeName": {
                    "id": 3068,
                    "name": "Types.ActionArgs",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3220,
                    "src": "8062:16:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ActionArgs_$3220_storage_ptr",
                      "typeString": "struct Types.ActionArgs"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8061:25:23"
            },
            "scope": 3171,
            "src": "8014:486:23",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3100,
              "nodeType": "Block",
              "src": "8579:61:23",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 3096,
                      "name": "_tokenAddressRegistered",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2572,
                      "src": "8596:23:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
                        "typeString": "mapping(address => bool)"
                      }
                    },
                    "id": 3098,
                    "indexExpression": {
                      "id": 3097,
                      "name": "tokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3091,
                      "src": "8620:12:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8596:37:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3095,
                  "id": 3099,
                  "nodeType": "Return",
                  "src": "8589:44:23"
                }
              ]
            },
            "id": 3101,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isRegistered",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3092,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3091,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3101,
                  "src": "8528:20:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3090,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8528:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8527:22:23"
            },
            "returnParameters": {
              "id": 3095,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3094,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3101,
                  "src": "8573:4:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3093,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "8573:4:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8572:6:23"
            },
            "scope": 3171,
            "src": "8506:134:23",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3112,
              "nodeType": "Block",
              "src": "8762:61:23",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 3108,
                      "name": "_tokenAddressToMarketId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2564,
                      "src": "8779:23:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 3110,
                    "indexExpression": {
                      "id": 3109,
                      "name": "tokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3103,
                      "src": "8803:12:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8779:37:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 3107,
                  "id": 3111,
                  "nodeType": "Return",
                  "src": "8772:44:23"
                }
              ]
            },
            "id": 3113,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "marketIdFromTokenAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3104,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3103,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3113,
                  "src": "8680:20:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3102,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8680:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8679:22:23"
            },
            "returnParameters": {
              "id": 3107,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3106,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3113,
                  "src": "8749:7:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3105,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "8749:7:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8748:9:23"
            },
            "scope": 3171,
            "src": "8646:177:23",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3130,
              "nodeType": "Block",
              "src": "8938:80:23",
              "statements": [
                {
                  "expression": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 3125,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 3120,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3115,
                        "src": "8955:12:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "arguments": [
                          {
                            "hexValue": "31",
                            "id": 3123,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8979:1:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            }
                          ],
                          "id": 3122,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "8971:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 3121,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "8971:7:23",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 3124,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8971:10:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "8955:26:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "id": 3127,
                      "name": "tokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3115,
                      "src": "8999:12:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3128,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "8955:56:23",
                    "trueExpression": {
                      "id": 3126,
                      "name": "_wethAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1583,
                      "src": "8984:12:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3119,
                  "id": 3129,
                  "nodeType": "Return",
                  "src": "8948:63:23"
                }
              ]
            },
            "id": 3131,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "remapTokenAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3116,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3115,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3131,
                  "src": "8856:20:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3114,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8856:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8855:22:23"
            },
            "returnParameters": {
              "id": 3119,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3118,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3131,
                  "src": "8925:7:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3117,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8925:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8924:9:23"
            },
            "scope": 3171,
            "src": "8829:189:23",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3148,
              "nodeType": "Block",
              "src": "9133:80:23",
              "statements": [
                {
                  "expression": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "id": 3140,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 3138,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3133,
                        "src": "9150:12:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "id": 3139,
                        "name": "_wethAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1583,
                        "src": "9166:12:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "src": "9150:28:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseExpression": {
                      "id": 3145,
                      "name": "tokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3133,
                      "src": "9194:12:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 3146,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "Conditional",
                    "src": "9150:56:23",
                    "trueExpression": {
                      "arguments": [
                        {
                          "hexValue": "31",
                          "id": 3143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9189:1:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "id": 3142,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "9181:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 3141,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "9181:7:23",
                          "typeDescriptions": {}
                        }
                      },
                      "id": 3144,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "9181:10:23",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 3137,
                  "id": 3147,
                  "nodeType": "Return",
                  "src": "9143:63:23"
                }
              ]
            },
            "id": 3149,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "unmapTokenAddress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3134,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3133,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3149,
                  "src": "9051:20:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3132,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9051:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9050:22:23"
            },
            "returnParameters": {
              "id": 3137,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3136,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3149,
                  "src": "9120:7:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3135,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9120:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9119:9:23"
            },
            "scope": 3171,
            "src": "9024:189:23",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3169,
              "nodeType": "Block",
              "src": "9289:150:23",
              "statements": [
                {
                  "assignments": [
                    3157
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 3157,
                      "mutability": "mutable",
                      "name": "marketId",
                      "nodeType": "VariableDeclaration",
                      "scope": 3169,
                      "src": "9299:16:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3156,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9299:7:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 3161,
                  "initialValue": {
                    "baseExpression": {
                      "id": 3158,
                      "name": "_tokenAddressToMarketId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2564,
                      "src": "9318:23:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                        "typeString": "mapping(address => uint256)"
                      }
                    },
                    "id": 3160,
                    "indexExpression": {
                      "id": 3159,
                      "name": "tokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3151,
                      "src": "9342:12:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9318:37:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9299:56:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 3166,
                        "name": "marketId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3157,
                        "src": "9423:8:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "arguments": [
                          {
                            "id": 3163,
                            "name": "_soloMarginAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2560,
                            "src": "9384:18:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3162,
                          "name": "ISoloMargin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2510,
                          "src": "9372:11:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_ISoloMargin_$2510_$",
                            "typeString": "type(contract ISoloMargin)"
                          }
                        },
                        "id": 3164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9372:31:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_ISoloMargin_$2510",
                          "typeString": "contract ISoloMargin"
                        }
                      },
                      "id": 3165,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getMarketIsClosing",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2502,
                      "src": "9372:50:23",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (uint256) view external returns (bool)"
                      }
                    },
                    "id": 3167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9372:60:23",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3155,
                  "id": 3168,
                  "nodeType": "Return",
                  "src": "9365:67:23"
                }
              ]
            },
            "id": 3170,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isClosing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3152,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3151,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 3170,
                  "src": "9238:20:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3150,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9238:7:23",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9237:22:23"
            },
            "returnParameters": {
              "id": 3155,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3154,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3170,
                  "src": "9283:4:23",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3153,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9283:4:23",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9282:6:23"
            },
            "scope": 3171,
            "src": "9219:220:23",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 3172,
        "src": "1105:8336:23"
      }
    ],
    "src": "640:8802:23"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/dydx/SoloLiquidityProxy.sol",
      "exportedSymbols": {
        "BalanceCarrier": [
          1464
        ],
        "Context": [
          5279
        ],
        "ExternalCaller": [
          1563
        ],
        "ICallee": [
          2482
        ],
        "IERC20": [
          6165
        ],
        "IInvocationHook": [
          1170
        ],
        "IInvoker": [
          1234
        ],
        "ILiquidityProxy": [
          2148
        ],
        "ISoloMargin": [
          2510
        ],
        "IWETH": [
          1578
        ],
        "Ownable": [
          5388
        ],
        "SafeMath": [
          5584
        ],
        "SoloLiquidityProxy": [
          3171
        ],
        "Types": [
          3226
        ],
        "WETHHandler": [
          1650
        ]
      },
      "license": "Apache-2.0"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.7",
            ".0"
          ]
        },
        "id": 2512,
        "name": "PragmaDirective",
        "src": "640:23:23"
      },
      {
        "attributes": {
          "literals": [
            "experimental",
            "ABIEncoderV2"
          ]
        },
        "id": 2513,
        "name": "PragmaDirective",
        "src": "664:33:23"
      },
      {
        "attributes": {
          "SourceUnit": 5585,
          "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
          "file": "@openzeppelin/contracts/math/SafeMath.sol",
          "scope": 3172,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2514,
        "name": "ImportDirective",
        "src": "699:51:23"
      },
      {
        "attributes": {
          "SourceUnit": 5389,
          "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
          "file": "@openzeppelin/contracts/access/Ownable.sol",
          "scope": 3172,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2515,
        "name": "ImportDirective",
        "src": "751:52:23"
      },
      {
        "attributes": {
          "SourceUnit": 6166,
          "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
          "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
          "scope": 3172,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2516,
        "name": "ImportDirective",
        "src": "804:56:23"
      },
      {
        "attributes": {
          "SourceUnit": 1235,
          "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvoker.sol",
          "file": "../../common/invoke/IInvoker.sol",
          "scope": 3172,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2517,
        "name": "ImportDirective",
        "src": "861:42:23"
      },
      {
        "attributes": {
          "SourceUnit": 1465,
          "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/BalanceCarrier.sol",
          "file": "../../common/utils/BalanceCarrier.sol",
          "scope": 3172,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2518,
        "name": "ImportDirective",
        "src": "904:47:23"
      },
      {
        "attributes": {
          "SourceUnit": 1651,
          "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/WETHHandler.sol",
          "file": "../../common/utils/WETHHandler.sol",
          "scope": 3172,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2519,
        "name": "ImportDirective",
        "src": "952:44:23"
      },
      {
        "attributes": {
          "SourceUnit": 2149,
          "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/ILiquidityProxy.sol",
          "file": "../ILiquidityProxy.sol",
          "scope": 3172,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2520,
        "name": "ImportDirective",
        "src": "997:32:23"
      },
      {
        "attributes": {
          "SourceUnit": 2511,
          "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/dydx/ISoloMargin.sol",
          "file": "./ISoloMargin.sol",
          "scope": 3172,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2521,
        "name": "ImportDirective",
        "src": "1030:27:23"
      },
      {
        "attributes": {
          "SourceUnit": 3227,
          "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/dydx/Types.sol",
          "file": "./Types.sol",
          "scope": 3172,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2522,
        "name": "ImportDirective",
        "src": "1058:21:23"
      },
      {
        "attributes": {
          "SourceUnit": 2483,
          "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/dydx/ICallee.sol",
          "file": "./ICallee.sol",
          "scope": 3172,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 2523,
        "name": "ImportDirective",
        "src": "1080:23:23"
      },
      {
        "attributes": {
          "abstract": false,
          "contractDependencies": [
            1464,
            1563,
            1650,
            2148,
            2482,
            5279,
            5388
          ],
          "contractKind": "contract",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            3171,
            1650,
            2482,
            1464,
            1563,
            2148,
            5388,
            5279
          ],
          "name": "SoloLiquidityProxy",
          "scope": 3172
        },
        "children": [
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "Ownable",
                  "referencedDeclaration": 5388,
                  "type": "contract Ownable"
                },
                "id": 2524,
                "name": "UserDefinedTypeName",
                "src": "1140:7:23"
              }
            ],
            "id": 2525,
            "name": "InheritanceSpecifier",
            "src": "1140:7:23"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "ILiquidityProxy",
                  "referencedDeclaration": 2148,
                  "type": "contract ILiquidityProxy"
                },
                "id": 2526,
                "name": "UserDefinedTypeName",
                "src": "1153:15:23"
              }
            ],
            "id": 2527,
            "name": "InheritanceSpecifier",
            "src": "1153:15:23"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "BalanceCarrier",
                  "referencedDeclaration": 1464,
                  "type": "contract BalanceCarrier"
                },
                "id": 2528,
                "name": "UserDefinedTypeName",
                "src": "1174:14:23"
              }
            ],
            "id": 2529,
            "name": "InheritanceSpecifier",
            "src": "1174:14:23"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "ICallee",
                  "referencedDeclaration": 2482,
                  "type": "contract ICallee"
                },
                "id": 2530,
                "name": "UserDefinedTypeName",
                "src": "1194:7:23"
              }
            ],
            "id": 2531,
            "name": "InheritanceSpecifier",
            "src": "1194:7:23"
          },
          {
            "attributes": {},
            "children": [
              {
                "attributes": {
                  "name": "WETHHandler",
                  "referencedDeclaration": 1650,
                  "type": "contract WETHHandler"
                },
                "id": 2532,
                "name": "UserDefinedTypeName",
                "src": "1207:11:23"
              }
            ],
            "id": 2533,
            "name": "InheritanceSpecifier",
            "src": "1207:11:23"
          },
          {
            "children": [
              {
                "attributes": {
                  "name": "SafeMath",
                  "referencedDeclaration": 5584,
                  "type": "library SafeMath"
                },
                "id": 2534,
                "name": "UserDefinedTypeName",
                "src": "1231:8:23"
              },
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 2535,
                "name": "ElementaryTypeName",
                "src": "1244:7:23"
              }
            ],
            "id": 2536,
            "name": "UsingForDirective",
            "src": "1225:27:23"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "NULL_ACCOUNT_ID",
              "scope": 3171,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 2537,
                "name": "ElementaryTypeName",
                "src": "1258:7:23"
              },
              {
                "attributes": {
                  "hexvalue": "30",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 0",
                  "value": "0"
                },
                "id": 2538,
                "name": "Literal",
                "src": "1293:1:23"
              }
            ],
            "id": 2539,
            "name": "VariableDeclaration",
            "src": "1258:36:23"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "NULL_MARKET_ID",
              "scope": 3171,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 2540,
                "name": "ElementaryTypeName",
                "src": "1300:7:23"
              },
              {
                "attributes": {
                  "hexvalue": "30",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "number",
                  "type": "int_const 0",
                  "value": "0"
                },
                "id": 2541,
                "name": "Literal",
                "src": "1334:1:23"
              }
            ],
            "id": 2542,
            "name": "VariableDeclaration",
            "src": "1300:35:23"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "NULL_AMOUNT",
              "scope": 3171,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "struct Types.AssetAmount",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "Types.AssetAmount",
                  "referencedDeclaration": 3198,
                  "type": "struct Types.AssetAmount"
                },
                "id": 2543,
                "name": "UserDefinedTypeName",
                "src": "1341:17:23"
              },
              {
                "attributes": {
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "isStructConstructorCall": true,
                  "lValueRequested": false,
                  "names": [
                    "sign",
                    "denomination",
                    "ref",
                    "value"
                  ],
                  "tryCall": false,
                  "type": "struct Types.AssetAmount memory",
                  "type_conversion": false
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_enum$_AssetDenomination_$3186",
                          "typeString": "enum Types.AssetDenomination"
                        },
                        {
                          "typeIdentifier": "t_enum$_AssetReference_$3189",
                          "typeString": "enum Types.AssetReference"
                        },
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "member_name": "AssetAmount",
                      "referencedDeclaration": 3198,
                      "type": "type(struct Types.AssetAmount storage pointer)"
                    },
                    "children": [
                      {
                        "attributes": {
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 3226,
                          "type": "type(library Types)",
                          "value": "Types"
                        },
                        "id": 2544,
                        "name": "Identifier",
                        "src": "1382:5:23"
                      }
                    ],
                    "id": 2545,
                    "name": "MemberAccess",
                    "src": "1382:17:23"
                  },
                  {
                    "attributes": {
                      "hexvalue": "66616c7365",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "token": "bool",
                      "type": "bool",
                      "value": "false"
                    },
                    "id": 2546,
                    "name": "Literal",
                    "src": "1416:5:23"
                  },
                  {
                    "attributes": {
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "member_name": "Wei",
                      "type": "enum Types.AssetDenomination"
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "AssetDenomination",
                          "referencedDeclaration": 3186,
                          "type": "type(enum Types.AssetDenomination)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3226,
                              "type": "type(library Types)",
                              "value": "Types"
                            },
                            "id": 2547,
                            "name": "Identifier",
                            "src": "1445:5:23"
                          }
                        ],
                        "id": 2548,
                        "name": "MemberAccess",
                        "src": "1445:23:23"
                      }
                    ],
                    "id": 2549,
                    "name": "MemberAccess",
                    "src": "1445:27:23"
                  },
                  {
                    "attributes": {
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "member_name": "Delta",
                      "type": "enum Types.AssetReference"
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "AssetReference",
                          "referencedDeclaration": 3189,
                          "type": "type(enum Types.AssetReference)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3226,
                              "type": "type(library Types)",
                              "value": "Types"
                            },
                            "id": 2550,
                            "name": "Identifier",
                            "src": "1487:5:23"
                          }
                        ],
                        "id": 2551,
                        "name": "MemberAccess",
                        "src": "1487:20:23"
                      }
                    ],
                    "id": 2552,
                    "name": "MemberAccess",
                    "src": "1487:26:23"
                  },
                  {
                    "attributes": {
                      "hexvalue": "30",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "token": "number",
                      "type": "int_const 0",
                      "value": "0"
                    },
                    "id": 2553,
                    "name": "Literal",
                    "src": "1530:1:23"
                  }
                ],
                "id": 2554,
                "name": "FunctionCall",
                "src": "1382:156:23"
              }
            ],
            "id": 2555,
            "name": "VariableDeclaration",
            "src": "1341:197:23"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "NULL_DATA",
              "scope": 3171,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes",
                  "type": "bytes"
                },
                "id": 2556,
                "name": "ElementaryTypeName",
                "src": "1544:5:23"
              },
              {
                "attributes": {
                  "hexvalue": "",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "token": "string",
                  "type": "literal_string \"\"",
                  "value": ""
                },
                "id": 2557,
                "name": "Literal",
                "src": "1571:2:23"
              }
            ],
            "id": 2558,
            "name": "VariableDeclaration",
            "src": "1544:29:23"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_soloMarginAddress",
              "scope": 3171,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "stateMutability": "nonpayable",
                  "type": "address"
                },
                "id": 2559,
                "name": "ElementaryTypeName",
                "src": "1580:7:23"
              }
            ],
            "id": 2560,
            "name": "VariableDeclaration",
            "src": "1580:35:23"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_tokenAddressToMarketId",
              "scope": 3171,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(address => uint256)",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(address => uint256)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 2561,
                    "name": "ElementaryTypeName",
                    "src": "1629:7:23"
                  },
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 2562,
                    "name": "ElementaryTypeName",
                    "src": "1640:7:23"
                  }
                ],
                "id": 2563,
                "name": "Mapping",
                "src": "1621:27:23"
              }
            ],
            "id": 2564,
            "name": "VariableDeclaration",
            "src": "1621:60:23"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_marketIdToTokenAddress",
              "scope": 3171,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(uint256 => address)",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(uint256 => address)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint256",
                      "type": "uint256"
                    },
                    "id": 2565,
                    "name": "ElementaryTypeName",
                    "src": "1695:7:23"
                  },
                  {
                    "attributes": {
                      "name": "address",
                      "stateMutability": "nonpayable",
                      "type": "address"
                    },
                    "id": 2566,
                    "name": "ElementaryTypeName",
                    "src": "1706:7:23"
                  }
                ],
                "id": 2567,
                "name": "Mapping",
                "src": "1687:27:23"
              }
            ],
            "id": 2568,
            "name": "VariableDeclaration",
            "src": "1687:60:23"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_tokenAddressRegistered",
              "scope": 3171,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(address => bool)",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(address => bool)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 2569,
                    "name": "ElementaryTypeName",
                    "src": "1761:7:23"
                  },
                  {
                    "attributes": {
                      "name": "bool",
                      "type": "bool"
                    },
                    "id": 2570,
                    "name": "ElementaryTypeName",
                    "src": "1772:4:23"
                  }
                ],
                "id": 2571,
                "name": "Mapping",
                "src": "1753:24:23"
              }
            ],
            "id": 2572,
            "name": "VariableDeclaration",
            "src": "1753:57:23"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_scheduleInvokerAddress",
              "scope": 3171,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address payable",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "stateMutability": "payable",
                  "type": "address payable"
                },
                "id": 2573,
                "name": "ElementaryTypeName",
                "src": "1817:15:23"
              }
            ],
            "id": 2574,
            "name": "VariableDeclaration",
            "src": "1817:48:23"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_scheduleTokenAddress",
              "scope": 3171,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "stateMutability": "nonpayable",
                  "type": "address"
                },
                "id": 2575,
                "name": "ElementaryTypeName",
                "src": "1871:7:23"
              }
            ],
            "id": 2576,
            "name": "VariableDeclaration",
            "src": "1871:38:23"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_scheduleTokenAmount",
              "scope": 3171,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 2577,
                "name": "ElementaryTypeName",
                "src": "1915:7:23"
              }
            ],
            "id": 2578,
            "name": "VariableDeclaration",
            "src": "1915:37:23"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "name": "",
              "scope": 3171,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "soloMarginAddress",
                      "scope": 2599,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2579,
                        "name": "ElementaryTypeName",
                        "src": "1971:7:23"
                      }
                    ],
                    "id": 2580,
                    "name": "VariableDeclaration",
                    "src": "1971:25:23"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "wethAddress",
                      "scope": 2599,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address payable",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "payable",
                          "type": "address payable"
                        },
                        "id": 2581,
                        "name": "ElementaryTypeName",
                        "src": "1998:15:23"
                      }
                    ],
                    "id": 2582,
                    "name": "VariableDeclaration",
                    "src": "1998:27:23"
                  }
                ],
                "id": 2583,
                "name": "ParameterList",
                "src": "1970:56:23"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2593,
                "name": "ParameterList",
                "src": "2099:0:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1464,
                      "type": "type(contract BalanceCarrier)",
                      "value": "BalanceCarrier"
                    },
                    "id": 2584,
                    "name": "Identifier",
                    "src": "2035:14:23"
                  },
                  {
                    "attributes": {
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "isStructConstructorCall": false,
                      "lValueRequested": false,
                      "names": [
                        null
                      ],
                      "tryCall": false,
                      "type": "address payable",
                      "type_conversion": true
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            }
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "type": "type(address)"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address"
                            },
                            "id": 2585,
                            "name": "ElementaryTypeName",
                            "src": "2050:7:23"
                          }
                        ],
                        "id": 2586,
                        "name": "ElementaryTypeNameExpression",
                        "src": "2050:7:23"
                      },
                      {
                        "attributes": {
                          "hexvalue": "31",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "token": "number",
                          "type": "int_const 1",
                          "value": "1"
                        },
                        "id": 2587,
                        "name": "Literal",
                        "src": "2058:1:23"
                      }
                    ],
                    "id": 2588,
                    "name": "FunctionCall",
                    "src": "2050:10:23"
                  }
                ],
                "id": 2589,
                "name": "ModifierInvocation",
                "src": "2035:26:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 1650,
                      "type": "type(contract WETHHandler)",
                      "value": "WETHHandler"
                    },
                    "id": 2590,
                    "name": "Identifier",
                    "src": "2070:11:23"
                  },
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2582,
                      "type": "address payable",
                      "value": "wethAddress"
                    },
                    "id": 2591,
                    "name": "Identifier",
                    "src": "2082:11:23"
                  }
                ],
                "id": 2592,
                "name": "ModifierInvocation",
                "src": "2070:24:23"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2560,
                              "type": "address",
                              "value": "_soloMarginAddress"
                            },
                            "id": 2594,
                            "name": "Identifier",
                            "src": "2109:18:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2580,
                              "type": "address",
                              "value": "soloMarginAddress"
                            },
                            "id": 2595,
                            "name": "Identifier",
                            "src": "2130:17:23"
                          }
                        ],
                        "id": 2596,
                        "name": "Assignment",
                        "src": "2109:38:23"
                      }
                    ],
                    "id": 2597,
                    "name": "ExpressionStatement",
                    "src": "2109:38:23"
                  }
                ],
                "id": 2598,
                "name": "Block",
                "src": "2099:55:23"
              }
            ],
            "id": 2599,
            "name": "FunctionDefinition",
            "src": "1959:195:23"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "receive",
              "modifiers": [
                null
              ],
              "name": "",
              "scope": 3171,
              "stateMutability": "payable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2600,
                "name": "ParameterList",
                "src": "2167:2:23"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2601,
                "name": "ParameterList",
                "src": "2187:0:23"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 2602,
                "name": "Block",
                "src": "2187:2:23"
              }
            ],
            "id": 2603,
            "name": "FunctionDefinition",
            "src": "2160:29:23"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "fallback",
              "modifiers": [
                null
              ],
              "name": "",
              "scope": 3171,
              "stateMutability": "payable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2604,
                "name": "ParameterList",
                "src": "2203:2:23"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2605,
                "name": "ParameterList",
                "src": "2223:0:23"
              },
              {
                "attributes": {
                  "statements": [
                    null
                  ]
                },
                "children": [],
                "id": 2606,
                "name": "Block",
                "src": "2223:2:23"
              }
            ],
            "id": 2607,
            "name": "FunctionDefinition",
            "src": "2195:30:23"
          },
          {
            "attributes": {
              "functionSelector": "0c938657",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "registerPool",
              "scope": 3171,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "marketId",
                      "scope": 2668,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2608,
                        "name": "ElementaryTypeName",
                        "src": "2253:7:23"
                      }
                    ],
                    "id": 2609,
                    "name": "VariableDeclaration",
                    "src": "2253:16:23"
                  }
                ],
                "id": 2610,
                "name": "ParameterList",
                "src": "2252:18:23"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2613,
                "name": "ParameterList",
                "src": "2290:0:23"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 5337,
                      "type": "modifier ()",
                      "value": "onlyOwner"
                    },
                    "id": 2611,
                    "name": "Identifier",
                    "src": "2280:9:23"
                  }
                ],
                "id": 2612,
                "name": "ModifierInvocation",
                "src": "2280:9:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2615
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "tokenAddress",
                          "scope": 2667,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 2614,
                            "name": "ElementaryTypeName",
                            "src": "2300:7:23"
                          }
                        ],
                        "id": 2615,
                        "name": "VariableDeclaration",
                        "src": "2300:20:23"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "address",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3149,
                              "type": "function (address) view returns (address)",
                              "value": "unmapTokenAddress"
                            },
                            "id": 2616,
                            "name": "Identifier",
                            "src": "2323:17:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "getMarketTokenAddress",
                                  "referencedDeclaration": 2509,
                                  "type": "function (uint256) view external returns (address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "contract ISoloMargin",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2510,
                                          "type": "type(contract ISoloMargin)",
                                          "value": "ISoloMargin"
                                        },
                                        "id": 2617,
                                        "name": "Identifier",
                                        "src": "2354:11:23"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2560,
                                          "type": "address",
                                          "value": "_soloMarginAddress"
                                        },
                                        "id": 2618,
                                        "name": "Identifier",
                                        "src": "2366:18:23"
                                      }
                                    ],
                                    "id": 2619,
                                    "name": "FunctionCall",
                                    "src": "2354:31:23"
                                  }
                                ],
                                "id": 2620,
                                "name": "MemberAccess",
                                "src": "2354:53:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2609,
                                  "type": "uint256",
                                  "value": "marketId"
                                },
                                "id": 2621,
                                "name": "Identifier",
                                "src": "2408:8:23"
                              }
                            ],
                            "id": 2622,
                            "name": "FunctionCall",
                            "src": "2354:63:23"
                          }
                        ],
                        "id": 2623,
                        "name": "FunctionCall",
                        "src": "2323:104:23"
                      }
                    ],
                    "id": 2624,
                    "name": "VariableDeclarationStatement",
                    "src": "2300:127:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_325acd3716ec1c446e4602a383beb016d9ec685175702cd049a92ae420fe28a1",
                                  "typeString": "literal_string \"SoloLiquidityProxy: cannot register empty market\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2625,
                            "name": "Identifier",
                            "src": "2437:7:23"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2615,
                                  "type": "address",
                                  "value": "tokenAddress"
                                },
                                "id": 2626,
                                "name": "Identifier",
                                "src": "2458:12:23"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address"
                                        },
                                        "id": 2627,
                                        "name": "ElementaryTypeName",
                                        "src": "2474:7:23"
                                      }
                                    ],
                                    "id": 2628,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "2474:7:23"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2629,
                                    "name": "Literal",
                                    "src": "2482:1:23"
                                  }
                                ],
                                "id": 2630,
                                "name": "FunctionCall",
                                "src": "2474:10:23"
                              }
                            ],
                            "id": 2631,
                            "name": "BinaryOperation",
                            "src": "2458:26:23"
                          },
                          {
                            "attributes": {
                              "hexvalue": "536f6c6f4c697175696469747950726f78793a2063616e6e6f7420726567697374657220656d707479206d61726b6574",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"SoloLiquidityProxy: cannot register empty market\"",
                              "value": "SoloLiquidityProxy: cannot register empty market"
                            },
                            "id": 2632,
                            "name": "Literal",
                            "src": "2498:50:23"
                          }
                        ],
                        "id": 2633,
                        "name": "FunctionCall",
                        "src": "2437:121:23"
                      }
                    ],
                    "id": 2634,
                    "name": "ExpressionStatement",
                    "src": "2437:121:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2564,
                                  "type": "mapping(address => uint256)",
                                  "value": "_tokenAddressToMarketId"
                                },
                                "id": 2635,
                                "name": "Identifier",
                                "src": "2569:23:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2615,
                                  "type": "address",
                                  "value": "tokenAddress"
                                },
                                "id": 2636,
                                "name": "Identifier",
                                "src": "2593:12:23"
                              }
                            ],
                            "id": 2637,
                            "name": "IndexAccess",
                            "src": "2569:37:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2609,
                              "type": "uint256",
                              "value": "marketId"
                            },
                            "id": 2638,
                            "name": "Identifier",
                            "src": "2609:8:23"
                          }
                        ],
                        "id": 2639,
                        "name": "Assignment",
                        "src": "2569:48:23"
                      }
                    ],
                    "id": 2640,
                    "name": "ExpressionStatement",
                    "src": "2569:48:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2568,
                                  "type": "mapping(uint256 => address)",
                                  "value": "_marketIdToTokenAddress"
                                },
                                "id": 2641,
                                "name": "Identifier",
                                "src": "2627:23:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2609,
                                  "type": "uint256",
                                  "value": "marketId"
                                },
                                "id": 2642,
                                "name": "Identifier",
                                "src": "2651:8:23"
                              }
                            ],
                            "id": 2643,
                            "name": "IndexAccess",
                            "src": "2627:33:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2615,
                              "type": "address",
                              "value": "tokenAddress"
                            },
                            "id": 2644,
                            "name": "Identifier",
                            "src": "2663:12:23"
                          }
                        ],
                        "id": 2645,
                        "name": "Assignment",
                        "src": "2627:48:23"
                      }
                    ],
                    "id": 2646,
                    "name": "ExpressionStatement",
                    "src": "2627:48:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2572,
                                  "type": "mapping(address => bool)",
                                  "value": "_tokenAddressRegistered"
                                },
                                "id": 2647,
                                "name": "Identifier",
                                "src": "2685:23:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2615,
                                  "type": "address",
                                  "value": "tokenAddress"
                                },
                                "id": 2648,
                                "name": "Identifier",
                                "src": "2709:12:23"
                              }
                            ],
                            "id": 2649,
                            "name": "IndexAccess",
                            "src": "2685:37:23"
                          },
                          {
                            "attributes": {
                              "hexvalue": "74727565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "bool",
                              "type": "bool",
                              "value": "true"
                            },
                            "id": 2650,
                            "name": "Literal",
                            "src": "2725:4:23"
                          }
                        ],
                        "id": 2651,
                        "name": "Assignment",
                        "src": "2685:44:23"
                      }
                    ],
                    "id": 2652,
                    "name": "ExpressionStatement",
                    "src": "2685:44:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "approve",
                              "referencedDeclaration": 6134,
                              "type": "function (address,uint256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "contract IERC20",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6165,
                                      "type": "type(contract IERC20)",
                                      "value": "IERC20"
                                    },
                                    "id": 2653,
                                    "name": "Identifier",
                                    "src": "2739:6:23"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "address",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3131,
                                          "type": "function (address) view returns (address)",
                                          "value": "remapTokenAddress"
                                        },
                                        "id": 2654,
                                        "name": "Identifier",
                                        "src": "2746:17:23"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2615,
                                          "type": "address",
                                          "value": "tokenAddress"
                                        },
                                        "id": 2655,
                                        "name": "Identifier",
                                        "src": "2764:12:23"
                                      }
                                    ],
                                    "id": 2656,
                                    "name": "FunctionCall",
                                    "src": "2746:31:23"
                                  }
                                ],
                                "id": 2657,
                                "name": "FunctionCall",
                                "src": "2739:39:23"
                              }
                            ],
                            "id": 2658,
                            "name": "MemberAccess",
                            "src": "2739:47:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2560,
                              "type": "address",
                              "value": "_soloMarginAddress"
                            },
                            "id": 2659,
                            "name": "Identifier",
                            "src": "2800:18:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint256"
                                    },
                                    "id": 2660,
                                    "name": "ElementaryTypeName",
                                    "src": "2832:7:23"
                                  }
                                ],
                                "id": 2661,
                                "name": "ElementaryTypeNameExpression",
                                "src": "2832:7:23"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "operator": "-",
                                  "prefix": true,
                                  "type": "int_const -1"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 2662,
                                    "name": "Literal",
                                    "src": "2841:1:23"
                                  }
                                ],
                                "id": 2663,
                                "name": "UnaryOperation",
                                "src": "2840:2:23"
                              }
                            ],
                            "id": 2664,
                            "name": "FunctionCall",
                            "src": "2832:11:23"
                          }
                        ],
                        "id": 2665,
                        "name": "FunctionCall",
                        "src": "2739:114:23"
                      }
                    ],
                    "id": 2666,
                    "name": "ExpressionStatement",
                    "src": "2739:114:23"
                  }
                ],
                "id": 2667,
                "name": "Block",
                "src": "2290:570:23"
              }
            ],
            "id": 2668,
            "name": "FunctionDefinition",
            "src": "2231:629:23"
          },
          {
            "attributes": {
              "functionSelector": "549d0d84",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "deregisterPool",
              "scope": 3171,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "marketId",
                      "scope": 2713,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2669,
                        "name": "ElementaryTypeName",
                        "src": "2890:7:23"
                      }
                    ],
                    "id": 2670,
                    "name": "VariableDeclaration",
                    "src": "2890:16:23"
                  }
                ],
                "id": 2671,
                "name": "ParameterList",
                "src": "2889:18:23"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2674,
                "name": "ParameterList",
                "src": "2927:0:23"
              },
              {
                "attributes": {},
                "children": [
                  {
                    "attributes": {
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 5337,
                      "type": "modifier ()",
                      "value": "onlyOwner"
                    },
                    "id": 2672,
                    "name": "Identifier",
                    "src": "2917:9:23"
                  }
                ],
                "id": 2673,
                "name": "ModifierInvocation",
                "src": "2917:9:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        2676
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "tokenAddress",
                          "scope": 2712,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 2675,
                            "name": "ElementaryTypeName",
                            "src": "2937:7:23"
                          }
                        ],
                        "id": 2676,
                        "name": "VariableDeclaration",
                        "src": "2937:20:23"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2568,
                              "type": "mapping(uint256 => address)",
                              "value": "_marketIdToTokenAddress"
                            },
                            "id": 2677,
                            "name": "Identifier",
                            "src": "2960:23:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2670,
                              "type": "uint256",
                              "value": "marketId"
                            },
                            "id": 2678,
                            "name": "Identifier",
                            "src": "2984:8:23"
                          }
                        ],
                        "id": 2679,
                        "name": "IndexAccess",
                        "src": "2960:33:23"
                      }
                    ],
                    "id": 2680,
                    "name": "VariableDeclarationStatement",
                    "src": "2937:56:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2564,
                                  "type": "mapping(address => uint256)",
                                  "value": "_tokenAddressToMarketId"
                                },
                                "id": 2681,
                                "name": "Identifier",
                                "src": "3004:23:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2676,
                                  "type": "address",
                                  "value": "tokenAddress"
                                },
                                "id": 2682,
                                "name": "Identifier",
                                "src": "3028:12:23"
                              }
                            ],
                            "id": 2683,
                            "name": "IndexAccess",
                            "src": "3004:37:23"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2684,
                            "name": "Literal",
                            "src": "3044:1:23"
                          }
                        ],
                        "id": 2685,
                        "name": "Assignment",
                        "src": "3004:41:23"
                      }
                    ],
                    "id": 2686,
                    "name": "ExpressionStatement",
                    "src": "3004:41:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2568,
                                  "type": "mapping(uint256 => address)",
                                  "value": "_marketIdToTokenAddress"
                                },
                                "id": 2687,
                                "name": "Identifier",
                                "src": "3055:23:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2670,
                                  "type": "uint256",
                                  "value": "marketId"
                                },
                                "id": 2688,
                                "name": "Identifier",
                                "src": "3079:8:23"
                              }
                            ],
                            "id": 2689,
                            "name": "IndexAccess",
                            "src": "3055:33:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 2690,
                                    "name": "ElementaryTypeName",
                                    "src": "3091:7:23"
                                  }
                                ],
                                "id": 2691,
                                "name": "ElementaryTypeNameExpression",
                                "src": "3091:7:23"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2692,
                                "name": "Literal",
                                "src": "3099:1:23"
                              }
                            ],
                            "id": 2693,
                            "name": "FunctionCall",
                            "src": "3091:10:23"
                          }
                        ],
                        "id": 2694,
                        "name": "Assignment",
                        "src": "3055:46:23"
                      }
                    ],
                    "id": 2695,
                    "name": "ExpressionStatement",
                    "src": "3055:46:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2572,
                                  "type": "mapping(address => bool)",
                                  "value": "_tokenAddressRegistered"
                                },
                                "id": 2696,
                                "name": "Identifier",
                                "src": "3111:23:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2676,
                                  "type": "address",
                                  "value": "tokenAddress"
                                },
                                "id": 2697,
                                "name": "Identifier",
                                "src": "3135:12:23"
                              }
                            ],
                            "id": 2698,
                            "name": "IndexAccess",
                            "src": "3111:37:23"
                          },
                          {
                            "attributes": {
                              "hexvalue": "66616c7365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "bool",
                              "type": "bool",
                              "value": "false"
                            },
                            "id": 2699,
                            "name": "Literal",
                            "src": "3151:5:23"
                          }
                        ],
                        "id": 2700,
                        "name": "Assignment",
                        "src": "3111:45:23"
                      }
                    ],
                    "id": 2701,
                    "name": "ExpressionStatement",
                    "src": "3111:45:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "approve",
                              "referencedDeclaration": 6134,
                              "type": "function (address,uint256) external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "contract IERC20",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6165,
                                      "type": "type(contract IERC20)",
                                      "value": "IERC20"
                                    },
                                    "id": 2702,
                                    "name": "Identifier",
                                    "src": "3166:6:23"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "address",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3131,
                                          "type": "function (address) view returns (address)",
                                          "value": "remapTokenAddress"
                                        },
                                        "id": 2703,
                                        "name": "Identifier",
                                        "src": "3173:17:23"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2676,
                                          "type": "address",
                                          "value": "tokenAddress"
                                        },
                                        "id": 2704,
                                        "name": "Identifier",
                                        "src": "3191:12:23"
                                      }
                                    ],
                                    "id": 2705,
                                    "name": "FunctionCall",
                                    "src": "3173:31:23"
                                  }
                                ],
                                "id": 2706,
                                "name": "FunctionCall",
                                "src": "3166:39:23"
                              }
                            ],
                            "id": 2707,
                            "name": "MemberAccess",
                            "src": "3166:47:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2560,
                              "type": "address",
                              "value": "_soloMarginAddress"
                            },
                            "id": 2708,
                            "name": "Identifier",
                            "src": "3214:18:23"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2709,
                            "name": "Literal",
                            "src": "3234:1:23"
                          }
                        ],
                        "id": 2710,
                        "name": "FunctionCall",
                        "src": "3166:70:23"
                      }
                    ],
                    "id": 2711,
                    "name": "ExpressionStatement",
                    "src": "3166:70:23"
                  }
                ],
                "id": 2712,
                "name": "Block",
                "src": "2927:316:23"
              }
            ],
            "id": 2713,
            "name": "FunctionDefinition",
            "src": "2866:377:23"
          },
          {
            "attributes": {
              "baseFunctions": [
                2131
              ],
              "functionSelector": "680c7b94",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getRepaymentAddress",
              "scope": 3171,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 2717,
                "name": "OverrideSpecifier",
                "src": "3338:8:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 2727,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2714,
                        "name": "ElementaryTypeName",
                        "src": "3278:7:23"
                      }
                    ],
                    "id": 2715,
                    "name": "VariableDeclaration",
                    "src": "3278:20:23"
                  }
                ],
                "id": 2716,
                "name": "ParameterList",
                "src": "3277:22:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 2727,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2718,
                        "name": "ElementaryTypeName",
                        "src": "3364:7:23"
                      }
                    ],
                    "id": 2719,
                    "name": "VariableDeclaration",
                    "src": "3364:7:23"
                  }
                ],
                "id": 2720,
                "name": "ParameterList",
                "src": "3363:9:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2720
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "address payable",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_SoloLiquidityProxy_$3171",
                                  "typeString": "contract SoloLiquidityProxy"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "type(address)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "address"
                                },
                                "id": 2721,
                                "name": "ElementaryTypeName",
                                "src": "3394:7:23"
                              }
                            ],
                            "id": 2722,
                            "name": "ElementaryTypeNameExpression",
                            "src": "3394:7:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": -28,
                              "type": "contract SoloLiquidityProxy",
                              "value": "this"
                            },
                            "id": 2723,
                            "name": "Identifier",
                            "src": "3402:4:23"
                          }
                        ],
                        "id": 2724,
                        "name": "FunctionCall",
                        "src": "3394:13:23"
                      }
                    ],
                    "id": 2725,
                    "name": "Return",
                    "src": "3387:20:23"
                  }
                ],
                "id": 2726,
                "name": "Block",
                "src": "3377:37:23"
              }
            ],
            "id": 2727,
            "name": "FunctionDefinition",
            "src": "3249:165:23"
          },
          {
            "attributes": {
              "baseFunctions": [
                2124
              ],
              "functionSelector": "c32dc3b6",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getTotalReserve",
              "scope": 3171,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 2731,
                "name": "OverrideSpecifier",
                "src": "3505:8:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 2757,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2728,
                        "name": "ElementaryTypeName",
                        "src": "3445:7:23"
                      }
                    ],
                    "id": 2729,
                    "name": "VariableDeclaration",
                    "src": "3445:20:23"
                  }
                ],
                "id": 2730,
                "name": "ParameterList",
                "src": "3444:22:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 2757,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2732,
                        "name": "ElementaryTypeName",
                        "src": "3531:7:23"
                      }
                    ],
                    "id": 2733,
                    "name": "VariableDeclaration",
                    "src": "3531:7:23"
                  }
                ],
                "id": 2734,
                "name": "ParameterList",
                "src": "3530:9:23"
              },
              {
                "children": [
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "&&",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3101,
                                  "type": "function (address) view returns (bool)",
                                  "value": "isRegistered"
                                },
                                "id": 2735,
                                "name": "Identifier",
                                "src": "3558:12:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2729,
                                  "type": "address",
                                  "value": "tokenAddress"
                                },
                                "id": 2736,
                                "name": "Identifier",
                                "src": "3571:12:23"
                              }
                            ],
                            "id": 2737,
                            "name": "FunctionCall",
                            "src": "3558:26:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!",
                              "prefix": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3170,
                                      "type": "function (address) view returns (bool)",
                                      "value": "isClosing"
                                    },
                                    "id": 2738,
                                    "name": "Identifier",
                                    "src": "3589:9:23"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2729,
                                      "type": "address",
                                      "value": "tokenAddress"
                                    },
                                    "id": 2739,
                                    "name": "Identifier",
                                    "src": "3599:12:23"
                                  }
                                ],
                                "id": 2740,
                                "name": "FunctionCall",
                                "src": "3589:23:23"
                              }
                            ],
                            "id": 2741,
                            "name": "UnaryOperation",
                            "src": "3588:24:23"
                          }
                        ],
                        "id": 2742,
                        "name": "BinaryOperation",
                        "src": "3558:54:23"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 2734
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "balanceOf",
                                      "referencedDeclaration": 6104,
                                      "type": "function (address) view external returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "contract IERC20",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6165,
                                              "type": "type(contract IERC20)",
                                              "value": "IERC20"
                                            },
                                            "id": 2743,
                                            "name": "Identifier",
                                            "src": "3651:6:23"
                                          },
                                          {
                                            "attributes": {
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "address",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3131,
                                                  "type": "function (address) view returns (address)",
                                                  "value": "remapTokenAddress"
                                                },
                                                "id": 2744,
                                                "name": "Identifier",
                                                "src": "3658:17:23"
                                              },
                                              {
                                                "attributes": {
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 2729,
                                                  "type": "address",
                                                  "value": "tokenAddress"
                                                },
                                                "id": 2745,
                                                "name": "Identifier",
                                                "src": "3676:12:23"
                                              }
                                            ],
                                            "id": 2746,
                                            "name": "FunctionCall",
                                            "src": "3658:31:23"
                                          }
                                        ],
                                        "id": 2747,
                                        "name": "FunctionCall",
                                        "src": "3651:39:23"
                                      }
                                    ],
                                    "id": 2748,
                                    "name": "MemberAccess",
                                    "src": "3651:49:23"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2560,
                                      "type": "address",
                                      "value": "_soloMarginAddress"
                                    },
                                    "id": 2749,
                                    "name": "Identifier",
                                    "src": "3722:18:23"
                                  }
                                ],
                                "id": 2750,
                                "name": "FunctionCall",
                                "src": "3651:107:23"
                              }
                            ],
                            "id": 2751,
                            "name": "Return",
                            "src": "3628:130:23"
                          }
                        ],
                        "id": 2752,
                        "name": "Block",
                        "src": "3614:155:23"
                      }
                    ],
                    "id": 2753,
                    "name": "IfStatement",
                    "src": "3554:215:23"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 2734
                    },
                    "children": [
                      {
                        "attributes": {
                          "hexvalue": "30",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "token": "number",
                          "type": "int_const 0",
                          "value": "0"
                        },
                        "id": 2754,
                        "name": "Literal",
                        "src": "3786:1:23"
                      }
                    ],
                    "id": 2755,
                    "name": "Return",
                    "src": "3779:8:23"
                  }
                ],
                "id": 2756,
                "name": "Block",
                "src": "3544:250:23"
              }
            ],
            "id": 2757,
            "name": "FunctionDefinition",
            "src": "3420:374:23"
          },
          {
            "attributes": {
              "baseFunctions": [
                2140
              ],
              "functionSelector": "aa819057",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getRepaymentAmount",
              "scope": 3171,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 2763,
                "name": "OverrideSpecifier",
                "src": "3909:8:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 2773,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2758,
                        "name": "ElementaryTypeName",
                        "src": "3828:7:23"
                      }
                    ],
                    "id": 2759,
                    "name": "VariableDeclaration",
                    "src": "3828:20:23"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAmount",
                      "scope": 2773,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2760,
                        "name": "ElementaryTypeName",
                        "src": "3850:7:23"
                      }
                    ],
                    "id": 2761,
                    "name": "VariableDeclaration",
                    "src": "3850:19:23"
                  }
                ],
                "id": 2762,
                "name": "ParameterList",
                "src": "3827:43:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 2773,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2764,
                        "name": "ElementaryTypeName",
                        "src": "3935:7:23"
                      }
                    ],
                    "id": 2765,
                    "name": "VariableDeclaration",
                    "src": "3935:7:23"
                  }
                ],
                "id": 2766,
                "name": "ParameterList",
                "src": "3934:9:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2766
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2795,
                              "type": "function (address,uint256) view returns (uint256)",
                              "value": "getRepaymentAmountInternal"
                            },
                            "id": 2767,
                            "name": "Identifier",
                            "src": "3965:26:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2759,
                              "type": "address",
                              "value": "tokenAddress"
                            },
                            "id": 2768,
                            "name": "Identifier",
                            "src": "3992:12:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2761,
                              "type": "uint256",
                              "value": "tokenAmount"
                            },
                            "id": 2769,
                            "name": "Identifier",
                            "src": "4006:11:23"
                          }
                        ],
                        "id": 2770,
                        "name": "FunctionCall",
                        "src": "3965:53:23"
                      }
                    ],
                    "id": 2771,
                    "name": "Return",
                    "src": "3958:60:23"
                  }
                ],
                "id": 2772,
                "name": "Block",
                "src": "3948:77:23"
              }
            ],
            "id": 2773,
            "name": "FunctionDefinition",
            "src": "3800:225:23"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getRepaymentAmountInternal",
              "scope": 3171,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 2795,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2774,
                        "name": "ElementaryTypeName",
                        "src": "4076:7:23"
                      }
                    ],
                    "id": 2775,
                    "name": "VariableDeclaration",
                    "src": "4076:20:23"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAmount",
                      "scope": 2795,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2776,
                        "name": "ElementaryTypeName",
                        "src": "4106:7:23"
                      }
                    ],
                    "id": 2777,
                    "name": "VariableDeclaration",
                    "src": "4106:19:23"
                  }
                ],
                "id": 2778,
                "name": "ParameterList",
                "src": "4066:65:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 2795,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2779,
                        "name": "ElementaryTypeName",
                        "src": "4155:7:23"
                      }
                    ],
                    "id": 2780,
                    "name": "VariableDeclaration",
                    "src": "4155:7:23"
                  }
                ],
                "id": 2781,
                "name": "ParameterList",
                "src": "4154:9:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2781
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "add",
                              "referencedDeclaration": 5417,
                              "type": "function (uint256,uint256) pure returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2777,
                                  "type": "uint256",
                                  "value": "tokenAmount"
                                },
                                "id": 2782,
                                "name": "Identifier",
                                "src": "4256:11:23"
                              }
                            ],
                            "id": 2783,
                            "name": "MemberAccess",
                            "src": "4256:15:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3113,
                                          "type": "function (address) view returns (uint256)",
                                          "value": "marketIdFromTokenAddress"
                                        },
                                        "id": 2784,
                                        "name": "Identifier",
                                        "src": "4272:24:23"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2775,
                                          "type": "address",
                                          "value": "tokenAddress"
                                        },
                                        "id": 2785,
                                        "name": "Identifier",
                                        "src": "4297:12:23"
                                      }
                                    ],
                                    "id": 2786,
                                    "name": "FunctionCall",
                                    "src": "4272:38:23"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "32",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 2",
                                      "value": "2"
                                    },
                                    "id": 2787,
                                    "name": "Literal",
                                    "src": "4313:1:23"
                                  }
                                ],
                                "id": 2788,
                                "name": "BinaryOperation",
                                "src": "4272:42:23"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 2789,
                                "name": "Literal",
                                "src": "4317:1:23"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "32",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 2",
                                  "value": "2"
                                },
                                "id": 2790,
                                "name": "Literal",
                                "src": "4321:1:23"
                              }
                            ],
                            "id": 2791,
                            "name": "Conditional",
                            "src": "4272:50:23"
                          }
                        ],
                        "id": 2792,
                        "name": "FunctionCall",
                        "src": "4256:67:23"
                      }
                    ],
                    "id": 2793,
                    "name": "Return",
                    "src": "4237:86:23"
                  }
                ],
                "id": 2794,
                "name": "Block",
                "src": "4164:166:23"
              }
            ],
            "id": 2795,
            "name": "FunctionDefinition",
            "src": "4031:299:23"
          },
          {
            "attributes": {
              "baseFunctions": [
                2147
              ],
              "functionSelector": "4b8a3529",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "borrow",
              "scope": 3171,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 2801,
                "name": "OverrideSpecifier",
                "src": "4420:8:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 2905,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2796,
                        "name": "ElementaryTypeName",
                        "src": "4352:7:23"
                      }
                    ],
                    "id": 2797,
                    "name": "VariableDeclaration",
                    "src": "4352:20:23"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAmount",
                      "scope": 2905,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2798,
                        "name": "ElementaryTypeName",
                        "src": "4374:7:23"
                      }
                    ],
                    "id": 2799,
                    "name": "VariableDeclaration",
                    "src": "4374:19:23"
                  }
                ],
                "id": 2800,
                "name": "ParameterList",
                "src": "4351:43:23"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2802,
                "name": "ParameterList",
                "src": "4433:0:23"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address payable"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2574,
                              "type": "address payable",
                              "value": "_scheduleInvokerAddress"
                            },
                            "id": 2803,
                            "name": "Identifier",
                            "src": "4443:23:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": -15,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 2804,
                                "name": "Identifier",
                                "src": "4469:3:23"
                              }
                            ],
                            "id": 2805,
                            "name": "MemberAccess",
                            "src": "4469:10:23"
                          }
                        ],
                        "id": 2806,
                        "name": "Assignment",
                        "src": "4443:36:23"
                      }
                    ],
                    "id": 2807,
                    "name": "ExpressionStatement",
                    "src": "4443:36:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2576,
                              "type": "address",
                              "value": "_scheduleTokenAddress"
                            },
                            "id": 2808,
                            "name": "Identifier",
                            "src": "4489:21:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2797,
                              "type": "address",
                              "value": "tokenAddress"
                            },
                            "id": 2809,
                            "name": "Identifier",
                            "src": "4513:12:23"
                          }
                        ],
                        "id": 2810,
                        "name": "Assignment",
                        "src": "4489:36:23"
                      }
                    ],
                    "id": 2811,
                    "name": "ExpressionStatement",
                    "src": "4489:36:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2578,
                              "type": "uint256",
                              "value": "_scheduleTokenAmount"
                            },
                            "id": 2812,
                            "name": "Identifier",
                            "src": "4535:20:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2799,
                              "type": "uint256",
                              "value": "tokenAmount"
                            },
                            "id": 2813,
                            "name": "Identifier",
                            "src": "4558:11:23"
                          }
                        ],
                        "id": 2814,
                        "name": "Assignment",
                        "src": "4535:34:23"
                      }
                    ],
                    "id": 2815,
                    "name": "ExpressionStatement",
                    "src": "4535:34:23"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2817
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "solo",
                          "scope": 2904,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract ISoloMargin",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "ISoloMargin",
                              "referencedDeclaration": 2510,
                              "type": "contract ISoloMargin"
                            },
                            "id": 2816,
                            "name": "UserDefinedTypeName",
                            "src": "4580:11:23"
                          }
                        ],
                        "id": 2817,
                        "name": "VariableDeclaration",
                        "src": "4580:16:23"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "contract ISoloMargin",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2510,
                              "type": "type(contract ISoloMargin)",
                              "value": "ISoloMargin"
                            },
                            "id": 2818,
                            "name": "Identifier",
                            "src": "4599:11:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2560,
                              "type": "address",
                              "value": "_soloMarginAddress"
                            },
                            "id": 2819,
                            "name": "Identifier",
                            "src": "4611:18:23"
                          }
                        ],
                        "id": 2820,
                        "name": "FunctionCall",
                        "src": "4599:31:23"
                      }
                    ],
                    "id": 2821,
                    "name": "VariableDeclarationStatement",
                    "src": "4580:50:23"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2826
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "operations",
                          "scope": 2904,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct Types.ActionArgs[]",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "type": "struct Types.ActionArgs[]"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "Types.ActionArgs",
                                  "referencedDeclaration": 3220,
                                  "type": "struct Types.ActionArgs"
                                },
                                "id": 2824,
                                "name": "UserDefinedTypeName",
                                "src": "4640:16:23"
                              }
                            ],
                            "id": 2825,
                            "name": "ArrayTypeName",
                            "src": "4640:18:23"
                          }
                        ],
                        "id": 2826,
                        "name": "VariableDeclaration",
                        "src": "4640:36:23"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "struct Types.ActionArgs memory[] memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "function (uint256) pure returns (struct Types.ActionArgs memory[] memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "type": "struct Types.ActionArgs[]"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "Types.ActionArgs",
                                      "referencedDeclaration": 3220,
                                      "type": "struct Types.ActionArgs"
                                    },
                                    "id": 2827,
                                    "name": "UserDefinedTypeName",
                                    "src": "4683:16:23"
                                  }
                                ],
                                "id": 2828,
                                "name": "ArrayTypeName",
                                "src": "4683:18:23"
                              }
                            ],
                            "id": 2829,
                            "name": "NewExpression",
                            "src": "4679:22:23"
                          },
                          {
                            "attributes": {
                              "hexvalue": "33",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 3",
                              "value": "3"
                            },
                            "id": 2830,
                            "name": "Literal",
                            "src": "4702:1:23"
                          }
                        ],
                        "id": 2831,
                        "name": "FunctionCall",
                        "src": "4679:25:23"
                      }
                    ],
                    "id": 2832,
                    "name": "VariableDeclarationStatement",
                    "src": "4640:64:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "struct Types.ActionArgs memory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "struct Types.ActionArgs memory"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2826,
                                  "type": "struct Types.ActionArgs memory[] memory",
                                  "value": "operations"
                                },
                                "id": 2833,
                                "name": "Identifier",
                                "src": "4714:10:23"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2834,
                                "name": "Literal",
                                "src": "4725:1:23"
                              }
                            ],
                            "id": 2835,
                            "name": "IndexAccess",
                            "src": "4714:13:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "struct Types.ActionArgs memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3027,
                                  "type": "function (address,uint256) view returns (struct Types.ActionArgs memory)",
                                  "value": "getWithdrawAction"
                                },
                                "id": 2836,
                                "name": "Identifier",
                                "src": "4730:17:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2797,
                                  "type": "address",
                                  "value": "tokenAddress"
                                },
                                "id": 2837,
                                "name": "Identifier",
                                "src": "4748:12:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2799,
                                  "type": "uint256",
                                  "value": "tokenAmount"
                                },
                                "id": 2838,
                                "name": "Identifier",
                                "src": "4762:11:23"
                              }
                            ],
                            "id": 2839,
                            "name": "FunctionCall",
                            "src": "4730:44:23"
                          }
                        ],
                        "id": 2840,
                        "name": "Assignment",
                        "src": "4714:60:23"
                      }
                    ],
                    "id": 2841,
                    "name": "ExpressionStatement",
                    "src": "4714:60:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "struct Types.ActionArgs memory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "struct Types.ActionArgs memory"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2826,
                                  "type": "struct Types.ActionArgs memory[] memory",
                                  "value": "operations"
                                },
                                "id": 2842,
                                "name": "Identifier",
                                "src": "4784:10:23"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 2843,
                                "name": "Literal",
                                "src": "4795:1:23"
                              }
                            ],
                            "id": 2844,
                            "name": "IndexAccess",
                            "src": "4784:13:23"
                          },
                          {
                            "attributes": {
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "struct Types.ActionArgs memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3089,
                                  "type": "function () view returns (struct Types.ActionArgs memory)",
                                  "value": "getCallAction"
                                },
                                "id": 2845,
                                "name": "Identifier",
                                "src": "4800:13:23"
                              }
                            ],
                            "id": 2846,
                            "name": "FunctionCall",
                            "src": "4800:15:23"
                          }
                        ],
                        "id": 2847,
                        "name": "Assignment",
                        "src": "4784:31:23"
                      }
                    ],
                    "id": 2848,
                    "name": "ExpressionStatement",
                    "src": "4784:31:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "struct Types.ActionArgs memory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "struct Types.ActionArgs memory"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2826,
                                  "type": "struct Types.ActionArgs memory[] memory",
                                  "value": "operations"
                                },
                                "id": 2849,
                                "name": "Identifier",
                                "src": "4825:10:23"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "32",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 2",
                                  "value": "2"
                                },
                                "id": 2850,
                                "name": "Literal",
                                "src": "4836:1:23"
                              }
                            ],
                            "id": 2851,
                            "name": "IndexAccess",
                            "src": "4825:13:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "struct Types.ActionArgs memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3066,
                                  "type": "function (address,uint256) view returns (struct Types.ActionArgs memory)",
                                  "value": "getDepositAction"
                                },
                                "id": 2852,
                                "name": "Identifier",
                                "src": "4841:16:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2797,
                                  "type": "address",
                                  "value": "tokenAddress"
                                },
                                "id": 2853,
                                "name": "Identifier",
                                "src": "4871:12:23"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2795,
                                      "type": "function (address,uint256) view returns (uint256)",
                                      "value": "getRepaymentAmountInternal"
                                    },
                                    "id": 2854,
                                    "name": "Identifier",
                                    "src": "4897:26:23"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2797,
                                      "type": "address",
                                      "value": "tokenAddress"
                                    },
                                    "id": 2855,
                                    "name": "Identifier",
                                    "src": "4924:12:23"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2799,
                                      "type": "uint256",
                                      "value": "tokenAmount"
                                    },
                                    "id": 2856,
                                    "name": "Identifier",
                                    "src": "4938:11:23"
                                  }
                                ],
                                "id": 2857,
                                "name": "FunctionCall",
                                "src": "4897:53:23"
                              }
                            ],
                            "id": 2858,
                            "name": "FunctionCall",
                            "src": "4841:119:23"
                          }
                        ],
                        "id": 2859,
                        "name": "Assignment",
                        "src": "4825:135:23"
                      }
                    ],
                    "id": 2860,
                    "name": "ExpressionStatement",
                    "src": "4825:135:23"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2865
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "accountInfos",
                          "scope": 2904,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct Types.AccountInfo[]",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "type": "struct Types.AccountInfo[]"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "Types.AccountInfo",
                                  "referencedDeclaration": 3225,
                                  "type": "struct Types.AccountInfo"
                                },
                                "id": 2863,
                                "name": "UserDefinedTypeName",
                                "src": "4970:17:23"
                              }
                            ],
                            "id": 2864,
                            "name": "ArrayTypeName",
                            "src": "4970:19:23"
                          }
                        ],
                        "id": 2865,
                        "name": "VariableDeclaration",
                        "src": "4970:39:23"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "struct Types.AccountInfo memory[] memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "type": "function (uint256) pure returns (struct Types.AccountInfo memory[] memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "type": "struct Types.AccountInfo[]"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "Types.AccountInfo",
                                      "referencedDeclaration": 3225,
                                      "type": "struct Types.AccountInfo"
                                    },
                                    "id": 2866,
                                    "name": "UserDefinedTypeName",
                                    "src": "5016:17:23"
                                  }
                                ],
                                "id": 2867,
                                "name": "ArrayTypeName",
                                "src": "5016:19:23"
                              }
                            ],
                            "id": 2868,
                            "name": "NewExpression",
                            "src": "5012:23:23"
                          },
                          {
                            "attributes": {
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 2869,
                            "name": "Literal",
                            "src": "5036:1:23"
                          }
                        ],
                        "id": 2870,
                        "name": "FunctionCall",
                        "src": "5012:26:23"
                      }
                    ],
                    "id": 2871,
                    "name": "VariableDeclarationStatement",
                    "src": "4970:68:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "struct Types.AccountInfo memory"
                        },
                        "children": [
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "struct Types.AccountInfo memory"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2865,
                                  "type": "struct Types.AccountInfo memory[] memory",
                                  "value": "accountInfos"
                                },
                                "id": 2872,
                                "name": "Identifier",
                                "src": "5048:12:23"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2873,
                                "name": "Literal",
                                "src": "5061:1:23"
                              }
                            ],
                            "id": 2874,
                            "name": "IndexAccess",
                            "src": "5048:15:23"
                          },
                          {
                            "attributes": {
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "struct Types.AccountInfo memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2988,
                                  "type": "function () view returns (struct Types.AccountInfo memory)",
                                  "value": "getAccountInfo"
                                },
                                "id": 2875,
                                "name": "Identifier",
                                "src": "5066:14:23"
                              }
                            ],
                            "id": 2876,
                            "name": "FunctionCall",
                            "src": "5066:16:23"
                          }
                        ],
                        "id": 2877,
                        "name": "Assignment",
                        "src": "5048:34:23"
                      }
                    ],
                    "id": 2878,
                    "name": "ExpressionStatement",
                    "src": "5048:34:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_array$_t_struct$_AccountInfo_$3225_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct Types.AccountInfo memory[] memory"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_struct$_ActionArgs_$3220_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct Types.ActionArgs memory[] memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "operate",
                              "referencedDeclaration": 2495,
                              "type": "function (struct Types.AccountInfo memory[] memory,struct Types.ActionArgs memory[] memory) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2817,
                                  "type": "contract ISoloMargin",
                                  "value": "solo"
                                },
                                "id": 2879,
                                "name": "Identifier",
                                "src": "5093:4:23"
                              }
                            ],
                            "id": 2881,
                            "name": "MemberAccess",
                            "src": "5093:12:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2865,
                              "type": "struct Types.AccountInfo memory[] memory",
                              "value": "accountInfos"
                            },
                            "id": 2882,
                            "name": "Identifier",
                            "src": "5106:12:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2826,
                              "type": "struct Types.ActionArgs memory[] memory",
                              "value": "operations"
                            },
                            "id": 2883,
                            "name": "Identifier",
                            "src": "5120:10:23"
                          }
                        ],
                        "id": 2884,
                        "name": "FunctionCall",
                        "src": "5093:38:23"
                      }
                    ],
                    "id": 2885,
                    "name": "ExpressionStatement",
                    "src": "5093:38:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address payable"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2574,
                              "type": "address payable",
                              "value": "_scheduleInvokerAddress"
                            },
                            "id": 2886,
                            "name": "Identifier",
                            "src": "5142:23:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 2887,
                                    "name": "ElementaryTypeName",
                                    "src": "5168:7:23"
                                  }
                                ],
                                "id": 2888,
                                "name": "ElementaryTypeNameExpression",
                                "src": "5168:7:23"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2889,
                                "name": "Literal",
                                "src": "5176:1:23"
                              }
                            ],
                            "id": 2890,
                            "name": "FunctionCall",
                            "src": "5168:10:23"
                          }
                        ],
                        "id": 2891,
                        "name": "Assignment",
                        "src": "5142:36:23"
                      }
                    ],
                    "id": 2892,
                    "name": "ExpressionStatement",
                    "src": "5142:36:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2576,
                              "type": "address",
                              "value": "_scheduleTokenAddress"
                            },
                            "id": 2893,
                            "name": "Identifier",
                            "src": "5188:21:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 2894,
                                    "name": "ElementaryTypeName",
                                    "src": "5212:7:23"
                                  }
                                ],
                                "id": 2895,
                                "name": "ElementaryTypeNameExpression",
                                "src": "5212:7:23"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 2896,
                                "name": "Literal",
                                "src": "5220:1:23"
                              }
                            ],
                            "id": 2897,
                            "name": "FunctionCall",
                            "src": "5212:10:23"
                          }
                        ],
                        "id": 2898,
                        "name": "Assignment",
                        "src": "5188:34:23"
                      }
                    ],
                    "id": 2899,
                    "name": "ExpressionStatement",
                    "src": "5188:34:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2578,
                              "type": "uint256",
                              "value": "_scheduleTokenAmount"
                            },
                            "id": 2900,
                            "name": "Identifier",
                            "src": "5232:20:23"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 2901,
                            "name": "Literal",
                            "src": "5255:1:23"
                          }
                        ],
                        "id": 2902,
                        "name": "Assignment",
                        "src": "5232:24:23"
                      }
                    ],
                    "id": 2903,
                    "name": "ExpressionStatement",
                    "src": "5232:24:23"
                  }
                ],
                "id": 2904,
                "name": "Block",
                "src": "4433:830:23"
              }
            ],
            "id": 2905,
            "name": "FunctionDefinition",
            "src": "4336:927:23"
          },
          {
            "attributes": {
              "baseFunctions": [
                2481
              ],
              "functionSelector": "8b418713",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "callFunction",
              "scope": 3171,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "overrides": [
                    null
                  ]
                },
                "id": 2913,
                "name": "OverrideSpecifier",
                "src": "5401:8:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "sender",
                      "scope": 2973,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2906,
                        "name": "ElementaryTypeName",
                        "src": "5300:7:23"
                      }
                    ],
                    "id": 2907,
                    "name": "VariableDeclaration",
                    "src": "5300:14:23"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "accountInfo",
                      "scope": 2973,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct Types.AccountInfo",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "Types.AccountInfo",
                          "referencedDeclaration": 3225,
                          "type": "struct Types.AccountInfo"
                        },
                        "id": 2908,
                        "name": "UserDefinedTypeName",
                        "src": "5324:17:23"
                      }
                    ],
                    "id": 2909,
                    "name": "VariableDeclaration",
                    "src": "5324:36:23"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "scope": 2973,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 2910,
                        "name": "ElementaryTypeName",
                        "src": "5370:5:23"
                      }
                    ],
                    "id": 2911,
                    "name": "VariableDeclaration",
                    "src": "5370:17:23"
                  }
                ],
                "id": 2912,
                "name": "ParameterList",
                "src": "5290:103:23"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2914,
                "name": "ParameterList",
                "src": "5410:0:23"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_8a2292a52ba49c99160c2313a505cb960546128d10b4e96c3ad0220c0cf8c647",
                                  "typeString": "literal_string \"SoloLiquidityProxy: not scheduled\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2915,
                            "name": "Identifier",
                            "src": "5420:7:23"
                          },
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2574,
                                  "type": "address payable",
                                  "value": "_scheduleInvokerAddress"
                                },
                                "id": 2916,
                                "name": "Identifier",
                                "src": "5441:23:23"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address"
                                        },
                                        "id": 2917,
                                        "name": "ElementaryTypeName",
                                        "src": "5468:7:23"
                                      }
                                    ],
                                    "id": 2918,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "5468:7:23"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 2919,
                                    "name": "Literal",
                                    "src": "5476:1:23"
                                  }
                                ],
                                "id": 2920,
                                "name": "FunctionCall",
                                "src": "5468:10:23"
                              }
                            ],
                            "id": 2921,
                            "name": "BinaryOperation",
                            "src": "5441:37:23"
                          },
                          {
                            "attributes": {
                              "hexvalue": "536f6c6f4c697175696469747950726f78793a206e6f74207363686564756c6564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"SoloLiquidityProxy: not scheduled\"",
                              "value": "SoloLiquidityProxy: not scheduled"
                            },
                            "id": 2922,
                            "name": "Literal",
                            "src": "5492:35:23"
                          }
                        ],
                        "id": 2923,
                        "name": "FunctionCall",
                        "src": "5420:117:23"
                      }
                    ],
                    "id": 2924,
                    "name": "ExpressionStatement",
                    "src": "5420:117:23"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2576,
                              "type": "address",
                              "value": "_scheduleTokenAddress"
                            },
                            "id": 2925,
                            "name": "Identifier",
                            "src": "5552:21:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 2926,
                                    "name": "ElementaryTypeName",
                                    "src": "5577:7:23"
                                  }
                                ],
                                "id": 2927,
                                "name": "ElementaryTypeNameExpression",
                                "src": "5577:7:23"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 2928,
                                "name": "Literal",
                                "src": "5585:1:23"
                              }
                            ],
                            "id": 2929,
                            "name": "FunctionCall",
                            "src": "5577:10:23"
                          }
                        ],
                        "id": 2930,
                        "name": "BinaryOperation",
                        "src": "5552:35:23"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1649,
                                      "type": "function (uint256)",
                                      "value": "unwrap"
                                    },
                                    "id": 2931,
                                    "name": "Identifier",
                                    "src": "5603:6:23"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2578,
                                      "type": "uint256",
                                      "value": "_scheduleTokenAmount"
                                    },
                                    "id": 2932,
                                    "name": "Identifier",
                                    "src": "5610:20:23"
                                  }
                                ],
                                "id": 2933,
                                "name": "FunctionCall",
                                "src": "5603:28:23"
                              }
                            ],
                            "id": 2934,
                            "name": "ExpressionStatement",
                            "src": "5603:28:23"
                          }
                        ],
                        "id": 2935,
                        "name": "Block",
                        "src": "5589:53:23"
                      }
                    ],
                    "id": 2936,
                    "name": "IfStatement",
                    "src": "5548:94:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_6ee23ad3fd088e06cb3b515a08546b513b08fc6447a368fbe64a37067915d8c0",
                                  "typeString": "literal_string \"SoloLiquidityProxy: transfer to invoker failed\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 2937,
                            "name": "Identifier",
                            "src": "5652:7:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1433,
                                  "type": "function (address,address,uint256) returns (bool)",
                                  "value": "transfer"
                                },
                                "id": 2938,
                                "name": "Identifier",
                                "src": "5673:8:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2576,
                                  "type": "address",
                                  "value": "_scheduleTokenAddress"
                                },
                                "id": 2939,
                                "name": "Identifier",
                                "src": "5699:21:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2574,
                                  "type": "address payable",
                                  "value": "_scheduleInvokerAddress"
                                },
                                "id": 2940,
                                "name": "Identifier",
                                "src": "5738:23:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2578,
                                  "type": "uint256",
                                  "value": "_scheduleTokenAmount"
                                },
                                "id": 2941,
                                "name": "Identifier",
                                "src": "5779:20:23"
                              }
                            ],
                            "id": 2942,
                            "name": "FunctionCall",
                            "src": "5673:140:23"
                          },
                          {
                            "attributes": {
                              "hexvalue": "536f6c6f4c697175696469747950726f78793a207472616e7366657220746f20696e766f6b6572206661696c6564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "string",
                              "type": "literal_string \"SoloLiquidityProxy: transfer to invoker failed\"",
                              "value": "SoloLiquidityProxy: transfer to invoker failed"
                            },
                            "id": 2943,
                            "name": "Literal",
                            "src": "5827:48:23"
                          }
                        ],
                        "id": 2944,
                        "name": "FunctionCall",
                        "src": "5652:233:23"
                      }
                    ],
                    "id": 2945,
                    "name": "ExpressionStatement",
                    "src": "5652:233:23"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        2947
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "invoker",
                          "scope": 2972,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract IInvoker",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "IInvoker",
                              "referencedDeclaration": 1234,
                              "type": "contract IInvoker"
                            },
                            "id": 2946,
                            "name": "UserDefinedTypeName",
                            "src": "5896:8:23"
                          }
                        ],
                        "id": 2947,
                        "name": "VariableDeclaration",
                        "src": "5896:16:23"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "contract IInvoker",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1234,
                              "type": "type(contract IInvoker)",
                              "value": "IInvoker"
                            },
                            "id": 2948,
                            "name": "Identifier",
                            "src": "5915:8:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2574,
                              "type": "address payable",
                              "value": "_scheduleInvokerAddress"
                            },
                            "id": 2949,
                            "name": "Identifier",
                            "src": "5924:23:23"
                          }
                        ],
                        "id": 2950,
                        "name": "FunctionCall",
                        "src": "5915:33:23"
                      }
                    ],
                    "id": 2951,
                    "name": "VariableDeclarationStatement",
                    "src": "5896:52:23"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "invokeCallback",
                              "referencedDeclaration": 1197,
                              "type": "function () external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2947,
                                  "type": "contract IInvoker",
                                  "value": "invoker"
                                },
                                "id": 2952,
                                "name": "Identifier",
                                "src": "5958:7:23"
                              }
                            ],
                            "id": 2954,
                            "name": "MemberAccess",
                            "src": "5958:22:23"
                          }
                        ],
                        "id": 2955,
                        "name": "FunctionCall",
                        "src": "5958:24:23"
                      }
                    ],
                    "id": 2956,
                    "name": "ExpressionStatement",
                    "src": "5958:24:23"
                  },
                  {
                    "attributes": {},
                    "children": [
                      {
                        "attributes": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2576,
                              "type": "address",
                              "value": "_scheduleTokenAddress"
                            },
                            "id": 2957,
                            "name": "Identifier",
                            "src": "5997:21:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 2958,
                                    "name": "ElementaryTypeName",
                                    "src": "6022:7:23"
                                  }
                                ],
                                "id": 2959,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6022:7:23"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 2960,
                                "name": "Literal",
                                "src": "6030:1:23"
                              }
                            ],
                            "id": 2961,
                            "name": "FunctionCall",
                            "src": "6022:10:23"
                          }
                        ],
                        "id": 2962,
                        "name": "BinaryOperation",
                        "src": "5997:35:23"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1618,
                                      "type": "function (uint256)",
                                      "value": "wrap"
                                    },
                                    "id": 2963,
                                    "name": "Identifier",
                                    "src": "6048:4:23"
                                  },
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            },
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2795,
                                          "type": "function (address,uint256) view returns (uint256)",
                                          "value": "getRepaymentAmountInternal"
                                        },
                                        "id": 2964,
                                        "name": "Identifier",
                                        "src": "6070:26:23"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2576,
                                          "type": "address",
                                          "value": "_scheduleTokenAddress"
                                        },
                                        "id": 2965,
                                        "name": "Identifier",
                                        "src": "6118:21:23"
                                      },
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 2578,
                                          "type": "uint256",
                                          "value": "_scheduleTokenAmount"
                                        },
                                        "id": 2966,
                                        "name": "Identifier",
                                        "src": "6161:20:23"
                                      }
                                    ],
                                    "id": 2967,
                                    "name": "FunctionCall",
                                    "src": "6070:129:23"
                                  }
                                ],
                                "id": 2968,
                                "name": "FunctionCall",
                                "src": "6048:165:23"
                              }
                            ],
                            "id": 2969,
                            "name": "ExpressionStatement",
                            "src": "6048:165:23"
                          }
                        ],
                        "id": 2970,
                        "name": "Block",
                        "src": "6034:190:23"
                      }
                    ],
                    "id": 2971,
                    "name": "IfStatement",
                    "src": "5993:231:23"
                  }
                ],
                "id": 2972,
                "name": "Block",
                "src": "5410:820:23"
              }
            ],
            "id": 2973,
            "name": "FunctionDefinition",
            "src": "5269:961:23"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getAccountInfo",
              "scope": 3171,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 2974,
                "name": "ParameterList",
                "src": "6259:2:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 2988,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct Types.AccountInfo",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "Types.AccountInfo",
                          "referencedDeclaration": 3225,
                          "type": "struct Types.AccountInfo"
                        },
                        "id": 2975,
                        "name": "UserDefinedTypeName",
                        "src": "6285:17:23"
                      }
                    ],
                    "id": 2976,
                    "name": "VariableDeclaration",
                    "src": "6285:24:23"
                  }
                ],
                "id": 2977,
                "name": "ParameterList",
                "src": "6284:26:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2977
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": true,
                          "lValueRequested": false,
                          "names": [
                            "owner",
                            "number"
                          ],
                          "tryCall": false,
                          "type": "struct Types.AccountInfo memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "AccountInfo",
                              "referencedDeclaration": 3225,
                              "type": "type(struct Types.AccountInfo storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3226,
                                  "type": "type(library Types)",
                                  "value": "Types"
                                },
                                "id": 2978,
                                "name": "Identifier",
                                "src": "6328:5:23"
                              }
                            ],
                            "id": 2979,
                            "name": "MemberAccess",
                            "src": "6328:17:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_SoloLiquidityProxy_$3171",
                                      "typeString": "contract SoloLiquidityProxy"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 2980,
                                    "name": "ElementaryTypeName",
                                    "src": "6354:7:23"
                                  }
                                ],
                                "id": 2981,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6354:7:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": -28,
                                  "type": "contract SoloLiquidityProxy",
                                  "value": "this"
                                },
                                "id": 2982,
                                "name": "Identifier",
                                "src": "6362:4:23"
                              }
                            ],
                            "id": 2983,
                            "name": "FunctionCall",
                            "src": "6354:13:23"
                          },
                          {
                            "attributes": {
                              "hexvalue": "31",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 1",
                              "value": "1"
                            },
                            "id": 2984,
                            "name": "Literal",
                            "src": "6377:1:23"
                          }
                        ],
                        "id": 2985,
                        "name": "FunctionCall",
                        "src": "6328:52:23"
                      }
                    ],
                    "id": 2986,
                    "name": "Return",
                    "src": "6321:59:23"
                  }
                ],
                "id": 2987,
                "name": "Block",
                "src": "6311:76:23"
              }
            ],
            "id": 2988,
            "name": "FunctionDefinition",
            "src": "6236:151:23"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getWithdrawAction",
              "scope": 3171,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 3027,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 2989,
                        "name": "ElementaryTypeName",
                        "src": "6420:7:23"
                      }
                    ],
                    "id": 2990,
                    "name": "VariableDeclaration",
                    "src": "6420:20:23"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAmount",
                      "scope": 3027,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 2991,
                        "name": "ElementaryTypeName",
                        "src": "6442:7:23"
                      }
                    ],
                    "id": 2992,
                    "name": "VariableDeclaration",
                    "src": "6442:19:23"
                  }
                ],
                "id": 2993,
                "name": "ParameterList",
                "src": "6419:43:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3027,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct Types.ActionArgs",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "Types.ActionArgs",
                          "referencedDeclaration": 3220,
                          "type": "struct Types.ActionArgs"
                        },
                        "id": 2994,
                        "name": "UserDefinedTypeName",
                        "src": "6510:16:23"
                      }
                    ],
                    "id": 2995,
                    "name": "VariableDeclaration",
                    "src": "6510:23:23"
                  }
                ],
                "id": 2996,
                "name": "ParameterList",
                "src": "6509:25:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 2996
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": true,
                          "lValueRequested": false,
                          "names": [
                            "actionType",
                            "accountId",
                            "amount",
                            "primaryMarketId",
                            "secondaryMarketId",
                            "otherAddress",
                            "otherAccountId",
                            "data"
                          ],
                          "tryCall": false,
                          "type": "struct Types.ActionArgs memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_ActionType_$3183",
                                  "typeString": "enum Types.ActionType"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_struct$_AssetAmount_$3198_memory_ptr",
                                  "typeString": "struct Types.AssetAmount memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "ActionArgs",
                              "referencedDeclaration": 3220,
                              "type": "type(struct Types.ActionArgs storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3226,
                                  "type": "type(library Types)",
                                  "value": "Types"
                                },
                                "id": 2997,
                                "name": "Identifier",
                                "src": "6568:5:23"
                              }
                            ],
                            "id": 2998,
                            "name": "MemberAccess",
                            "src": "6568:16:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "Withdraw",
                              "type": "enum Types.ActionType"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "ActionType",
                                  "referencedDeclaration": 3183,
                                  "type": "type(enum Types.ActionType)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3226,
                                      "type": "type(library Types)",
                                      "value": "Types"
                                    },
                                    "id": 2999,
                                    "name": "Identifier",
                                    "src": "6615:5:23"
                                  }
                                ],
                                "id": 3000,
                                "name": "MemberAccess",
                                "src": "6615:16:23"
                              }
                            ],
                            "id": 3001,
                            "name": "MemberAccess",
                            "src": "6615:25:23"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 3002,
                            "name": "Literal",
                            "src": "6669:1:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": true,
                              "lValueRequested": false,
                              "names": [
                                "sign",
                                "denomination",
                                "ref",
                                "value"
                              ],
                              "tryCall": false,
                              "type": "struct Types.AssetAmount memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_AssetDenomination_$3186",
                                      "typeString": "enum Types.AssetDenomination"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_AssetReference_$3189",
                                      "typeString": "enum Types.AssetReference"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "AssetAmount",
                                  "referencedDeclaration": 3198,
                                  "type": "type(struct Types.AssetAmount storage pointer)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3226,
                                      "type": "type(library Types)",
                                      "value": "Types"
                                    },
                                    "id": 3003,
                                    "name": "Identifier",
                                    "src": "6696:5:23"
                                  }
                                ],
                                "id": 3004,
                                "name": "MemberAccess",
                                "src": "6696:17:23"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 3005,
                                "name": "Literal",
                                "src": "6742:5:23"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "Wei",
                                  "type": "enum Types.AssetDenomination"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "AssetDenomination",
                                      "referencedDeclaration": 3186,
                                      "type": "type(enum Types.AssetDenomination)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3226,
                                          "type": "type(library Types)",
                                          "value": "Types"
                                        },
                                        "id": 3006,
                                        "name": "Identifier",
                                        "src": "6783:5:23"
                                      }
                                    ],
                                    "id": 3007,
                                    "name": "MemberAccess",
                                    "src": "6783:23:23"
                                  }
                                ],
                                "id": 3008,
                                "name": "MemberAccess",
                                "src": "6783:27:23"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "Delta",
                                  "type": "enum Types.AssetReference"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "AssetReference",
                                      "referencedDeclaration": 3189,
                                      "type": "type(enum Types.AssetReference)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3226,
                                          "type": "type(library Types)",
                                          "value": "Types"
                                        },
                                        "id": 3009,
                                        "name": "Identifier",
                                        "src": "6837:5:23"
                                      }
                                    ],
                                    "id": 3010,
                                    "name": "MemberAccess",
                                    "src": "6837:20:23"
                                  }
                                ],
                                "id": 3011,
                                "name": "MemberAccess",
                                "src": "6837:26:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2992,
                                  "type": "uint256",
                                  "value": "tokenAmount"
                                },
                                "id": 3012,
                                "name": "Identifier",
                                "src": "6892:11:23"
                              }
                            ],
                            "id": 3013,
                            "name": "FunctionCall",
                            "src": "6696:226:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3113,
                                  "type": "function (address) view returns (uint256)",
                                  "value": "marketIdFromTokenAddress"
                                },
                                "id": 3014,
                                "name": "Identifier",
                                "src": "6957:24:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 2990,
                                  "type": "address",
                                  "value": "tokenAddress"
                                },
                                "id": 3015,
                                "name": "Identifier",
                                "src": "6982:12:23"
                              }
                            ],
                            "id": 3016,
                            "name": "FunctionCall",
                            "src": "6957:38:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2542,
                              "type": "uint256",
                              "value": "NULL_MARKET_ID"
                            },
                            "id": 3017,
                            "name": "Identifier",
                            "src": "7032:14:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_SoloLiquidityProxy_$3171",
                                      "typeString": "contract SoloLiquidityProxy"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 3018,
                                    "name": "ElementaryTypeName",
                                    "src": "7078:7:23"
                                  }
                                ],
                                "id": 3019,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7078:7:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": -28,
                                  "type": "contract SoloLiquidityProxy",
                                  "value": "this"
                                },
                                "id": 3020,
                                "name": "Identifier",
                                "src": "7086:4:23"
                              }
                            ],
                            "id": 3021,
                            "name": "FunctionCall",
                            "src": "7078:13:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2539,
                              "type": "uint256",
                              "value": "NULL_ACCOUNT_ID"
                            },
                            "id": 3022,
                            "name": "Identifier",
                            "src": "7125:15:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2558,
                              "type": "bytes storage ref",
                              "value": "NULL_DATA"
                            },
                            "id": 3023,
                            "name": "Identifier",
                            "src": "7164:9:23"
                          }
                        ],
                        "id": 3024,
                        "name": "FunctionCall",
                        "src": "6568:620:23"
                      }
                    ],
                    "id": 3025,
                    "name": "Return",
                    "src": "6549:639:23"
                  }
                ],
                "id": 3026,
                "name": "Block",
                "src": "6539:656:23"
              }
            ],
            "id": 3027,
            "name": "FunctionDefinition",
            "src": "6393:802:23"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getDepositAction",
              "scope": 3171,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 3066,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3028,
                        "name": "ElementaryTypeName",
                        "src": "7227:7:23"
                      }
                    ],
                    "id": 3029,
                    "name": "VariableDeclaration",
                    "src": "7227:20:23"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "repaymentAmount",
                      "scope": 3066,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3030,
                        "name": "ElementaryTypeName",
                        "src": "7249:7:23"
                      }
                    ],
                    "id": 3031,
                    "name": "VariableDeclaration",
                    "src": "7249:23:23"
                  }
                ],
                "id": 3032,
                "name": "ParameterList",
                "src": "7226:47:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3066,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct Types.ActionArgs",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "Types.ActionArgs",
                          "referencedDeclaration": 3220,
                          "type": "struct Types.ActionArgs"
                        },
                        "id": 3033,
                        "name": "UserDefinedTypeName",
                        "src": "7321:16:23"
                      }
                    ],
                    "id": 3034,
                    "name": "VariableDeclaration",
                    "src": "7321:23:23"
                  }
                ],
                "id": 3035,
                "name": "ParameterList",
                "src": "7320:25:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3035
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": true,
                          "lValueRequested": false,
                          "names": [
                            "actionType",
                            "accountId",
                            "amount",
                            "primaryMarketId",
                            "secondaryMarketId",
                            "otherAddress",
                            "otherAccountId",
                            "data"
                          ],
                          "tryCall": false,
                          "type": "struct Types.ActionArgs memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_ActionType_$3183",
                                  "typeString": "enum Types.ActionType"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_struct$_AssetAmount_$3198_memory_ptr",
                                  "typeString": "struct Types.AssetAmount memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "ActionArgs",
                              "referencedDeclaration": 3220,
                              "type": "type(struct Types.ActionArgs storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3226,
                                  "type": "type(library Types)",
                                  "value": "Types"
                                },
                                "id": 3036,
                                "name": "Identifier",
                                "src": "7379:5:23"
                              }
                            ],
                            "id": 3037,
                            "name": "MemberAccess",
                            "src": "7379:16:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "Deposit",
                              "type": "enum Types.ActionType"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "ActionType",
                                  "referencedDeclaration": 3183,
                                  "type": "type(enum Types.ActionType)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3226,
                                      "type": "type(library Types)",
                                      "value": "Types"
                                    },
                                    "id": 3038,
                                    "name": "Identifier",
                                    "src": "7426:5:23"
                                  }
                                ],
                                "id": 3039,
                                "name": "MemberAccess",
                                "src": "7426:16:23"
                              }
                            ],
                            "id": 3040,
                            "name": "MemberAccess",
                            "src": "7426:24:23"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 3041,
                            "name": "Literal",
                            "src": "7479:1:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": true,
                              "lValueRequested": false,
                              "names": [
                                "sign",
                                "denomination",
                                "ref",
                                "value"
                              ],
                              "tryCall": false,
                              "type": "struct Types.AssetAmount memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_AssetDenomination_$3186",
                                      "typeString": "enum Types.AssetDenomination"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_AssetReference_$3189",
                                      "typeString": "enum Types.AssetReference"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "AssetAmount",
                                  "referencedDeclaration": 3198,
                                  "type": "type(struct Types.AssetAmount storage pointer)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3226,
                                      "type": "type(library Types)",
                                      "value": "Types"
                                    },
                                    "id": 3042,
                                    "name": "Identifier",
                                    "src": "7506:5:23"
                                  }
                                ],
                                "id": 3043,
                                "name": "MemberAccess",
                                "src": "7506:17:23"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "74727565",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "true"
                                },
                                "id": 3044,
                                "name": "Literal",
                                "src": "7552:4:23"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "Wei",
                                  "type": "enum Types.AssetDenomination"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "AssetDenomination",
                                      "referencedDeclaration": 3186,
                                      "type": "type(enum Types.AssetDenomination)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3226,
                                          "type": "type(library Types)",
                                          "value": "Types"
                                        },
                                        "id": 3045,
                                        "name": "Identifier",
                                        "src": "7592:5:23"
                                      }
                                    ],
                                    "id": 3046,
                                    "name": "MemberAccess",
                                    "src": "7592:23:23"
                                  }
                                ],
                                "id": 3047,
                                "name": "MemberAccess",
                                "src": "7592:27:23"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "Delta",
                                  "type": "enum Types.AssetReference"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "AssetReference",
                                      "referencedDeclaration": 3189,
                                      "type": "type(enum Types.AssetReference)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3226,
                                          "type": "type(library Types)",
                                          "value": "Types"
                                        },
                                        "id": 3048,
                                        "name": "Identifier",
                                        "src": "7646:5:23"
                                      }
                                    ],
                                    "id": 3049,
                                    "name": "MemberAccess",
                                    "src": "7646:20:23"
                                  }
                                ],
                                "id": 3050,
                                "name": "MemberAccess",
                                "src": "7646:26:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3031,
                                  "type": "uint256",
                                  "value": "repaymentAmount"
                                },
                                "id": 3051,
                                "name": "Identifier",
                                "src": "7701:15:23"
                              }
                            ],
                            "id": 3052,
                            "name": "FunctionCall",
                            "src": "7506:229:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3113,
                                  "type": "function (address) view returns (uint256)",
                                  "value": "marketIdFromTokenAddress"
                                },
                                "id": 3053,
                                "name": "Identifier",
                                "src": "7770:24:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3029,
                                  "type": "address",
                                  "value": "tokenAddress"
                                },
                                "id": 3054,
                                "name": "Identifier",
                                "src": "7795:12:23"
                              }
                            ],
                            "id": 3055,
                            "name": "FunctionCall",
                            "src": "7770:38:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2542,
                              "type": "uint256",
                              "value": "NULL_MARKET_ID"
                            },
                            "id": 3056,
                            "name": "Identifier",
                            "src": "7845:14:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_SoloLiquidityProxy_$3171",
                                      "typeString": "contract SoloLiquidityProxy"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 3057,
                                    "name": "ElementaryTypeName",
                                    "src": "7891:7:23"
                                  }
                                ],
                                "id": 3058,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7891:7:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": -28,
                                  "type": "contract SoloLiquidityProxy",
                                  "value": "this"
                                },
                                "id": 3059,
                                "name": "Identifier",
                                "src": "7899:4:23"
                              }
                            ],
                            "id": 3060,
                            "name": "FunctionCall",
                            "src": "7891:13:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2539,
                              "type": "uint256",
                              "value": "NULL_ACCOUNT_ID"
                            },
                            "id": 3061,
                            "name": "Identifier",
                            "src": "7938:15:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2558,
                              "type": "bytes storage ref",
                              "value": "NULL_DATA"
                            },
                            "id": 3062,
                            "name": "Identifier",
                            "src": "7977:9:23"
                          }
                        ],
                        "id": 3063,
                        "name": "FunctionCall",
                        "src": "7379:622:23"
                      }
                    ],
                    "id": 3064,
                    "name": "Return",
                    "src": "7360:641:23"
                  }
                ],
                "id": 3065,
                "name": "Block",
                "src": "7350:658:23"
              }
            ],
            "id": 3066,
            "name": "FunctionDefinition",
            "src": "7201:807:23"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getCallAction",
              "scope": 3171,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3067,
                "name": "ParameterList",
                "src": "8036:2:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3089,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct Types.ActionArgs",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "Types.ActionArgs",
                          "referencedDeclaration": 3220,
                          "type": "struct Types.ActionArgs"
                        },
                        "id": 3068,
                        "name": "UserDefinedTypeName",
                        "src": "8062:16:23"
                      }
                    ],
                    "id": 3069,
                    "name": "VariableDeclaration",
                    "src": "8062:23:23"
                  }
                ],
                "id": 3070,
                "name": "ParameterList",
                "src": "8061:25:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3070
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": true,
                          "lValueRequested": false,
                          "names": [
                            "actionType",
                            "accountId",
                            "amount",
                            "primaryMarketId",
                            "secondaryMarketId",
                            "otherAddress",
                            "otherAccountId",
                            "data"
                          ],
                          "tryCall": false,
                          "type": "struct Types.ActionArgs memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_ActionType_$3183",
                                  "typeString": "enum Types.ActionType"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_struct$_AssetAmount_$3198_storage",
                                  "typeString": "struct Types.AssetAmount storage ref"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_storage",
                                  "typeString": "bytes storage ref"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "ActionArgs",
                              "referencedDeclaration": 3220,
                              "type": "type(struct Types.ActionArgs storage pointer)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3226,
                                  "type": "type(library Types)",
                                  "value": "Types"
                                },
                                "id": 3071,
                                "name": "Identifier",
                                "src": "8116:5:23"
                              }
                            ],
                            "id": 3072,
                            "name": "MemberAccess",
                            "src": "8116:16:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "Call",
                              "type": "enum Types.ActionType"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "ActionType",
                                  "referencedDeclaration": 3183,
                                  "type": "type(enum Types.ActionType)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3226,
                                      "type": "type(library Types)",
                                      "value": "Types"
                                    },
                                    "id": 3073,
                                    "name": "Identifier",
                                    "src": "8163:5:23"
                                  }
                                ],
                                "id": 3074,
                                "name": "MemberAccess",
                                "src": "8163:16:23"
                              }
                            ],
                            "id": 3075,
                            "name": "MemberAccess",
                            "src": "8163:21:23"
                          },
                          {
                            "attributes": {
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 3076,
                            "name": "Literal",
                            "src": "8213:1:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2555,
                              "type": "struct Types.AssetAmount storage ref",
                              "value": "NULL_AMOUNT"
                            },
                            "id": 3077,
                            "name": "Identifier",
                            "src": "8240:11:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2542,
                              "type": "uint256",
                              "value": "NULL_MARKET_ID"
                            },
                            "id": 3078,
                            "name": "Identifier",
                            "src": "8286:14:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2542,
                              "type": "uint256",
                              "value": "NULL_MARKET_ID"
                            },
                            "id": 3079,
                            "name": "Identifier",
                            "src": "8337:14:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_SoloLiquidityProxy_$3171",
                                      "typeString": "contract SoloLiquidityProxy"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 3080,
                                    "name": "ElementaryTypeName",
                                    "src": "8383:7:23"
                                  }
                                ],
                                "id": 3081,
                                "name": "ElementaryTypeNameExpression",
                                "src": "8383:7:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": -28,
                                  "type": "contract SoloLiquidityProxy",
                                  "value": "this"
                                },
                                "id": 3082,
                                "name": "Identifier",
                                "src": "8391:4:23"
                              }
                            ],
                            "id": 3083,
                            "name": "FunctionCall",
                            "src": "8383:13:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2539,
                              "type": "uint256",
                              "value": "NULL_ACCOUNT_ID"
                            },
                            "id": 3084,
                            "name": "Identifier",
                            "src": "8430:15:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2558,
                              "type": "bytes storage ref",
                              "value": "NULL_DATA"
                            },
                            "id": 3085,
                            "name": "Identifier",
                            "src": "8469:9:23"
                          }
                        ],
                        "id": 3086,
                        "name": "FunctionCall",
                        "src": "8116:377:23"
                      }
                    ],
                    "id": 3087,
                    "name": "Return",
                    "src": "8097:396:23"
                  }
                ],
                "id": 3088,
                "name": "Block",
                "src": "8087:413:23"
              }
            ],
            "id": 3089,
            "name": "FunctionDefinition",
            "src": "8014:486:23"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "isRegistered",
              "scope": 3171,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 3101,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3090,
                        "name": "ElementaryTypeName",
                        "src": "8528:7:23"
                      }
                    ],
                    "id": 3091,
                    "name": "VariableDeclaration",
                    "src": "8528:20:23"
                  }
                ],
                "id": 3092,
                "name": "ParameterList",
                "src": "8527:22:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3101,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3093,
                        "name": "ElementaryTypeName",
                        "src": "8573:4:23"
                      }
                    ],
                    "id": 3094,
                    "name": "VariableDeclaration",
                    "src": "8573:4:23"
                  }
                ],
                "id": 3095,
                "name": "ParameterList",
                "src": "8572:6:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3095
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2572,
                              "type": "mapping(address => bool)",
                              "value": "_tokenAddressRegistered"
                            },
                            "id": 3096,
                            "name": "Identifier",
                            "src": "8596:23:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3091,
                              "type": "address",
                              "value": "tokenAddress"
                            },
                            "id": 3097,
                            "name": "Identifier",
                            "src": "8620:12:23"
                          }
                        ],
                        "id": 3098,
                        "name": "IndexAccess",
                        "src": "8596:37:23"
                      }
                    ],
                    "id": 3099,
                    "name": "Return",
                    "src": "8589:44:23"
                  }
                ],
                "id": 3100,
                "name": "Block",
                "src": "8579:61:23"
              }
            ],
            "id": 3101,
            "name": "FunctionDefinition",
            "src": "8506:134:23"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "marketIdFromTokenAddress",
              "scope": 3171,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 3113,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3102,
                        "name": "ElementaryTypeName",
                        "src": "8680:7:23"
                      }
                    ],
                    "id": 3103,
                    "name": "VariableDeclaration",
                    "src": "8680:20:23"
                  }
                ],
                "id": 3104,
                "name": "ParameterList",
                "src": "8679:22:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3113,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 3105,
                        "name": "ElementaryTypeName",
                        "src": "8749:7:23"
                      }
                    ],
                    "id": 3106,
                    "name": "VariableDeclaration",
                    "src": "8749:7:23"
                  }
                ],
                "id": 3107,
                "name": "ParameterList",
                "src": "8748:9:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3107
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2564,
                              "type": "mapping(address => uint256)",
                              "value": "_tokenAddressToMarketId"
                            },
                            "id": 3108,
                            "name": "Identifier",
                            "src": "8779:23:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3103,
                              "type": "address",
                              "value": "tokenAddress"
                            },
                            "id": 3109,
                            "name": "Identifier",
                            "src": "8803:12:23"
                          }
                        ],
                        "id": 3110,
                        "name": "IndexAccess",
                        "src": "8779:37:23"
                      }
                    ],
                    "id": 3111,
                    "name": "Return",
                    "src": "8772:44:23"
                  }
                ],
                "id": 3112,
                "name": "Block",
                "src": "8762:61:23"
              }
            ],
            "id": 3113,
            "name": "FunctionDefinition",
            "src": "8646:177:23"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "remapTokenAddress",
              "scope": 3171,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 3131,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3114,
                        "name": "ElementaryTypeName",
                        "src": "8856:7:23"
                      }
                    ],
                    "id": 3115,
                    "name": "VariableDeclaration",
                    "src": "8856:20:23"
                  }
                ],
                "id": 3116,
                "name": "ParameterList",
                "src": "8855:22:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3131,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3117,
                        "name": "ElementaryTypeName",
                        "src": "8925:7:23"
                      }
                    ],
                    "id": 3118,
                    "name": "VariableDeclaration",
                    "src": "8925:7:23"
                  }
                ],
                "id": 3119,
                "name": "ParameterList",
                "src": "8924:9:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3119
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3115,
                                  "type": "address",
                                  "value": "tokenAddress"
                                },
                                "id": 3120,
                                "name": "Identifier",
                                "src": "8955:12:23"
                              },
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address"
                                        },
                                        "id": 3121,
                                        "name": "ElementaryTypeName",
                                        "src": "8971:7:23"
                                      }
                                    ],
                                    "id": 3122,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "8971:7:23"
                                  },
                                  {
                                    "attributes": {
                                      "hexvalue": "31",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "token": "number",
                                      "type": "int_const 1",
                                      "value": "1"
                                    },
                                    "id": 3123,
                                    "name": "Literal",
                                    "src": "8979:1:23"
                                  }
                                ],
                                "id": 3124,
                                "name": "FunctionCall",
                                "src": "8971:10:23"
                              }
                            ],
                            "id": 3125,
                            "name": "BinaryOperation",
                            "src": "8955:26:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1583,
                              "type": "address payable",
                              "value": "_wethAddress"
                            },
                            "id": 3126,
                            "name": "Identifier",
                            "src": "8984:12:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3115,
                              "type": "address",
                              "value": "tokenAddress"
                            },
                            "id": 3127,
                            "name": "Identifier",
                            "src": "8999:12:23"
                          }
                        ],
                        "id": 3128,
                        "name": "Conditional",
                        "src": "8955:56:23"
                      }
                    ],
                    "id": 3129,
                    "name": "Return",
                    "src": "8948:63:23"
                  }
                ],
                "id": 3130,
                "name": "Block",
                "src": "8938:80:23"
              }
            ],
            "id": 3131,
            "name": "FunctionDefinition",
            "src": "8829:189:23"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "unmapTokenAddress",
              "scope": 3171,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 3149,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3132,
                        "name": "ElementaryTypeName",
                        "src": "9051:7:23"
                      }
                    ],
                    "id": 3133,
                    "name": "VariableDeclaration",
                    "src": "9051:20:23"
                  }
                ],
                "id": 3134,
                "name": "ParameterList",
                "src": "9050:22:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3149,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3135,
                        "name": "ElementaryTypeName",
                        "src": "9120:7:23"
                      }
                    ],
                    "id": 3136,
                    "name": "VariableDeclaration",
                    "src": "9120:7:23"
                  }
                ],
                "id": 3137,
                "name": "ParameterList",
                "src": "9119:9:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3137
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3133,
                                  "type": "address",
                                  "value": "tokenAddress"
                                },
                                "id": 3138,
                                "name": "Identifier",
                                "src": "9150:12:23"
                              },
                              {
                                "attributes": {
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1583,
                                  "type": "address payable",
                                  "value": "_wethAddress"
                                },
                                "id": 3139,
                                "name": "Identifier",
                                "src": "9166:12:23"
                              }
                            ],
                            "id": 3140,
                            "name": "BinaryOperation",
                            "src": "9150:28:23"
                          },
                          {
                            "attributes": {
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "address payable",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address"
                                    },
                                    "id": 3141,
                                    "name": "ElementaryTypeName",
                                    "src": "9181:7:23"
                                  }
                                ],
                                "id": 3142,
                                "name": "ElementaryTypeNameExpression",
                                "src": "9181:7:23"
                              },
                              {
                                "attributes": {
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 3143,
                                "name": "Literal",
                                "src": "9189:1:23"
                              }
                            ],
                            "id": 3144,
                            "name": "FunctionCall",
                            "src": "9181:10:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3133,
                              "type": "address",
                              "value": "tokenAddress"
                            },
                            "id": 3145,
                            "name": "Identifier",
                            "src": "9194:12:23"
                          }
                        ],
                        "id": 3146,
                        "name": "Conditional",
                        "src": "9150:56:23"
                      }
                    ],
                    "id": 3147,
                    "name": "Return",
                    "src": "9143:63:23"
                  }
                ],
                "id": 3148,
                "name": "Block",
                "src": "9133:80:23"
              }
            ],
            "id": 3149,
            "name": "FunctionDefinition",
            "src": "9024:189:23"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "isClosing",
              "scope": 3171,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "scope": 3170,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 3150,
                        "name": "ElementaryTypeName",
                        "src": "9238:7:23"
                      }
                    ],
                    "id": 3151,
                    "name": "VariableDeclaration",
                    "src": "9238:20:23"
                  }
                ],
                "id": 3152,
                "name": "ParameterList",
                "src": "9237:22:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "scope": 3170,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3153,
                        "name": "ElementaryTypeName",
                        "src": "9283:4:23"
                      }
                    ],
                    "id": 3154,
                    "name": "VariableDeclaration",
                    "src": "9283:4:23"
                  }
                ],
                "id": 3155,
                "name": "ParameterList",
                "src": "9282:6:23"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        3157
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "marketId",
                          "scope": 3169,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint256",
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint256",
                              "type": "uint256"
                            },
                            "id": 3156,
                            "name": "ElementaryTypeName",
                            "src": "9299:7:23"
                          }
                        ],
                        "id": 3157,
                        "name": "VariableDeclaration",
                        "src": "9299:16:23"
                      },
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 2564,
                              "type": "mapping(address => uint256)",
                              "value": "_tokenAddressToMarketId"
                            },
                            "id": 3158,
                            "name": "Identifier",
                            "src": "9318:23:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3151,
                              "type": "address",
                              "value": "tokenAddress"
                            },
                            "id": 3159,
                            "name": "Identifier",
                            "src": "9342:12:23"
                          }
                        ],
                        "id": 3160,
                        "name": "IndexAccess",
                        "src": "9318:37:23"
                      }
                    ],
                    "id": 3161,
                    "name": "VariableDeclarationStatement",
                    "src": "9299:56:23"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 3155
                    },
                    "children": [
                      {
                        "attributes": {
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "getMarketIsClosing",
                              "referencedDeclaration": 2502,
                              "type": "function (uint256) view external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "contract ISoloMargin",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2510,
                                      "type": "type(contract ISoloMargin)",
                                      "value": "ISoloMargin"
                                    },
                                    "id": 3162,
                                    "name": "Identifier",
                                    "src": "9372:11:23"
                                  },
                                  {
                                    "attributes": {
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 2560,
                                      "type": "address",
                                      "value": "_soloMarginAddress"
                                    },
                                    "id": 3163,
                                    "name": "Identifier",
                                    "src": "9384:18:23"
                                  }
                                ],
                                "id": 3164,
                                "name": "FunctionCall",
                                "src": "9372:31:23"
                              }
                            ],
                            "id": 3165,
                            "name": "MemberAccess",
                            "src": "9372:50:23"
                          },
                          {
                            "attributes": {
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3157,
                              "type": "uint256",
                              "value": "marketId"
                            },
                            "id": 3166,
                            "name": "Identifier",
                            "src": "9423:8:23"
                          }
                        ],
                        "id": 3167,
                        "name": "FunctionCall",
                        "src": "9372:60:23"
                      }
                    ],
                    "id": 3168,
                    "name": "Return",
                    "src": "9365:67:23"
                  }
                ],
                "id": 3169,
                "name": "Block",
                "src": "9289:150:23"
              }
            ],
            "id": 3170,
            "name": "FunctionDefinition",
            "src": "9219:220:23"
          }
        ],
        "id": 3171,
        "name": "ContractDefinition",
        "src": "1105:8336:23"
      }
    ],
    "id": 3172,
    "name": "SourceUnit",
    "src": "640:8802:23"
  },
  "compiler": {
    "name": "solc",
    "version": "0.7.3+commit.9bfce1f6.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.3",
  "updatedAt": "2021-02-01T23:13:33.222Z",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "callFunction(address,(address,uint256),bytes)": {
        "params": {
          "accountInfo": "The account from which the data is being sent",
          "data": "Arbitrary data given by the sender",
          "sender": "The msg.sender to Solo"
        }
      },
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "callFunction(address,(address,uint256),bytes)": {
        "notice": "Allows users to send this contract arbitrary data."
      }
    },
    "version": 1
  }
}