{
    "contractName": "KollateralLiquidityProxy",
    "abi": [
        {
            "inputs": [],
            "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": "address",
                    "name": "tokenAddress",
                    "type": "address"
                },
                {
                    "internalType": "address",
                    "name": "kTokenAddress",
                    "type": "address"
                }
            ],
            "name": "registerPool",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "tokenAddress",
                    "type": "address"
                }
            ],
            "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": "bytes",
                    "name": "data",
                    "type": "bytes"
                }
            ],
            "name": "execute",
            "outputs": [],
            "stateMutability": "payable",
            "type": "function"
        }
    ],
    "metadata": "{\"compiler\":{\"version\":\"0.7.3+commit.9bfce1f6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"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\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"deregisterPool\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[],\"stateMutability\":\"payable\",\"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\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"kTokenAddress\",\"type\":\"address\"}],\"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\":{\"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\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/kollateral/KollateralLiquidityProxy.sol\":\"KollateralLiquidityProxy\"},\"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/IInvokable.sol\":{\"keccak256\":\"0x372bca80a3e9d20439e9bf88cc026d6d1ec01556463e902511c67b6fc92e12d5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://a5e6b5ef4246d03871bbd44b34e1212a9567d963f1b1e8e58e6273709442d4fb\",\"dweb:/ipfs/Qmb5Es45FLS4hhNGb9md3KU7L7hyMW7HHzumrVfsZZgxgC\"]},\"/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/ExtendedMath.sol\":{\"keccak256\":\"0x5ced249631b5dfe431f449d725d9f318b01ab0785306ca5e73cdf43760ab271a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3f3aef65abfcc02e451ad27a849caba0e6375abb26e28e7605928d19d561c3dd\",\"dweb:/ipfs/QmY5zMeH5x3QMS5xkxkY3DH4SDPWLGJyfPk1R8wPJXH9vr\"]},\"/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/ktoken/KToken.sol\":{\"keccak256\":\"0xc8c0d9869f316491406bc2d135d00682926f2a4b62fe1e3a6daf5b37515bbe8b\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://856af08828c3a5516a4018bdd2ed93eea5c02e60305bbc7e31fd8bd46446a97b\",\"dweb:/ipfs/QmVFroDk751zBN2fM6TiwCyhUinzGt2sRPwT3DUhnVgczU\"]},\"/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/kollateral/KollateralLiquidityProxy.sol\":{\"keccak256\":\"0x0cd14cde36fad2c1329df2fde762270252f486054b9363969211ffcd3a4a5cc2\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://02b82f6325ce1fc24bf46fddfe27292455c6f2dcbb566b02497dcb224dccd5fc\",\"dweb:/ipfs/QmZA9QoJGdqKTa6kc7nEArRhdhQNTYL7Hd2dfXhV1SSKhR\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/token/CollateralizedToken.sol\":{\"keccak256\":\"0xfaaaa4324c6cc78d9d1268426eb04fe41d8584ade05bbf22eac4875ecdf174d7\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1e4149a0ecd14003c261b2243adfc19d7a009c83c32341ebdd6a8929c0bdd14d\",\"dweb:/ipfs/QmQbySda22WBU4oycYfrTye1RsJuz1Ub74ksoST7PeegHW\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/token/UnlimitedApprovalErc20.sol\":{\"keccak256\":\"0x407178fcd78f0a19d705e64aaaa26ae997d228f077f3cf6833f9f3eb31c72308\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://097906cbe6f8f35ba1763bd122d551ec302f45cf677021bbcdb8a55c706940d9\",\"dweb:/ipfs/QmVh7kcUWsXt3QApppB1njhGHfzdP813KSTUF6bh3VCmMM\"]},\"@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/ERC20.sol\":{\"keccak256\":\"0x482b6d82ba1c9c73758ae15068a438361d4187b7a4e342db17ef0f828cb5e21a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://89725e56bc9c6cfb69521ceaa4a489561b928e930b71e30db85b24024c1c2c03\",\"dweb:/ipfs/QmNvpotZA1Fe48msV6TShSTVxeQ2dkaDS9MTKP4bNxyUG3\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]},\"@openzeppelin/contracts/utils/Pausable.sol\":{\"keccak256\":\"0x2a245b797741f05f91212b1c2155a1b99a8884e6fd4c27953c4d3073732737f8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://76325ec3159cd859da98cab114513ec81095fa38e1412ffffb9b789bf14d6b38\",\"dweb:/ipfs/QmNdE2779u3DdRczjpx6RoevVa9kVJsCyEfnXWjkUw79jo\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x1153f6dd334c01566417b8c551122450542a2b75a2bbb379d59a8c320ed6da28\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://002b4e5c26a2a069ba42486b83bf9c4b5461f3d5def32f9ef52b0aef8905d6d2\",\"dweb:/ipfs/QmPG44XDF4npiqRzzGvqJroDtUKfcR78wcreQ9bXa6guW6\"]}},\"version\":1}",
    "bytecode": "0x608060405234801561001057600080fd5b506001600061002361010860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610110565b600033905090565b6114b88061011f6000396000f3fe6080604052600436106100955760003560e01c80637e72c7d7116100595780637e72c7d7146102755780638da5cb5b146102c6578063aa81905714610307578063c32dc3b614610376578063f2fde38b146103db5761009c565b806309c5eabe1461009e5780634b8a352914610117578063680c7b9414610172578063715018a6146101ed5780637286e5e5146102045761009c565b3661009c57005b005b610115600480360360208110156100b457600080fd5b81019080803590602001906401000000008111156100d157600080fd5b8201836020820111156100e357600080fd5b8035906020019184600183028401116401000000008311171561010557600080fd5b909192939192939050505061042c565b005b34801561012357600080fd5b506101706004803603604081101561013a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610606565b005b34801561017e57600080fd5b506101c16004803603602081101561019557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107ca565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f957600080fd5b506102026107dc565b005b34801561021057600080fd5b506102736004803603604081101561022757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610962565b005b34801561028157600080fd5b506102c46004803603602081101561029857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aac565b005b3480156102d257600080fd5b506102db610bf6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561031357600080fd5b506103606004803603604081101561032a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c1f565b6040518082815260200191505060405180910390f35b34801561038257600080fd5b506103c56004803603602081101561039957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cc2565b6040518082815260200191505060405180910390f35b3480156103e757600080fd5b5061042a600480360360208110156103fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d84565b005b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156104d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061145c6027913960400191505060405180910390fd5b610525600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600554610f8f565b61057a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806114286034913960400191505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16630a5ca4e86040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105e957600080fd5b505af11580156105fd573d6000803e3d6000fd5b50505050505050565b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581905550600061069a836110b0565b90508073ffffffffffffffffffffffffffffffffffffffff16639e976db130846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff168152602001806020018381526020018281038252600081526020016020019350505050600060405180830381600087803b15801561072157600080fd5b505af1158015610735573d6000803e3d6000fd5b505050506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600581905550505050565b60006107d5826110b0565b9050919050565b6107e4611119565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61096a611119565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610ab4611119565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080610c2b846110b0565b90508073ffffffffffffffffffffffffffffffffffffffff1663b1197239846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610c7e57600080fd5b505afa158015610c92573d6000803e3d6000fd5b505050506040513d6020811015610ca857600080fd5b810190808051906020019092919050505091505092915050565b6000610ccd82611121565b8015610cdf5750610cdd82611162565b155b15610d7a576000610cef836110b0565b90508073ffffffffffffffffffffffffffffffffffffffff16634c68df676040518163ffffffff1660e01b815260040160206040518083038186803b158015610d3757600080fd5b505afa158015610d4b573d6000803e3d6000fd5b505050506040513d6020811015610d6157600080fd5b8101908080519060200190929190505050915050610d7f565b600090505b919050565b610d8c611119565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ed2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806113d86026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ffa57610ff183836111f4565b600190506110a9565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561106b57600080fd5b505af115801561107f573d6000803e3d6000fd5b505050506040513d602081101561109557600080fd5b810190808051906020019092919050505090505b9392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff16611143836110b0565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600061116d826110b0565b73ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111b257600080fd5b505afa1580156111c6573d6000803e3d6000fd5b505050506040513d60208110156111dc57600080fd5b81019080805190602001909291905050509050919050565b8047101561124d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806113fe602a913960400191505060405180910390fd5b61126782826040518060200160405280600081525061126b565b5050565b600060608473ffffffffffffffffffffffffffffffffffffffff1684846040518082805190602001908083835b602083106112bb5780518252602082019150602081019050602083039250611298565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461131d576040519150601f19603f3d011682016040523d82523d6000602084013e611322565b606091505b50915091508181906113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611394578082015181840152602081019050611379565b50505050905090810190601f1680156113c15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345787465726e616c43616c6c65723a20696e73756666696369656e742065746865722062616c616e63654b6f6c6c61746572616c4c697175696469747950726f78793a207472616e7366657220746f20696e766f6b6572206661696c65644b6f6c6c61746572616c4c697175696469747950726f78793a206e6f74207363686564756c6564a2646970667358221220cfdb2d6f5f3abc44fee9c48729e145d21c967d8aed4c62032fce185aa409b98164736f6c63430007030033",
    "deployedBytecode": "0x6080604052600436106100955760003560e01c80637e72c7d7116100595780637e72c7d7146102755780638da5cb5b146102c6578063aa81905714610307578063c32dc3b614610376578063f2fde38b146103db5761009c565b806309c5eabe1461009e5780634b8a352914610117578063680c7b9414610172578063715018a6146101ed5780637286e5e5146102045761009c565b3661009c57005b005b610115600480360360208110156100b457600080fd5b81019080803590602001906401000000008111156100d157600080fd5b8201836020820111156100e357600080fd5b8035906020019184600183028401116401000000008311171561010557600080fd5b909192939192939050505061042c565b005b34801561012357600080fd5b506101706004803603604081101561013a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610606565b005b34801561017e57600080fd5b506101c16004803603602081101561019557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107ca565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f957600080fd5b506102026107dc565b005b34801561021057600080fd5b506102736004803603604081101561022757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610962565b005b34801561028157600080fd5b506102c46004803603602081101561029857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aac565b005b3480156102d257600080fd5b506102db610bf6565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561031357600080fd5b506103606004803603604081101561032a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c1f565b6040518082815260200191505060405180910390f35b34801561038257600080fd5b506103c56004803603602081101561039957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cc2565b6040518082815260200191505060405180910390f35b3480156103e757600080fd5b5061042a600480360360208110156103fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d84565b005b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156104d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602781526020018061145c6027913960400191505060405180910390fd5b610525600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600554610f8f565b61057a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260348152602001806114286034913960400191505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16630a5ca4e86040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156105e957600080fd5b505af11580156105fd573d6000803e3d6000fd5b50505050505050565b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600581905550600061069a836110b0565b90508073ffffffffffffffffffffffffffffffffffffffff16639e976db130846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff168152602001806020018381526020018281038252600081526020016020019350505050600060405180830381600087803b15801561072157600080fd5b505af1158015610735573d6000803e3d6000fd5b505050506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600581905550505050565b60006107d5826110b0565b9050919050565b6107e4611119565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61096a611119565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b610ab4611119565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600080610c2b846110b0565b90508073ffffffffffffffffffffffffffffffffffffffff1663b1197239846040518263ffffffff1660e01b81526004018082815260200191505060206040518083038186803b158015610c7e57600080fd5b505afa158015610c92573d6000803e3d6000fd5b505050506040513d6020811015610ca857600080fd5b810190808051906020019092919050505091505092915050565b6000610ccd82611121565b8015610cdf5750610cdd82611162565b155b15610d7a576000610cef836110b0565b90508073ffffffffffffffffffffffffffffffffffffffff16634c68df676040518163ffffffff1660e01b815260040160206040518083038186803b158015610d3757600080fd5b505afa158015610d4b573d6000803e3d6000fd5b505050506040513d6020811015610d6157600080fd5b8101908080519060200190929190505050915050610d7f565b600090505b919050565b610d8c611119565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ed2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806113d86026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610ffa57610ff183836111f4565b600190506110a9565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561106b57600080fd5b505af115801561107f573d6000803e3d6000fd5b505050506040513d602081101561109557600080fd5b810190808051906020019092919050505090505b9392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b60008073ffffffffffffffffffffffffffffffffffffffff16611143836110b0565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600061116d826110b0565b73ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111b257600080fd5b505afa1580156111c6573d6000803e3d6000fd5b505050506040513d60208110156111dc57600080fd5b81019080805190602001909291905050509050919050565b8047101561124d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806113fe602a913960400191505060405180910390fd5b61126782826040518060200160405280600081525061126b565b5050565b600060608473ffffffffffffffffffffffffffffffffffffffff1684846040518082805190602001908083835b602083106112bb5780518252602082019150602081019050602083039250611298565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461131d576040519150601f19603f3d011682016040523d82523d6000602084013e611322565b606091505b50915091508181906113cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611394578082015181840152602081019050611379565b50505050905090810190601f1680156113c15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345787465726e616c43616c6c65723a20696e73756666696369656e742065746865722062616c616e63654b6f6c6c61746572616c4c697175696469747950726f78793a207472616e7366657220746f20696e766f6b6572206661696c65644b6f6c6c61746572616c4c697175696469747950726f78793a206e6f74207363686564756c6564a2646970667358221220cfdb2d6f5f3abc44fee9c48729e145d21c967d8aed4c62032fce185aa409b98164736f6c63430007030033",
    "immutableReferences": {},
    "generatedSources": [],
    "deployedGeneratedSources": [],
    "sourceMap": "976:3085:25:-:0;;;1293:43;;;;;;;;;;1330: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;976:3085:25;;590:104:38;643:15;677:10;670:17;;590:104;:::o;976:3085:25:-;;;;;;;",
    "deployedSourceMap": "976:3085:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3076:551;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2594:476;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1743:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1689:145:39;;;;;;;;;;;;;:::i;:::-;;1413:181:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1600:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1066:77:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2317:271:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1926:385;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1983:240:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3076:551:25;3206:1;3171:37;;:23;;;;;;;;;;;:37;;;;3150:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3305:140;3331:21;;;;;;;;;;;3370:23;;;;;;;;;;;3411:20;;3305:8;:140::i;:::-;3284:239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3534:16;3562:23;;;;;;;;;;;3534:52;;3596:7;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3076:551;;;:::o;2594:476::-;2727:10;2701:23;;:36;;;;;;;;;;;;;;;;;;2771:12;2747:21;;:36;;;;;;;;;;;;;;;;;;2816:11;2793:20;:34;;;;2838:11;2859:25;2871:12;2859:11;:25::i;:::-;2838:47;;2895:4;:11;;;2915:4;2926:11;2895:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2983:1;2949:23;;:36;;;;;;;;;;;;;;;;;;3027:1;2995:21;;:34;;;;;;;;;;;;;;;;;;3062:1;3039:20;:24;;;;2594:476;;;:::o;1743:177::-;1858:7;1888:25;1900:12;1888:11;:25::i;:::-;1881:32;;1743:177;;;:::o;1689:145:39:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1795:1:::1;1758:40;;1779:6;::::0;::::1;;;;;;;;1758:40;;;;;;;;;;;;1825:1;1808:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1689:145::o:0;1413:181:25:-;1280:12:39;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1574:13:25::1;1529:28;:42;1558:12;1529:42;;;;;;;;;;;;;;;;:58;;;;;;;;;;;;;;;;;;1413:181:::0;;:::o;1600:137::-;1280:12:39;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1728:1:25::1;1675:28;:42;1704:12;1675:42;;;;;;;;;;;;;;;;:55;;;;;;;;;;;;;;;;;;1600:137:::0;:::o;1066:77:39:-;1104:7;1130:6;;;;;;;;;;;1123:13;;1066:77;:::o;2317:271:25:-;2452:7;2475:11;2496:25;2508:12;2496:11;:25::i;:::-;2475:47;;2539:4;:29;;;2569:11;2539:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2532:49;;;2317:271;;;;:::o;1926:385::-;2037:7;2064:26;2077:12;2064;:26::i;:::-;:53;;;;;2095:22;2104:12;2095:8;:22::i;:::-;2094:23;2064:53;2060:227;;;2133:24;2197:25;2209:12;2197:11;:25::i;:::-;2133:103;;2257:4;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2250:26;;;;;2060:227;2303:1;2296:8;;1926:385;;;;:::o;1983:240:39:-;1280:12;:10;:12::i;:::-;1270:22;;:6;;;;;;;;;;:22;;;1262:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2091:1:::1;2071:22;;:8;:22;;;;2063:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2180:8;2151:38;;2172:6;::::0;::::1;;;;;;;;2151:38;;;;;;;;;;;;2208:8;2199:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1983:240:::0;:::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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1212:48;;944:333;;;;;;:::o;3633:141:25:-;3699:7;3725:28;:42;3754:12;3725:42;;;;;;;;;;;;;;;;;;;;;;;;;3718:49;;3633:141;;;:::o;590:104:38:-;643:15;677:10;670:17;;590:104;:::o;3780:136:25:-;3847:4;3907:1;3870:39;;:25;3882:12;3870:11;:25::i;:::-;:39;;;;3863:46;;3780:136;;;:::o;3922:137::-;3985:4;4017:25;4029:12;4017:11;:25::i;:::-;4008:42;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4001:51;;3922:137;;;:::o;695:240:9:-;815:6;790:21;:31;;769:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1061:94;;;;1173:7;1189:10;1165:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;941:267;;;;;:::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;\n\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\nimport \"@openzeppelin/contracts/utils/Pausable.sol\";\nimport \"../ILiquidityProxy.sol\";\nimport \"../../token/CollateralizedToken.sol\";\nimport \"../../ktoken/KToken.sol\";\nimport \"../../common/invoke/IInvoker.sol\";\nimport \"../../common/utils/BalanceCarrier.sol\";\n\ncontract KollateralLiquidityProxy is\n    Ownable,\n    BalanceCarrier,\n    ILiquidityProxy,\n    IInvokable\n{\n    mapping(address => address) _tokenAddressToKTokenAddress;\n\n    address payable internal _scheduleInvokerAddress;\n    address internal _scheduleTokenAddress;\n    uint256 internal _scheduleTokenAmount;\n\n    constructor() BalanceCarrier(address(1)) {}\n\n    receive() external payable {}\n\n    fallback() external payable {}\n\n    function registerPool(address tokenAddress, address kTokenAddress)\n        external\n        onlyOwner\n    {\n        _tokenAddressToKTokenAddress[tokenAddress] = kTokenAddress;\n    }\n\n    function deregisterPool(address tokenAddress) external onlyOwner {\n        _tokenAddressToKTokenAddress[tokenAddress] = address(0);\n    }\n\n    function getRepaymentAddress(address tokenAddress)\n        external\n        view\n        override\n        returns (address)\n    {\n        return poolAddress(tokenAddress);\n    }\n\n    function getTotalReserve(address tokenAddress)\n        external\n        view\n        override\n        returns (uint256)\n    {\n        if (isRegistered(tokenAddress) && !isPaused(tokenAddress)) {\n            CollateralizedToken pool = CollateralizedToken(\n                poolAddress(tokenAddress)\n            );\n            return pool.totalReserve();\n        }\n        return 0;\n    }\n\n    function getRepaymentAmount(address tokenAddress, uint256 tokenAmount)\n        external\n        view\n        override\n        returns (uint256)\n    {\n        KToken pool = KToken(poolAddress(tokenAddress));\n        return pool.calculateRepaymentAmount(tokenAmount);\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        KToken pool = KToken(poolAddress(tokenAddress));\n        pool.invoke(address(this), \"\", tokenAmount);\n\n        _scheduleInvokerAddress = address(0);\n        _scheduleTokenAddress = address(0);\n        _scheduleTokenAmount = 0;\n    }\n\n    function execute(bytes calldata data) external payable override {\n        require(\n            _scheduleInvokerAddress != address(0),\n            \"KollateralLiquidityProxy: not scheduled\"\n        );\n\n        require(\n            transfer(\n                _scheduleTokenAddress,\n                _scheduleInvokerAddress,\n                _scheduleTokenAmount\n            ),\n            \"KollateralLiquidityProxy: transfer to invoker failed\"\n        );\n\n        IInvoker invoker = IInvoker(_scheduleInvokerAddress);\n        invoker.invokeCallback();\n    }\n\n    function poolAddress(address tokenAddress) internal view returns (address) {\n        return _tokenAddressToKTokenAddress[tokenAddress];\n    }\n\n    function isRegistered(address tokenAddress) internal view returns (bool) {\n        return poolAddress(tokenAddress) != address(0);\n    }\n\n    function isPaused(address tokenAddress) internal view returns (bool) {\n        return Pausable(poolAddress(tokenAddress)).paused();\n    }\n}\n",
    "sourcePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/kollateral/KollateralLiquidityProxy.sol",
    "ast": {
        "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/kollateral/KollateralLiquidityProxy.sol",
        "exportedSymbols": {
            "BalanceCarrier": [
                1464
            ],
            "CollateralizedToken": [
                5197
            ],
            "Context": [
                5279
            ],
            "ERC20": [
                6087
            ],
            "ExtendedMath": [
                1506
            ],
            "ExternalCaller": [
                1563
            ],
            "IERC20": [
                6165
            ],
            "IInvocationHook": [
                1170
            ],
            "IInvokable": [
                1178
            ],
            "IInvoker": [
                1234
            ],
            "ILiquidityProxy": [
                2148
            ],
            "KToken": [
                2115
            ],
            "KollateralLiquidityProxy": [
                3516
            ],
            "Ownable": [
                5388
            ],
            "Pausable": [
                6255
            ],
            "ReentrancyGuard": [
                6295
            ],
            "SafeMath": [
                5584
            ],
            "UnlimitedApprovalErc20": [
                5256
            ]
        },
        "id": 3517,
        "license": "Apache-2.0",
        "nodeType": "SourceUnit",
        "nodes": [
            {
                "id": 3228,
                "literals": [
                    "solidity",
                    "^",
                    "0.7",
                    ".0"
                ],
                "nodeType": "PragmaDirective",
                "src": "640:23:25"
            },
            {
                "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
                "file": "@openzeppelin/contracts/access/Ownable.sol",
                "id": 3229,
                "nodeType": "ImportDirective",
                "scope": 3517,
                "sourceUnit": 5389,
                "src": "665:52:25",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "@openzeppelin/contracts/utils/Pausable.sol",
                "file": "@openzeppelin/contracts/utils/Pausable.sol",
                "id": 3230,
                "nodeType": "ImportDirective",
                "scope": 3517,
                "sourceUnit": 6256,
                "src": "718:52:25",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/ILiquidityProxy.sol",
                "file": "../ILiquidityProxy.sol",
                "id": 3231,
                "nodeType": "ImportDirective",
                "scope": 3517,
                "sourceUnit": 2149,
                "src": "771:32:25",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/token/CollateralizedToken.sol",
                "file": "../../token/CollateralizedToken.sol",
                "id": 3232,
                "nodeType": "ImportDirective",
                "scope": 3517,
                "sourceUnit": 5198,
                "src": "804:45:25",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/ktoken/KToken.sol",
                "file": "../../ktoken/KToken.sol",
                "id": 3233,
                "nodeType": "ImportDirective",
                "scope": 3517,
                "sourceUnit": 2116,
                "src": "850:33:25",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvoker.sol",
                "file": "../../common/invoke/IInvoker.sol",
                "id": 3234,
                "nodeType": "ImportDirective",
                "scope": 3517,
                "sourceUnit": 1235,
                "src": "884:42:25",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/BalanceCarrier.sol",
                "file": "../../common/utils/BalanceCarrier.sol",
                "id": 3235,
                "nodeType": "ImportDirective",
                "scope": 3517,
                "sourceUnit": 1465,
                "src": "927:47:25",
                "symbolAliases": [],
                "unitAlias": ""
            },
            {
                "abstract": false,
                "baseContracts": [
                    {
                        "baseName": {
                            "id": 3236,
                            "name": "Ownable",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 5388,
                            "src": "1017:7:25",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Ownable_$5388",
                                "typeString": "contract Ownable"
                            }
                        },
                        "id": 3237,
                        "nodeType": "InheritanceSpecifier",
                        "src": "1017:7:25"
                    },
                    {
                        "baseName": {
                            "id": 3238,
                            "name": "BalanceCarrier",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 1464,
                            "src": "1030:14:25",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BalanceCarrier_$1464",
                                "typeString": "contract BalanceCarrier"
                            }
                        },
                        "id": 3239,
                        "nodeType": "InheritanceSpecifier",
                        "src": "1030:14:25"
                    },
                    {
                        "baseName": {
                            "id": 3240,
                            "name": "ILiquidityProxy",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 2148,
                            "src": "1050:15:25",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_ILiquidityProxy_$2148",
                                "typeString": "contract ILiquidityProxy"
                            }
                        },
                        "id": 3241,
                        "nodeType": "InheritanceSpecifier",
                        "src": "1050:15:25"
                    },
                    {
                        "baseName": {
                            "id": 3242,
                            "name": "IInvokable",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 1178,
                            "src": "1071:10:25",
                            "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IInvokable_$1178",
                                "typeString": "contract IInvokable"
                            }
                        },
                        "id": 3243,
                        "nodeType": "InheritanceSpecifier",
                        "src": "1071:10:25"
                    }
                ],
                "contractDependencies": [
                    1178,
                    1464,
                    1563,
                    2148,
                    5279,
                    5388
                ],
                "contractKind": "contract",
                "fullyImplemented": true,
                "id": 3516,
                "linearizedBaseContracts": [
                    3516,
                    1178,
                    2148,
                    1464,
                    1563,
                    5388,
                    5279
                ],
                "name": "KollateralLiquidityProxy",
                "nodeType": "ContractDefinition",
                "nodes": [
                    {
                        "constant": false,
                        "id": 3247,
                        "mutability": "mutable",
                        "name": "_tokenAddressToKTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 3516,
                        "src": "1088:56:25",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                            "typeString": "mapping(address => address)"
                        },
                        "typeName": {
                            "id": 3246,
                            "keyType": {
                                "id": 3244,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1096:7:25",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            },
                            "nodeType": "Mapping",
                            "src": "1088:27:25",
                            "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                "typeString": "mapping(address => address)"
                            },
                            "valueType": {
                                "id": 3245,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1107:7:25",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                }
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "constant": false,
                        "id": 3249,
                        "mutability": "mutable",
                        "name": "_scheduleInvokerAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 3516,
                        "src": "1151:48:25",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                        },
                        "typeName": {
                            "id": 3248,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1151:15:25",
                            "stateMutability": "payable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "constant": false,
                        "id": 3251,
                        "mutability": "mutable",
                        "name": "_scheduleTokenAddress",
                        "nodeType": "VariableDeclaration",
                        "scope": 3516,
                        "src": "1205:38:25",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                        },
                        "typeName": {
                            "id": 3250,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1205:7:25",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "constant": false,
                        "id": 3253,
                        "mutability": "mutable",
                        "name": "_scheduleTokenAmount",
                        "nodeType": "VariableDeclaration",
                        "scope": 3516,
                        "src": "1249:37:25",
                        "stateVariable": true,
                        "storageLocation": "default",
                        "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                        },
                        "typeName": {
                            "id": 3252,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "1249:7:25",
                            "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                            }
                        },
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 3262,
                            "nodeType": "Block",
                            "src": "1334:2:25",
                            "statements": []
                        },
                        "id": 3263,
                        "implemented": true,
                        "kind": "constructor",
                        "modifiers": [
                            {
                                "arguments": [
                                    {
                                        "arguments": [
                                            {
                                                "hexValue": "31",
                                                "id": 3258,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "1330:1:25",
                                                "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": 3257,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1322:7:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                            },
                                            "typeName": {
                                                "id": 3256,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "1322:7:25",
                                                "typeDescriptions": {}
                                            }
                                        },
                                        "id": 3259,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1322:10:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    }
                                ],
                                "id": 3260,
                                "modifierName": {
                                    "id": 3255,
                                    "name": "BalanceCarrier",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1464,
                                    "src": "1307:14:25",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_BalanceCarrier_$1464_$",
                                        "typeString": "type(contract BalanceCarrier)"
                                    }
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "1307:26:25"
                            }
                        ],
                        "name": "",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 3254,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1304:2:25"
                        },
                        "returnParameters": {
                            "id": 3261,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1334:0:25"
                        },
                        "scope": 3516,
                        "src": "1293:43:25",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "public"
                    },
                    {
                        "body": {
                            "id": 3266,
                            "nodeType": "Block",
                            "src": "1369:2:25",
                            "statements": []
                        },
                        "id": 3267,
                        "implemented": true,
                        "kind": "receive",
                        "modifiers": [],
                        "name": "",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 3264,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1349:2:25"
                        },
                        "returnParameters": {
                            "id": 3265,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1369:0:25"
                        },
                        "scope": 3516,
                        "src": "1342:29:25",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 3270,
                            "nodeType": "Block",
                            "src": "1405:2:25",
                            "statements": []
                        },
                        "id": 3271,
                        "implemented": true,
                        "kind": "fallback",
                        "modifiers": [],
                        "name": "",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 3268,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1385:2:25"
                        },
                        "returnParameters": {
                            "id": 3269,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1405:0:25"
                        },
                        "scope": 3516,
                        "src": "1377:30:25",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 3286,
                            "nodeType": "Block",
                            "src": "1519:75:25",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 3284,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 3280,
                                                "name": "_tokenAddressToKTokenAddress",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3247,
                                                "src": "1529:28:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                                    "typeString": "mapping(address => address)"
                                                }
                                            },
                                            "id": 3282,
                                            "indexExpression": {
                                                "id": 3281,
                                                "name": "tokenAddress",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3273,
                                                "src": "1558:12:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "1529:42:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 3283,
                                            "name": "kTokenAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3275,
                                            "src": "1574:13:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "1529:58:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 3285,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1529:58:25"
                                }
                            ]
                        },
                        "functionSelector": "7286e5e5",
                        "id": 3287,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 3278,
                                "modifierName": {
                                    "id": 3277,
                                    "name": "onlyOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5337,
                                    "src": "1505:9:25",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_modifier$__$",
                                        "typeString": "modifier ()"
                                    }
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "1505:9:25"
                            }
                        ],
                        "name": "registerPool",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 3276,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3273,
                                    "mutability": "mutable",
                                    "name": "tokenAddress",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3287,
                                    "src": "1435:20:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3272,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1435:7:25",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3275,
                                    "mutability": "mutable",
                                    "name": "kTokenAddress",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3287,
                                    "src": "1457:21:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3274,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1457:7:25",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1434:45:25"
                        },
                        "returnParameters": {
                            "id": 3279,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1519:0:25"
                        },
                        "scope": 3516,
                        "src": "1413:181:25",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 3303,
                            "nodeType": "Block",
                            "src": "1665:72:25",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 3301,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "baseExpression": {
                                                "id": 3294,
                                                "name": "_tokenAddressToKTokenAddress",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3247,
                                                "src": "1675:28:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                                    "typeString": "mapping(address => address)"
                                                }
                                            },
                                            "id": 3296,
                                            "indexExpression": {
                                                "id": 3295,
                                                "name": "tokenAddress",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3289,
                                                "src": "1704:12:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            },
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": true,
                                            "nodeType": "IndexAccess",
                                            "src": "1675:42:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "hexValue": "30",
                                                    "id": 3299,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "1728:1:25",
                                                    "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": 3298,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "1720:7:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 3297,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "1720:7:25",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 3300,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "1720:10:25",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "src": "1675:55:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 3302,
                                    "nodeType": "ExpressionStatement",
                                    "src": "1675:55:25"
                                }
                            ]
                        },
                        "functionSelector": "7e72c7d7",
                        "id": 3304,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [
                            {
                                "id": 3292,
                                "modifierName": {
                                    "id": 3291,
                                    "name": "onlyOwner",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5337,
                                    "src": "1655:9:25",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_modifier$__$",
                                        "typeString": "modifier ()"
                                    }
                                },
                                "nodeType": "ModifierInvocation",
                                "src": "1655:9:25"
                            }
                        ],
                        "name": "deregisterPool",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 3290,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3289,
                                    "mutability": "mutable",
                                    "name": "tokenAddress",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3304,
                                    "src": "1624:20:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3288,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1624:7:25",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1623:22:25"
                        },
                        "returnParameters": {
                            "id": 3293,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "1665:0:25"
                        },
                        "scope": 3516,
                        "src": "1600:137:25",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            2131
                        ],
                        "body": {
                            "id": 3316,
                            "nodeType": "Block",
                            "src": "1871:49:25",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 3313,
                                                "name": "tokenAddress",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3306,
                                                "src": "1900:12:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 3312,
                                            "name": "poolAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3482,
                                            "src": "1888:11:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                                                "typeString": "function (address) view returns (address)"
                                            }
                                        },
                                        "id": 3314,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1888:25:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "functionReturnParameters": 3311,
                                    "id": 3315,
                                    "nodeType": "Return",
                                    "src": "1881:32:25"
                                }
                            ]
                        },
                        "functionSelector": "680c7b94",
                        "id": 3317,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getRepaymentAddress",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 3308,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "1832:8:25"
                        },
                        "parameters": {
                            "id": 3307,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3306,
                                    "mutability": "mutable",
                                    "name": "tokenAddress",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3317,
                                    "src": "1772:20:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3305,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1772:7:25",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1771:22:25"
                        },
                        "returnParameters": {
                            "id": 3311,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3310,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3317,
                                    "src": "1858:7:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3309,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1858:7:25",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1857:9:25"
                        },
                        "scope": 3516,
                        "src": "1743:177:25",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            2124
                        ],
                        "body": {
                            "id": 3349,
                            "nodeType": "Block",
                            "src": "2050:261:25",
                            "statements": [
                                {
                                    "condition": {
                                        "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        },
                                        "id": 3332,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "arguments": [
                                                {
                                                    "id": 3326,
                                                    "name": "tokenAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3319,
                                                    "src": "2077:12:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                ],
                                                "id": 3325,
                                                "name": "isRegistered",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3499,
                                                "src": "2064:12:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                    "typeString": "function (address) view returns (bool)"
                                                }
                                            },
                                            "id": 3327,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2064:26:25",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "&&",
                                        "rightExpression": {
                                            "id": 3331,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "UnaryOperation",
                                            "operator": "!",
                                            "prefix": true,
                                            "src": "2094:23:25",
                                            "subExpression": {
                                                "arguments": [
                                                    {
                                                        "id": 3329,
                                                        "name": "tokenAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3319,
                                                        "src": "2104:12:25",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 3328,
                                                    "name": "isPaused",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3515,
                                                    "src": "2095:8:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                                                        "typeString": "function (address) view returns (bool)"
                                                    }
                                                },
                                                "id": 3330,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2095:22:25",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                            }
                                        },
                                        "src": "2064:53:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "id": 3346,
                                    "nodeType": "IfStatement",
                                    "src": "2060:227:25",
                                    "trueBody": {
                                        "id": 3345,
                                        "nodeType": "Block",
                                        "src": "2119:168:25",
                                        "statements": [
                                            {
                                                "assignments": [
                                                    3334
                                                ],
                                                "declarations": [
                                                    {
                                                        "constant": false,
                                                        "id": 3334,
                                                        "mutability": "mutable",
                                                        "name": "pool",
                                                        "nodeType": "VariableDeclaration",
                                                        "scope": 3345,
                                                        "src": "2133:24:25",
                                                        "stateVariable": false,
                                                        "storageLocation": "default",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_CollateralizedToken_$5197",
                                                            "typeString": "contract CollateralizedToken"
                                                        },
                                                        "typeName": {
                                                            "id": 3333,
                                                            "name": "CollateralizedToken",
                                                            "nodeType": "UserDefinedTypeName",
                                                            "referencedDeclaration": 5197,
                                                            "src": "2133:19:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_CollateralizedToken_$5197",
                                                                "typeString": "contract CollateralizedToken"
                                                            }
                                                        },
                                                        "visibility": "internal"
                                                    }
                                                ],
                                                "id": 3340,
                                                "initialValue": {
                                                    "arguments": [
                                                        {
                                                            "arguments": [
                                                                {
                                                                    "id": 3337,
                                                                    "name": "tokenAddress",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 3319,
                                                                    "src": "2209:12:25",
                                                                    "typeDescriptions": {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                }
                                                            ],
                                                            "expression": {
                                                                "argumentTypes": [
                                                                    {
                                                                        "typeIdentifier": "t_address",
                                                                        "typeString": "address"
                                                                    }
                                                                ],
                                                                "id": 3336,
                                                                "name": "poolAddress",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3482,
                                                                "src": "2197:11:25",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                                                                    "typeString": "function (address) view returns (address)"
                                                                }
                                                            },
                                                            "id": 3338,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "2197:25:25",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        }
                                                    ],
                                                    "expression": {
                                                        "argumentTypes": [
                                                            {
                                                                "typeIdentifier": "t_address",
                                                                "typeString": "address"
                                                            }
                                                        ],
                                                        "id": 3335,
                                                        "name": "CollateralizedToken",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 5197,
                                                        "src": "2160:19:25",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_contract$_CollateralizedToken_$5197_$",
                                                            "typeString": "type(contract CollateralizedToken)"
                                                        }
                                                    },
                                                    "id": 3339,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2160:76:25",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_contract$_CollateralizedToken_$5197",
                                                        "typeString": "contract CollateralizedToken"
                                                    }
                                                },
                                                "nodeType": "VariableDeclarationStatement",
                                                "src": "2133:103:25"
                                            },
                                            {
                                                "expression": {
                                                    "arguments": [],
                                                    "expression": {
                                                        "argumentTypes": [],
                                                        "expression": {
                                                            "id": 3341,
                                                            "name": "pool",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3334,
                                                            "src": "2257:4:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_contract$_CollateralizedToken_$5197",
                                                                "typeString": "contract CollateralizedToken"
                                                            }
                                                        },
                                                        "id": 3342,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "memberName": "totalReserve",
                                                        "nodeType": "MemberAccess",
                                                        "referencedDeclaration": 5174,
                                                        "src": "2257:17:25",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                                                            "typeString": "function () view external returns (uint256)"
                                                        }
                                                    },
                                                    "id": 3343,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "2257:19:25",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                    }
                                                },
                                                "functionReturnParameters": 3324,
                                                "id": 3344,
                                                "nodeType": "Return",
                                                "src": "2250:26:25"
                                            }
                                        ]
                                    }
                                },
                                {
                                    "expression": {
                                        "hexValue": "30",
                                        "id": 3347,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2303:1:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_rational_0_by_1",
                                            "typeString": "int_const 0"
                                        },
                                        "value": "0"
                                    },
                                    "functionReturnParameters": 3324,
                                    "id": 3348,
                                    "nodeType": "Return",
                                    "src": "2296:8:25"
                                }
                            ]
                        },
                        "functionSelector": "c32dc3b6",
                        "id": 3350,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getTotalReserve",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 3321,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "2011:8:25"
                        },
                        "parameters": {
                            "id": 3320,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3319,
                                    "mutability": "mutable",
                                    "name": "tokenAddress",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3350,
                                    "src": "1951:20:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3318,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1951:7:25",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "1950:22:25"
                        },
                        "returnParameters": {
                            "id": 3324,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3323,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3350,
                                    "src": "2037:7:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3322,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2037:7:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2036:9:25"
                        },
                        "scope": 3516,
                        "src": "1926:385:25",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            2140
                        ],
                        "body": {
                            "id": 3373,
                            "nodeType": "Block",
                            "src": "2465:123:25",
                            "statements": [
                                {
                                    "assignments": [
                                        3361
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 3361,
                                            "mutability": "mutable",
                                            "name": "pool",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3373,
                                            "src": "2475:11:25",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_KToken_$2115",
                                                "typeString": "contract KToken"
                                            },
                                            "typeName": {
                                                "id": 3360,
                                                "name": "KToken",
                                                "nodeType": "UserDefinedTypeName",
                                                "referencedDeclaration": 2115,
                                                "src": "2475:6:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_KToken_$2115",
                                                    "typeString": "contract KToken"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 3367,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 3364,
                                                        "name": "tokenAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3352,
                                                        "src": "2508:12:25",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 3363,
                                                    "name": "poolAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3482,
                                                    "src": "2496:11:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                                                        "typeString": "function (address) view returns (address)"
                                                    }
                                                },
                                                "id": 3365,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2496:25:25",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 3362,
                                            "name": "KToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2115,
                                            "src": "2489:6:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_KToken_$2115_$",
                                                "typeString": "type(contract KToken)"
                                            }
                                        },
                                        "id": 3366,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2489:33:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_KToken_$2115",
                                            "typeString": "contract KToken"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2475:47:25"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "id": 3370,
                                                "name": "tokenAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3354,
                                                "src": "2569:11:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 3368,
                                                "name": "pool",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3361,
                                                "src": "2539:4:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_KToken_$2115",
                                                    "typeString": "contract KToken"
                                                }
                                            },
                                            "id": 3369,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "calculateRepaymentAmount",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1984,
                                            "src": "2539:29:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_uint256_$",
                                                "typeString": "function (uint256) view external returns (uint256)"
                                            }
                                        },
                                        "id": 3371,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2539:42:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "functionReturnParameters": 3359,
                                    "id": 3372,
                                    "nodeType": "Return",
                                    "src": "2532:49:25"
                                }
                            ]
                        },
                        "functionSelector": "aa819057",
                        "id": 3374,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "getRepaymentAmount",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 3356,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "2426:8:25"
                        },
                        "parameters": {
                            "id": 3355,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3352,
                                    "mutability": "mutable",
                                    "name": "tokenAddress",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3374,
                                    "src": "2345:20:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3351,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2345:7:25",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3354,
                                    "mutability": "mutable",
                                    "name": "tokenAmount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3374,
                                    "src": "2367:19:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3353,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2367:7:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2344:43:25"
                        },
                        "returnParameters": {
                            "id": 3359,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3358,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3374,
                                    "src": "2452:7:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3357,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2452:7:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2451:9:25"
                        },
                        "scope": 3516,
                        "src": "2317:271:25",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            2147
                        ],
                        "body": {
                            "id": 3432,
                            "nodeType": "Block",
                            "src": "2691:379:25",
                            "statements": [
                                {
                                    "expression": {
                                        "id": 3385,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 3382,
                                            "name": "_scheduleInvokerAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3249,
                                            "src": "2701:23:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "expression": {
                                                "id": 3383,
                                                "name": "msg",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": -15,
                                                "src": "2727:3:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_message",
                                                    "typeString": "msg"
                                                }
                                            },
                                            "id": 3384,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "sender",
                                            "nodeType": "MemberAccess",
                                            "src": "2727:10:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "src": "2701:36:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    "id": 3386,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2701:36:25"
                                },
                                {
                                    "expression": {
                                        "id": 3389,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 3387,
                                            "name": "_scheduleTokenAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3251,
                                            "src": "2747:21:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 3388,
                                            "name": "tokenAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3376,
                                            "src": "2771:12:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "src": "2747:36:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 3390,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2747:36:25"
                                },
                                {
                                    "expression": {
                                        "id": 3393,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 3391,
                                            "name": "_scheduleTokenAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3253,
                                            "src": "2793:20:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "id": 3392,
                                            "name": "tokenAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3378,
                                            "src": "2816:11:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "src": "2793:34:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 3394,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2793:34:25"
                                },
                                {
                                    "assignments": [
                                        3396
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 3396,
                                            "mutability": "mutable",
                                            "name": "pool",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3432,
                                            "src": "2838:11:25",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_KToken_$2115",
                                                "typeString": "contract KToken"
                                            },
                                            "typeName": {
                                                "id": 3395,
                                                "name": "KToken",
                                                "nodeType": "UserDefinedTypeName",
                                                "referencedDeclaration": 2115,
                                                "src": "2838:6:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_KToken_$2115",
                                                    "typeString": "contract KToken"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 3402,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 3399,
                                                        "name": "tokenAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3376,
                                                        "src": "2871:12:25",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 3398,
                                                    "name": "poolAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3482,
                                                    "src": "2859:11:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                                                        "typeString": "function (address) view returns (address)"
                                                    }
                                                },
                                                "id": 3400,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2859:25:25",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                }
                                            ],
                                            "id": 3397,
                                            "name": "KToken",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 2115,
                                            "src": "2852:6:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_KToken_$2115_$",
                                                "typeString": "type(contract KToken)"
                                            }
                                        },
                                        "id": 3401,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2852:33:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_KToken_$2115",
                                            "typeString": "contract KToken"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "2838:47:25"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 3408,
                                                        "name": "this",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": -28,
                                                        "src": "2915:4:25",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_contract$_KollateralLiquidityProxy_$3516",
                                                            "typeString": "contract KollateralLiquidityProxy"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_contract$_KollateralLiquidityProxy_$3516",
                                                            "typeString": "contract KollateralLiquidityProxy"
                                                        }
                                                    ],
                                                    "id": 3407,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "2907:7:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_address_$",
                                                        "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                        "id": 3406,
                                                        "name": "address",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "2907:7:25",
                                                        "typeDescriptions": {}
                                                    }
                                                },
                                                "id": 3409,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "2907:13:25",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            },
                                            {
                                                "hexValue": "",
                                                "id": 3410,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "2922:2:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                    "typeString": "literal_string \"\""
                                                },
                                                "value": ""
                                            },
                                            {
                                                "id": 3411,
                                                "name": "tokenAmount",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3378,
                                                "src": "2926:11:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                    "typeString": "literal_string \"\""
                                                },
                                                {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                }
                                            ],
                                            "expression": {
                                                "id": 3403,
                                                "name": "pool",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3396,
                                                "src": "2895:4:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_KToken_$2115",
                                                    "typeString": "contract KToken"
                                                }
                                            },
                                            "id": 3405,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "invoke",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1880,
                                            "src": "2895:11:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$",
                                                "typeString": "function (address,bytes memory,uint256) payable external"
                                            }
                                        },
                                        "id": 3412,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2895:43:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 3413,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2895:43:25"
                                },
                                {
                                    "expression": {
                                        "id": 3419,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 3414,
                                            "name": "_scheduleInvokerAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3249,
                                            "src": "2949:23:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "hexValue": "30",
                                                    "id": 3417,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "2983:1:25",
                                                    "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": 3416,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "2975:7:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 3415,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "2975:7:25",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 3418,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "2975:10:25",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "src": "2949:36:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                        }
                                    },
                                    "id": 3420,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2949:36:25"
                                },
                                {
                                    "expression": {
                                        "id": 3426,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 3421,
                                            "name": "_scheduleTokenAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3251,
                                            "src": "2995:21:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "arguments": [
                                                {
                                                    "hexValue": "30",
                                                    "id": 3424,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3027:1:25",
                                                    "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": 3423,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "3019:7:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 3422,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3019:7:25",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 3425,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3019:10:25",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "src": "2995:34:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "id": 3427,
                                    "nodeType": "ExpressionStatement",
                                    "src": "2995:34:25"
                                },
                                {
                                    "expression": {
                                        "id": 3430,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftHandSide": {
                                            "id": 3428,
                                            "name": "_scheduleTokenAmount",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3253,
                                            "src": "3039:20:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                            }
                                        },
                                        "nodeType": "Assignment",
                                        "operator": "=",
                                        "rightHandSide": {
                                            "hexValue": "30",
                                            "id": 3429,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "3062:1:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_rational_0_by_1",
                                                "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                        },
                                        "src": "3039:24:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "id": 3431,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3039:24:25"
                                }
                            ]
                        },
                        "functionSelector": "4b8a3529",
                        "id": 3433,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "borrow",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 3380,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "2678:8:25"
                        },
                        "parameters": {
                            "id": 3379,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3376,
                                    "mutability": "mutable",
                                    "name": "tokenAddress",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3433,
                                    "src": "2610:20:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3375,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2610:7:25",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                },
                                {
                                    "constant": false,
                                    "id": 3378,
                                    "mutability": "mutable",
                                    "name": "tokenAmount",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3433,
                                    "src": "2632:19:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                    },
                                    "typeName": {
                                        "id": 3377,
                                        "name": "uint256",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2632:7:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "2609:43:25"
                        },
                        "returnParameters": {
                            "id": 3381,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "2691:0:25"
                        },
                        "scope": 3516,
                        "src": "2594:476:25",
                        "stateMutability": "nonpayable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "baseFunctions": [
                            1177
                        ],
                        "body": {
                            "id": 3469,
                            "nodeType": "Block",
                            "src": "3140:487:25",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "commonType": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                },
                                                "id": 3445,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                    "id": 3440,
                                                    "name": "_scheduleInvokerAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3249,
                                                    "src": "3171:23:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                    "arguments": [
                                                        {
                                                            "hexValue": "30",
                                                            "id": 3443,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "3206:1:25",
                                                            "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": 3442,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "lValueRequested": false,
                                                        "nodeType": "ElementaryTypeNameExpression",
                                                        "src": "3198:7:25",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_type$_t_address_$",
                                                            "typeString": "type(address)"
                                                        },
                                                        "typeName": {
                                                            "id": 3441,
                                                            "name": "address",
                                                            "nodeType": "ElementaryTypeName",
                                                            "src": "3198:7:25",
                                                            "typeDescriptions": {}
                                                        }
                                                    },
                                                    "id": 3444,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "3198:10:25",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address_payable",
                                                        "typeString": "address payable"
                                                    }
                                                },
                                                "src": "3171:37:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "4b6f6c6c61746572616c4c697175696469747950726f78793a206e6f74207363686564756c6564",
                                                "id": 3446,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3222:41:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_90f1ee5f16679c4c41f60fb1d23e1b018a67e342e254a06605779689d3eabb9b",
                                                    "typeString": "literal_string \"KollateralLiquidityProxy: not scheduled\""
                                                },
                                                "value": "KollateralLiquidityProxy: not scheduled"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_90f1ee5f16679c4c41f60fb1d23e1b018a67e342e254a06605779689d3eabb9b",
                                                    "typeString": "literal_string \"KollateralLiquidityProxy: not scheduled\""
                                                }
                                            ],
                                            "id": 3439,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "3150:7:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 3447,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3150:123:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 3448,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3150:123:25"
                                },
                                {
                                    "expression": {
                                        "arguments": [
                                            {
                                                "arguments": [
                                                    {
                                                        "id": 3451,
                                                        "name": "_scheduleTokenAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3251,
                                                        "src": "3331:21:25",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    },
                                                    {
                                                        "id": 3452,
                                                        "name": "_scheduleInvokerAddress",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3249,
                                                        "src": "3370:23:25",
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address_payable",
                                                            "typeString": "address payable"
                                                        }
                                                    },
                                                    {
                                                        "id": 3453,
                                                        "name": "_scheduleTokenAmount",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 3253,
                                                        "src": "3411:20:25",
                                                        "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": 3450,
                                                    "name": "transfer",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1433,
                                                    "src": "3305:8:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                                        "typeString": "function (address,address,uint256) returns (bool)"
                                                    }
                                                },
                                                "id": 3454,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "3305:140:25",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                }
                                            },
                                            {
                                                "hexValue": "4b6f6c6c61746572616c4c697175696469747950726f78793a207472616e7366657220746f20696e766f6b6572206661696c6564",
                                                "id": 3455,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "string",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "3459:54:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_8eda1b4c2c825c8e010d94cec4723f6c7c3e52f780266b540302a12e8e2dabaa",
                                                    "typeString": "literal_string \"KollateralLiquidityProxy: transfer to invoker failed\""
                                                },
                                                "value": "KollateralLiquidityProxy: transfer to invoker failed"
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                },
                                                {
                                                    "typeIdentifier": "t_stringliteral_8eda1b4c2c825c8e010d94cec4723f6c7c3e52f780266b540302a12e8e2dabaa",
                                                    "typeString": "literal_string \"KollateralLiquidityProxy: transfer to invoker failed\""
                                                }
                                            ],
                                            "id": 3449,
                                            "name": "require",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [
                                                -18,
                                                -18
                                            ],
                                            "referencedDeclaration": -18,
                                            "src": "3284:7:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                                "typeString": "function (bool,string memory) pure"
                                            }
                                        },
                                        "id": 3456,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3284:239:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 3457,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3284:239:25"
                                },
                                {
                                    "assignments": [
                                        3459
                                    ],
                                    "declarations": [
                                        {
                                            "constant": false,
                                            "id": 3459,
                                            "mutability": "mutable",
                                            "name": "invoker",
                                            "nodeType": "VariableDeclaration",
                                            "scope": 3469,
                                            "src": "3534:16:25",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_contract$_IInvoker_$1234",
                                                "typeString": "contract IInvoker"
                                            },
                                            "typeName": {
                                                "id": 3458,
                                                "name": "IInvoker",
                                                "nodeType": "UserDefinedTypeName",
                                                "referencedDeclaration": 1234,
                                                "src": "3534:8:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IInvoker_$1234",
                                                    "typeString": "contract IInvoker"
                                                }
                                            },
                                            "visibility": "internal"
                                        }
                                    ],
                                    "id": 3463,
                                    "initialValue": {
                                        "arguments": [
                                            {
                                                "id": 3461,
                                                "name": "_scheduleInvokerAddress",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3249,
                                                "src": "3562:23:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            }
                                        ],
                                        "expression": {
                                            "argumentTypes": [
                                                {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                }
                                            ],
                                            "id": 3460,
                                            "name": "IInvoker",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1234,
                                            "src": "3553:8:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IInvoker_$1234_$",
                                                "typeString": "type(contract IInvoker)"
                                            }
                                        },
                                        "id": 3462,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3553:33:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_contract$_IInvoker_$1234",
                                            "typeString": "contract IInvoker"
                                        }
                                    },
                                    "nodeType": "VariableDeclarationStatement",
                                    "src": "3534:52:25"
                                },
                                {
                                    "expression": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "id": 3464,
                                                "name": "invoker",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3459,
                                                "src": "3596:7:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_IInvoker_$1234",
                                                    "typeString": "contract IInvoker"
                                                }
                                            },
                                            "id": 3466,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "invokeCallback",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 1197,
                                            "src": "3596:22:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                                                "typeString": "function () external"
                                            }
                                        },
                                        "id": 3467,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3596:24:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                        }
                                    },
                                    "id": 3468,
                                    "nodeType": "ExpressionStatement",
                                    "src": "3596:24:25"
                                }
                            ]
                        },
                        "functionSelector": "09c5eabe",
                        "id": 3470,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "execute",
                        "nodeType": "FunctionDefinition",
                        "overrides": {
                            "id": 3437,
                            "nodeType": "OverrideSpecifier",
                            "overrides": [],
                            "src": "3131:8:25"
                        },
                        "parameters": {
                            "id": 3436,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3435,
                                    "mutability": "mutable",
                                    "name": "data",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3470,
                                    "src": "3093:19:25",
                                    "stateVariable": false,
                                    "storageLocation": "calldata",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_calldata_ptr",
                                        "typeString": "bytes"
                                    },
                                    "typeName": {
                                        "id": 3434,
                                        "name": "bytes",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3093:5:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bytes_storage_ptr",
                                            "typeString": "bytes"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3092:21:25"
                        },
                        "returnParameters": {
                            "id": 3438,
                            "nodeType": "ParameterList",
                            "parameters": [],
                            "src": "3140:0:25"
                        },
                        "scope": 3516,
                        "src": "3076:551:25",
                        "stateMutability": "payable",
                        "virtual": false,
                        "visibility": "external"
                    },
                    {
                        "body": {
                            "id": 3481,
                            "nodeType": "Block",
                            "src": "3708:66:25",
                            "statements": [
                                {
                                    "expression": {
                                        "baseExpression": {
                                            "id": 3477,
                                            "name": "_tokenAddressToKTokenAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3247,
                                            "src": "3725:28:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                                "typeString": "mapping(address => address)"
                                            }
                                        },
                                        "id": 3479,
                                        "indexExpression": {
                                            "id": 3478,
                                            "name": "tokenAddress",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 3472,
                                            "src": "3754:12:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "3725:42:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "functionReturnParameters": 3476,
                                    "id": 3480,
                                    "nodeType": "Return",
                                    "src": "3718:49:25"
                                }
                            ]
                        },
                        "id": 3482,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "poolAddress",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 3473,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3472,
                                    "mutability": "mutable",
                                    "name": "tokenAddress",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3482,
                                    "src": "3654:20:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3471,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3654:7:25",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3653:22:25"
                        },
                        "returnParameters": {
                            "id": 3476,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3475,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3482,
                                    "src": "3699:7:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3474,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3699:7:25",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3698:9:25"
                        },
                        "scope": 3516,
                        "src": "3633:141:25",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 3498,
                            "nodeType": "Block",
                            "src": "3853:63:25",
                            "statements": [
                                {
                                    "expression": {
                                        "commonType": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        },
                                        "id": 3496,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                            "arguments": [
                                                {
                                                    "id": 3490,
                                                    "name": "tokenAddress",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 3484,
                                                    "src": "3882:12:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                }
                                            ],
                                            "expression": {
                                                "argumentTypes": [
                                                    {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    }
                                                ],
                                                "id": 3489,
                                                "name": "poolAddress",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3482,
                                                "src": "3870:11:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                                                    "typeString": "function (address) view returns (address)"
                                                }
                                            },
                                            "id": 3491,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "functionCall",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3870:25:25",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address",
                                                "typeString": "address"
                                            }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "!=",
                                        "rightExpression": {
                                            "arguments": [
                                                {
                                                    "hexValue": "30",
                                                    "id": 3494,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "3907:1:25",
                                                    "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": 3493,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "3899:7:25",
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_address_$",
                                                    "typeString": "type(address)"
                                                },
                                                "typeName": {
                                                    "id": 3492,
                                                    "name": "address",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "3899:7:25",
                                                    "typeDescriptions": {}
                                                }
                                            },
                                            "id": 3495,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "3899:10:25",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_address_payable",
                                                "typeString": "address payable"
                                            }
                                        },
                                        "src": "3870:39:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 3488,
                                    "id": 3497,
                                    "nodeType": "Return",
                                    "src": "3863:46:25"
                                }
                            ]
                        },
                        "id": 3499,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "isRegistered",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 3485,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3484,
                                    "mutability": "mutable",
                                    "name": "tokenAddress",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3499,
                                    "src": "3802:20:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3483,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3802:7:25",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3801:22:25"
                        },
                        "returnParameters": {
                            "id": 3488,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3487,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3499,
                                    "src": "3847:4:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 3486,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3847:4:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3846:6:25"
                        },
                        "scope": 3516,
                        "src": "3780:136:25",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "internal"
                    },
                    {
                        "body": {
                            "id": 3514,
                            "nodeType": "Block",
                            "src": "3991:68:25",
                            "statements": [
                                {
                                    "expression": {
                                        "arguments": [],
                                        "expression": {
                                            "argumentTypes": [],
                                            "expression": {
                                                "arguments": [
                                                    {
                                                        "arguments": [
                                                            {
                                                                "id": 3508,
                                                                "name": "tokenAddress",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 3501,
                                                                "src": "4029:12:25",
                                                                "typeDescriptions": {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            }
                                                        ],
                                                        "expression": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "id": 3507,
                                                            "name": "poolAddress",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 3482,
                                                            "src": "4017:11:25",
                                                            "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_address_$",
                                                                "typeString": "function (address) view returns (address)"
                                                            }
                                                        },
                                                        "id": 3509,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "kind": "functionCall",
                                                        "lValueRequested": false,
                                                        "names": [],
                                                        "nodeType": "FunctionCall",
                                                        "src": "4017:25:25",
                                                        "tryCall": false,
                                                        "typeDescriptions": {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    }
                                                ],
                                                "expression": {
                                                    "argumentTypes": [
                                                        {
                                                            "typeIdentifier": "t_address",
                                                            "typeString": "address"
                                                        }
                                                    ],
                                                    "id": 3506,
                                                    "name": "Pausable",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 6255,
                                                    "src": "4008:8:25",
                                                    "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_contract$_Pausable_$6255_$",
                                                        "typeString": "type(contract Pausable)"
                                                    }
                                                },
                                                "id": 3510,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "4008:35:25",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                    "typeIdentifier": "t_contract$_Pausable_$6255",
                                                    "typeString": "contract Pausable"
                                                }
                                            },
                                            "id": 3511,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "paused",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6201,
                                            "src": "4008:42:25",
                                            "typeDescriptions": {
                                                "typeIdentifier": "t_function_external_view$__$returns$_t_bool_$",
                                                "typeString": "function () view external returns (bool)"
                                            }
                                        },
                                        "id": 3512,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "4008:44:25",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "functionReturnParameters": 3505,
                                    "id": 3513,
                                    "nodeType": "Return",
                                    "src": "4001:51:25"
                                }
                            ]
                        },
                        "id": 3515,
                        "implemented": true,
                        "kind": "function",
                        "modifiers": [],
                        "name": "isPaused",
                        "nodeType": "FunctionDefinition",
                        "parameters": {
                            "id": 3502,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3501,
                                    "mutability": "mutable",
                                    "name": "tokenAddress",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3515,
                                    "src": "3940:20:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                    },
                                    "typeName": {
                                        "id": 3500,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3940:7:25",
                                        "stateMutability": "nonpayable",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3939:22:25"
                        },
                        "returnParameters": {
                            "id": 3505,
                            "nodeType": "ParameterList",
                            "parameters": [
                                {
                                    "constant": false,
                                    "id": 3504,
                                    "mutability": "mutable",
                                    "name": "",
                                    "nodeType": "VariableDeclaration",
                                    "scope": 3515,
                                    "src": "3985:4:25",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                    },
                                    "typeName": {
                                        "id": 3503,
                                        "name": "bool",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3985:4:25",
                                        "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                        }
                                    },
                                    "visibility": "internal"
                                }
                            ],
                            "src": "3984:6:25"
                        },
                        "scope": 3516,
                        "src": "3922:137:25",
                        "stateMutability": "view",
                        "virtual": false,
                        "visibility": "internal"
                    }
                ],
                "scope": 3517,
                "src": "976:3085:25"
            }
        ],
        "src": "640:3422:25"
    },
    "legacyAST": {
        "attributes": {
            "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/kollateral/KollateralLiquidityProxy.sol",
            "exportedSymbols": {
                "BalanceCarrier": [
                    1464
                ],
                "CollateralizedToken": [
                    5197
                ],
                "Context": [
                    5279
                ],
                "ERC20": [
                    6087
                ],
                "ExtendedMath": [
                    1506
                ],
                "ExternalCaller": [
                    1563
                ],
                "IERC20": [
                    6165
                ],
                "IInvocationHook": [
                    1170
                ],
                "IInvokable": [
                    1178
                ],
                "IInvoker": [
                    1234
                ],
                "ILiquidityProxy": [
                    2148
                ],
                "KToken": [
                    2115
                ],
                "KollateralLiquidityProxy": [
                    3516
                ],
                "Ownable": [
                    5388
                ],
                "Pausable": [
                    6255
                ],
                "ReentrancyGuard": [
                    6295
                ],
                "SafeMath": [
                    5584
                ],
                "UnlimitedApprovalErc20": [
                    5256
                ]
            },
            "license": "Apache-2.0"
        },
        "children": [
            {
                "attributes": {
                    "literals": [
                        "solidity",
                        "^",
                        "0.7",
                        ".0"
                    ]
                },
                "id": 3228,
                "name": "PragmaDirective",
                "src": "640:23:25"
            },
            {
                "attributes": {
                    "SourceUnit": 5389,
                    "absolutePath": "@openzeppelin/contracts/access/Ownable.sol",
                    "file": "@openzeppelin/contracts/access/Ownable.sol",
                    "scope": 3517,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3229,
                "name": "ImportDirective",
                "src": "665:52:25"
            },
            {
                "attributes": {
                    "SourceUnit": 6256,
                    "absolutePath": "@openzeppelin/contracts/utils/Pausable.sol",
                    "file": "@openzeppelin/contracts/utils/Pausable.sol",
                    "scope": 3517,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3230,
                "name": "ImportDirective",
                "src": "718:52:25"
            },
            {
                "attributes": {
                    "SourceUnit": 2149,
                    "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/ILiquidityProxy.sol",
                    "file": "../ILiquidityProxy.sol",
                    "scope": 3517,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3231,
                "name": "ImportDirective",
                "src": "771:32:25"
            },
            {
                "attributes": {
                    "SourceUnit": 5198,
                    "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/token/CollateralizedToken.sol",
                    "file": "../../token/CollateralizedToken.sol",
                    "scope": 3517,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3232,
                "name": "ImportDirective",
                "src": "804:45:25"
            },
            {
                "attributes": {
                    "SourceUnit": 2116,
                    "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/ktoken/KToken.sol",
                    "file": "../../ktoken/KToken.sol",
                    "scope": 3517,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3233,
                "name": "ImportDirective",
                "src": "850:33:25"
            },
            {
                "attributes": {
                    "SourceUnit": 1235,
                    "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvoker.sol",
                    "file": "../../common/invoke/IInvoker.sol",
                    "scope": 3517,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3234,
                "name": "ImportDirective",
                "src": "884:42:25"
            },
            {
                "attributes": {
                    "SourceUnit": 1465,
                    "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/BalanceCarrier.sol",
                    "file": "../../common/utils/BalanceCarrier.sol",
                    "scope": 3517,
                    "symbolAliases": [
                        null
                    ],
                    "unitAlias": ""
                },
                "id": 3235,
                "name": "ImportDirective",
                "src": "927:47:25"
            },
            {
                "attributes": {
                    "abstract": false,
                    "contractDependencies": [
                        1178,
                        1464,
                        1563,
                        2148,
                        5279,
                        5388
                    ],
                    "contractKind": "contract",
                    "fullyImplemented": true,
                    "linearizedBaseContracts": [
                        3516,
                        1178,
                        2148,
                        1464,
                        1563,
                        5388,
                        5279
                    ],
                    "name": "KollateralLiquidityProxy",
                    "scope": 3517
                },
                "children": [
                    {
                        "attributes": {},
                        "children": [
                            {
                                "attributes": {
                                    "name": "Ownable",
                                    "referencedDeclaration": 5388,
                                    "type": "contract Ownable"
                                },
                                "id": 3236,
                                "name": "UserDefinedTypeName",
                                "src": "1017:7:25"
                            }
                        ],
                        "id": 3237,
                        "name": "InheritanceSpecifier",
                        "src": "1017:7:25"
                    },
                    {
                        "attributes": {},
                        "children": [
                            {
                                "attributes": {
                                    "name": "BalanceCarrier",
                                    "referencedDeclaration": 1464,
                                    "type": "contract BalanceCarrier"
                                },
                                "id": 3238,
                                "name": "UserDefinedTypeName",
                                "src": "1030:14:25"
                            }
                        ],
                        "id": 3239,
                        "name": "InheritanceSpecifier",
                        "src": "1030:14:25"
                    },
                    {
                        "attributes": {},
                        "children": [
                            {
                                "attributes": {
                                    "name": "ILiquidityProxy",
                                    "referencedDeclaration": 2148,
                                    "type": "contract ILiquidityProxy"
                                },
                                "id": 3240,
                                "name": "UserDefinedTypeName",
                                "src": "1050:15:25"
                            }
                        ],
                        "id": 3241,
                        "name": "InheritanceSpecifier",
                        "src": "1050:15:25"
                    },
                    {
                        "attributes": {},
                        "children": [
                            {
                                "attributes": {
                                    "name": "IInvokable",
                                    "referencedDeclaration": 1178,
                                    "type": "contract IInvokable"
                                },
                                "id": 3242,
                                "name": "UserDefinedTypeName",
                                "src": "1071:10:25"
                            }
                        ],
                        "id": 3243,
                        "name": "InheritanceSpecifier",
                        "src": "1071:10:25"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "_tokenAddressToKTokenAddress",
                            "scope": 3516,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "mapping(address => address)",
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "type": "mapping(address => address)"
                                },
                                "children": [
                                    {
                                        "attributes": {
                                            "name": "address",
                                            "type": "address"
                                        },
                                        "id": 3244,
                                        "name": "ElementaryTypeName",
                                        "src": "1096:7:25"
                                    },
                                    {
                                        "attributes": {
                                            "name": "address",
                                            "stateMutability": "nonpayable",
                                            "type": "address"
                                        },
                                        "id": 3245,
                                        "name": "ElementaryTypeName",
                                        "src": "1107:7:25"
                                    }
                                ],
                                "id": 3246,
                                "name": "Mapping",
                                "src": "1088:27:25"
                            }
                        ],
                        "id": 3247,
                        "name": "VariableDeclaration",
                        "src": "1088:56:25"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "_scheduleInvokerAddress",
                            "scope": 3516,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "address payable",
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "address",
                                    "stateMutability": "payable",
                                    "type": "address payable"
                                },
                                "id": 3248,
                                "name": "ElementaryTypeName",
                                "src": "1151:15:25"
                            }
                        ],
                        "id": 3249,
                        "name": "VariableDeclaration",
                        "src": "1151:48:25"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "_scheduleTokenAddress",
                            "scope": 3516,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "address",
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "address",
                                    "stateMutability": "nonpayable",
                                    "type": "address"
                                },
                                "id": 3250,
                                "name": "ElementaryTypeName",
                                "src": "1205:7:25"
                            }
                        ],
                        "id": 3251,
                        "name": "VariableDeclaration",
                        "src": "1205:38:25"
                    },
                    {
                        "attributes": {
                            "constant": false,
                            "mutability": "mutable",
                            "name": "_scheduleTokenAmount",
                            "scope": 3516,
                            "stateVariable": true,
                            "storageLocation": "default",
                            "type": "uint256",
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "name": "uint256",
                                    "type": "uint256"
                                },
                                "id": 3252,
                                "name": "ElementaryTypeName",
                                "src": "1249:7:25"
                            }
                        ],
                        "id": 3253,
                        "name": "VariableDeclaration",
                        "src": "1249:37:25"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": true,
                            "kind": "constructor",
                            "name": "",
                            "scope": 3516,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "public"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 3254,
                                "name": "ParameterList",
                                "src": "1304:2:25"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 3261,
                                "name": "ParameterList",
                                "src": "1334:0:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 1464,
                                            "type": "type(contract BalanceCarrier)",
                                            "value": "BalanceCarrier"
                                        },
                                        "id": 3255,
                                        "name": "Identifier",
                                        "src": "1307:14:25"
                                    },
                                    {
                                        "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": 3256,
                                                        "name": "ElementaryTypeName",
                                                        "src": "1322:7:25"
                                                    }
                                                ],
                                                "id": 3257,
                                                "name": "ElementaryTypeNameExpression",
                                                "src": "1322:7:25"
                                            },
                                            {
                                                "attributes": {
                                                    "hexvalue": "31",
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "token": "number",
                                                    "type": "int_const 1",
                                                    "value": "1"
                                                },
                                                "id": 3258,
                                                "name": "Literal",
                                                "src": "1330:1:25"
                                            }
                                        ],
                                        "id": 3259,
                                        "name": "FunctionCall",
                                        "src": "1322:10:25"
                                    }
                                ],
                                "id": 3260,
                                "name": "ModifierInvocation",
                                "src": "1307:26:25"
                            },
                            {
                                "attributes": {
                                    "statements": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 3262,
                                "name": "Block",
                                "src": "1334:2:25"
                            }
                        ],
                        "id": 3263,
                        "name": "FunctionDefinition",
                        "src": "1293:43:25"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "receive",
                            "modifiers": [
                                null
                            ],
                            "name": "",
                            "scope": 3516,
                            "stateMutability": "payable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 3264,
                                "name": "ParameterList",
                                "src": "1349:2:25"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 3265,
                                "name": "ParameterList",
                                "src": "1369:0:25"
                            },
                            {
                                "attributes": {
                                    "statements": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 3266,
                                "name": "Block",
                                "src": "1369:2:25"
                            }
                        ],
                        "id": 3267,
                        "name": "FunctionDefinition",
                        "src": "1342:29:25"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "fallback",
                            "modifiers": [
                                null
                            ],
                            "name": "",
                            "scope": 3516,
                            "stateMutability": "payable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 3268,
                                "name": "ParameterList",
                                "src": "1385:2:25"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 3269,
                                "name": "ParameterList",
                                "src": "1405:0:25"
                            },
                            {
                                "attributes": {
                                    "statements": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 3270,
                                "name": "Block",
                                "src": "1405:2:25"
                            }
                        ],
                        "id": 3271,
                        "name": "FunctionDefinition",
                        "src": "1377:30:25"
                    },
                    {
                        "attributes": {
                            "functionSelector": "7286e5e5",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "name": "registerPool",
                            "scope": 3516,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAddress",
                                            "scope": 3287,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3272,
                                                "name": "ElementaryTypeName",
                                                "src": "1435:7:25"
                                            }
                                        ],
                                        "id": 3273,
                                        "name": "VariableDeclaration",
                                        "src": "1435:20:25"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "kTokenAddress",
                                            "scope": 3287,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3274,
                                                "name": "ElementaryTypeName",
                                                "src": "1457:7:25"
                                            }
                                        ],
                                        "id": 3275,
                                        "name": "VariableDeclaration",
                                        "src": "1457:21:25"
                                    }
                                ],
                                "id": 3276,
                                "name": "ParameterList",
                                "src": "1434:45:25"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 3279,
                                "name": "ParameterList",
                                "src": "1519:0:25"
                            },
                            {
                                "attributes": {},
                                "children": [
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 5337,
                                            "type": "modifier ()",
                                            "value": "onlyOwner"
                                        },
                                        "id": 3277,
                                        "name": "Identifier",
                                        "src": "1505:9:25"
                                    }
                                ],
                                "id": 3278,
                                "name": "ModifierInvocation",
                                "src": "1505:9:25"
                            },
                            {
                                "children": [
                                    {
                                        "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": 3247,
                                                                    "type": "mapping(address => address)",
                                                                    "value": "_tokenAddressToKTokenAddress"
                                                                },
                                                                "id": 3280,
                                                                "name": "Identifier",
                                                                "src": "1529:28:25"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3273,
                                                                    "type": "address",
                                                                    "value": "tokenAddress"
                                                                },
                                                                "id": 3281,
                                                                "name": "Identifier",
                                                                "src": "1558:12:25"
                                                            }
                                                        ],
                                                        "id": 3282,
                                                        "name": "IndexAccess",
                                                        "src": "1529:42:25"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3275,
                                                            "type": "address",
                                                            "value": "kTokenAddress"
                                                        },
                                                        "id": 3283,
                                                        "name": "Identifier",
                                                        "src": "1574:13:25"
                                                    }
                                                ],
                                                "id": 3284,
                                                "name": "Assignment",
                                                "src": "1529:58:25"
                                            }
                                        ],
                                        "id": 3285,
                                        "name": "ExpressionStatement",
                                        "src": "1529:58:25"
                                    }
                                ],
                                "id": 3286,
                                "name": "Block",
                                "src": "1519:75:25"
                            }
                        ],
                        "id": 3287,
                        "name": "FunctionDefinition",
                        "src": "1413:181:25"
                    },
                    {
                        "attributes": {
                            "functionSelector": "7e72c7d7",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "name": "deregisterPool",
                            "scope": 3516,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAddress",
                                            "scope": 3304,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3288,
                                                "name": "ElementaryTypeName",
                                                "src": "1624:7:25"
                                            }
                                        ],
                                        "id": 3289,
                                        "name": "VariableDeclaration",
                                        "src": "1624:20:25"
                                    }
                                ],
                                "id": 3290,
                                "name": "ParameterList",
                                "src": "1623:22:25"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 3293,
                                "name": "ParameterList",
                                "src": "1665:0:25"
                            },
                            {
                                "attributes": {},
                                "children": [
                                    {
                                        "attributes": {
                                            "overloadedDeclarations": [
                                                null
                                            ],
                                            "referencedDeclaration": 5337,
                                            "type": "modifier ()",
                                            "value": "onlyOwner"
                                        },
                                        "id": 3291,
                                        "name": "Identifier",
                                        "src": "1655:9:25"
                                    }
                                ],
                                "id": 3292,
                                "name": "ModifierInvocation",
                                "src": "1655:9:25"
                            },
                            {
                                "children": [
                                    {
                                        "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": 3247,
                                                                    "type": "mapping(address => address)",
                                                                    "value": "_tokenAddressToKTokenAddress"
                                                                },
                                                                "id": 3294,
                                                                "name": "Identifier",
                                                                "src": "1675:28:25"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3289,
                                                                    "type": "address",
                                                                    "value": "tokenAddress"
                                                                },
                                                                "id": 3295,
                                                                "name": "Identifier",
                                                                "src": "1704:12:25"
                                                            }
                                                        ],
                                                        "id": 3296,
                                                        "name": "IndexAccess",
                                                        "src": "1675:42:25"
                                                    },
                                                    {
                                                        "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": 3297,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "1720:7:25"
                                                                    }
                                                                ],
                                                                "id": 3298,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "1720:7:25"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 3299,
                                                                "name": "Literal",
                                                                "src": "1728:1:25"
                                                            }
                                                        ],
                                                        "id": 3300,
                                                        "name": "FunctionCall",
                                                        "src": "1720:10:25"
                                                    }
                                                ],
                                                "id": 3301,
                                                "name": "Assignment",
                                                "src": "1675:55:25"
                                            }
                                        ],
                                        "id": 3302,
                                        "name": "ExpressionStatement",
                                        "src": "1675:55:25"
                                    }
                                ],
                                "id": 3303,
                                "name": "Block",
                                "src": "1665:72:25"
                            }
                        ],
                        "id": 3304,
                        "name": "FunctionDefinition",
                        "src": "1600:137:25"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                2131
                            ],
                            "functionSelector": "680c7b94",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getRepaymentAddress",
                            "scope": 3516,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 3308,
                                "name": "OverrideSpecifier",
                                "src": "1832:8:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAddress",
                                            "scope": 3317,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3305,
                                                "name": "ElementaryTypeName",
                                                "src": "1772:7:25"
                                            }
                                        ],
                                        "id": 3306,
                                        "name": "VariableDeclaration",
                                        "src": "1772:20:25"
                                    }
                                ],
                                "id": 3307,
                                "name": "ParameterList",
                                "src": "1771:22:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 3317,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3309,
                                                "name": "ElementaryTypeName",
                                                "src": "1858:7:25"
                                            }
                                        ],
                                        "id": 3310,
                                        "name": "VariableDeclaration",
                                        "src": "1858:7:25"
                                    }
                                ],
                                "id": 3311,
                                "name": "ParameterList",
                                "src": "1857:9:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 3311
                                        },
                                        "children": [
                                            {
                                                "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": 3482,
                                                            "type": "function (address) view returns (address)",
                                                            "value": "poolAddress"
                                                        },
                                                        "id": 3312,
                                                        "name": "Identifier",
                                                        "src": "1888:11:25"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3306,
                                                            "type": "address",
                                                            "value": "tokenAddress"
                                                        },
                                                        "id": 3313,
                                                        "name": "Identifier",
                                                        "src": "1900:12:25"
                                                    }
                                                ],
                                                "id": 3314,
                                                "name": "FunctionCall",
                                                "src": "1888:25:25"
                                            }
                                        ],
                                        "id": 3315,
                                        "name": "Return",
                                        "src": "1881:32:25"
                                    }
                                ],
                                "id": 3316,
                                "name": "Block",
                                "src": "1871:49:25"
                            }
                        ],
                        "id": 3317,
                        "name": "FunctionDefinition",
                        "src": "1743:177:25"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                2124
                            ],
                            "functionSelector": "c32dc3b6",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getTotalReserve",
                            "scope": 3516,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 3321,
                                "name": "OverrideSpecifier",
                                "src": "2011:8:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAddress",
                                            "scope": 3350,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3318,
                                                "name": "ElementaryTypeName",
                                                "src": "1951:7:25"
                                            }
                                        ],
                                        "id": 3319,
                                        "name": "VariableDeclaration",
                                        "src": "1951:20:25"
                                    }
                                ],
                                "id": 3320,
                                "name": "ParameterList",
                                "src": "1950:22:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 3350,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3322,
                                                "name": "ElementaryTypeName",
                                                "src": "2037:7:25"
                                            }
                                        ],
                                        "id": 3323,
                                        "name": "VariableDeclaration",
                                        "src": "2037:7:25"
                                    }
                                ],
                                "id": 3324,
                                "name": "ParameterList",
                                "src": "2036:9:25"
                            },
                            {
                                "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": 3499,
                                                                    "type": "function (address) view returns (bool)",
                                                                    "value": "isRegistered"
                                                                },
                                                                "id": 3325,
                                                                "name": "Identifier",
                                                                "src": "2064:12:25"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3319,
                                                                    "type": "address",
                                                                    "value": "tokenAddress"
                                                                },
                                                                "id": 3326,
                                                                "name": "Identifier",
                                                                "src": "2077:12:25"
                                                            }
                                                        ],
                                                        "id": 3327,
                                                        "name": "FunctionCall",
                                                        "src": "2064:26:25"
                                                    },
                                                    {
                                                        "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": 3515,
                                                                            "type": "function (address) view returns (bool)",
                                                                            "value": "isPaused"
                                                                        },
                                                                        "id": 3328,
                                                                        "name": "Identifier",
                                                                        "src": "2095:8:25"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 3319,
                                                                            "type": "address",
                                                                            "value": "tokenAddress"
                                                                        },
                                                                        "id": 3329,
                                                                        "name": "Identifier",
                                                                        "src": "2104:12:25"
                                                                    }
                                                                ],
                                                                "id": 3330,
                                                                "name": "FunctionCall",
                                                                "src": "2095:22:25"
                                                            }
                                                        ],
                                                        "id": 3331,
                                                        "name": "UnaryOperation",
                                                        "src": "2094:23:25"
                                                    }
                                                ],
                                                "id": 3332,
                                                "name": "BinaryOperation",
                                                "src": "2064:53:25"
                                            },
                                            {
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "assignments": [
                                                                3334
                                                            ]
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "constant": false,
                                                                    "mutability": "mutable",
                                                                    "name": "pool",
                                                                    "scope": 3345,
                                                                    "stateVariable": false,
                                                                    "storageLocation": "default",
                                                                    "type": "contract CollateralizedToken",
                                                                    "visibility": "internal"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "CollateralizedToken",
                                                                            "referencedDeclaration": 5197,
                                                                            "type": "contract CollateralizedToken"
                                                                        },
                                                                        "id": 3333,
                                                                        "name": "UserDefinedTypeName",
                                                                        "src": "2133:19:25"
                                                                    }
                                                                ],
                                                                "id": 3334,
                                                                "name": "VariableDeclaration",
                                                                "src": "2133:24:25"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract CollateralizedToken",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 5197,
                                                                            "type": "type(contract CollateralizedToken)",
                                                                            "value": "CollateralizedToken"
                                                                        },
                                                                        "id": 3335,
                                                                        "name": "Identifier",
                                                                        "src": "2160:19:25"
                                                                    },
                                                                    {
                                                                        "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": 3482,
                                                                                    "type": "function (address) view returns (address)",
                                                                                    "value": "poolAddress"
                                                                                },
                                                                                "id": 3336,
                                                                                "name": "Identifier",
                                                                                "src": "2197:11:25"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3319,
                                                                                    "type": "address",
                                                                                    "value": "tokenAddress"
                                                                                },
                                                                                "id": 3337,
                                                                                "name": "Identifier",
                                                                                "src": "2209:12:25"
                                                                            }
                                                                        ],
                                                                        "id": 3338,
                                                                        "name": "FunctionCall",
                                                                        "src": "2197:25:25"
                                                                    }
                                                                ],
                                                                "id": 3339,
                                                                "name": "FunctionCall",
                                                                "src": "2160:76:25"
                                                            }
                                                        ],
                                                        "id": 3340,
                                                        "name": "VariableDeclarationStatement",
                                                        "src": "2133:103:25"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "functionReturnParameters": 3324
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "arguments": [
                                                                        null
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "uint256",
                                                                    "type_conversion": false
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                null
                                                                            ],
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "member_name": "totalReserve",
                                                                            "referencedDeclaration": 5174,
                                                                            "type": "function () view external returns (uint256)"
                                                                        },
                                                                        "children": [
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3334,
                                                                                    "type": "contract CollateralizedToken",
                                                                                    "value": "pool"
                                                                                },
                                                                                "id": 3341,
                                                                                "name": "Identifier",
                                                                                "src": "2257:4:25"
                                                                            }
                                                                        ],
                                                                        "id": 3342,
                                                                        "name": "MemberAccess",
                                                                        "src": "2257:17:25"
                                                                    }
                                                                ],
                                                                "id": 3343,
                                                                "name": "FunctionCall",
                                                                "src": "2257:19:25"
                                                            }
                                                        ],
                                                        "id": 3344,
                                                        "name": "Return",
                                                        "src": "2250:26:25"
                                                    }
                                                ],
                                                "id": 3345,
                                                "name": "Block",
                                                "src": "2119:168:25"
                                            }
                                        ],
                                        "id": 3346,
                                        "name": "IfStatement",
                                        "src": "2060:227:25"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 3324
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "hexvalue": "30",
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "token": "number",
                                                    "type": "int_const 0",
                                                    "value": "0"
                                                },
                                                "id": 3347,
                                                "name": "Literal",
                                                "src": "2303:1:25"
                                            }
                                        ],
                                        "id": 3348,
                                        "name": "Return",
                                        "src": "2296:8:25"
                                    }
                                ],
                                "id": 3349,
                                "name": "Block",
                                "src": "2050:261:25"
                            }
                        ],
                        "id": 3350,
                        "name": "FunctionDefinition",
                        "src": "1926:385:25"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                2140
                            ],
                            "functionSelector": "aa819057",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "getRepaymentAmount",
                            "scope": 3516,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 3356,
                                "name": "OverrideSpecifier",
                                "src": "2426:8:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAddress",
                                            "scope": 3374,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3351,
                                                "name": "ElementaryTypeName",
                                                "src": "2345:7:25"
                                            }
                                        ],
                                        "id": 3352,
                                        "name": "VariableDeclaration",
                                        "src": "2345:20:25"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAmount",
                                            "scope": 3374,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3353,
                                                "name": "ElementaryTypeName",
                                                "src": "2367:7:25"
                                            }
                                        ],
                                        "id": 3354,
                                        "name": "VariableDeclaration",
                                        "src": "2367:19:25"
                                    }
                                ],
                                "id": 3355,
                                "name": "ParameterList",
                                "src": "2344:43:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 3374,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3357,
                                                "name": "ElementaryTypeName",
                                                "src": "2452:7:25"
                                            }
                                        ],
                                        "id": 3358,
                                        "name": "VariableDeclaration",
                                        "src": "2452:7:25"
                                    }
                                ],
                                "id": 3359,
                                "name": "ParameterList",
                                "src": "2451:9:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "assignments": [
                                                3361
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "pool",
                                                    "scope": 3373,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "contract KToken",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "KToken",
                                                            "referencedDeclaration": 2115,
                                                            "type": "contract KToken"
                                                        },
                                                        "id": 3360,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "2475:6:25"
                                                    }
                                                ],
                                                "id": 3361,
                                                "name": "VariableDeclaration",
                                                "src": "2475:11:25"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "contract KToken",
                                                    "type_conversion": true
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2115,
                                                            "type": "type(contract KToken)",
                                                            "value": "KToken"
                                                        },
                                                        "id": 3362,
                                                        "name": "Identifier",
                                                        "src": "2489:6:25"
                                                    },
                                                    {
                                                        "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": 3482,
                                                                    "type": "function (address) view returns (address)",
                                                                    "value": "poolAddress"
                                                                },
                                                                "id": 3363,
                                                                "name": "Identifier",
                                                                "src": "2496:11:25"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3352,
                                                                    "type": "address",
                                                                    "value": "tokenAddress"
                                                                },
                                                                "id": 3364,
                                                                "name": "Identifier",
                                                                "src": "2508:12:25"
                                                            }
                                                        ],
                                                        "id": 3365,
                                                        "name": "FunctionCall",
                                                        "src": "2496:25:25"
                                                    }
                                                ],
                                                "id": 3366,
                                                "name": "FunctionCall",
                                                "src": "2489:33:25"
                                            }
                                        ],
                                        "id": 3367,
                                        "name": "VariableDeclarationStatement",
                                        "src": "2475:47:25"
                                    },
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 3359
                                        },
                                        "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_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "calculateRepaymentAmount",
                                                            "referencedDeclaration": 1984,
                                                            "type": "function (uint256) view external returns (uint256)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3361,
                                                                    "type": "contract KToken",
                                                                    "value": "pool"
                                                                },
                                                                "id": 3368,
                                                                "name": "Identifier",
                                                                "src": "2539:4:25"
                                                            }
                                                        ],
                                                        "id": 3369,
                                                        "name": "MemberAccess",
                                                        "src": "2539:29:25"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3354,
                                                            "type": "uint256",
                                                            "value": "tokenAmount"
                                                        },
                                                        "id": 3370,
                                                        "name": "Identifier",
                                                        "src": "2569:11:25"
                                                    }
                                                ],
                                                "id": 3371,
                                                "name": "FunctionCall",
                                                "src": "2539:42:25"
                                            }
                                        ],
                                        "id": 3372,
                                        "name": "Return",
                                        "src": "2532:49:25"
                                    }
                                ],
                                "id": 3373,
                                "name": "Block",
                                "src": "2465:123:25"
                            }
                        ],
                        "id": 3374,
                        "name": "FunctionDefinition",
                        "src": "2317:271:25"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                2147
                            ],
                            "functionSelector": "4b8a3529",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "borrow",
                            "scope": 3516,
                            "stateMutability": "nonpayable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 3380,
                                "name": "OverrideSpecifier",
                                "src": "2678:8:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAddress",
                                            "scope": 3433,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3375,
                                                "name": "ElementaryTypeName",
                                                "src": "2610:7:25"
                                            }
                                        ],
                                        "id": 3376,
                                        "name": "VariableDeclaration",
                                        "src": "2610:20:25"
                                    },
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAmount",
                                            "scope": 3433,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "uint256",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "uint256",
                                                    "type": "uint256"
                                                },
                                                "id": 3377,
                                                "name": "ElementaryTypeName",
                                                "src": "2632:7:25"
                                            }
                                        ],
                                        "id": 3378,
                                        "name": "VariableDeclaration",
                                        "src": "2632:19:25"
                                    }
                                ],
                                "id": 3379,
                                "name": "ParameterList",
                                "src": "2609:43:25"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 3381,
                                "name": "ParameterList",
                                "src": "2691:0:25"
                            },
                            {
                                "children": [
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address payable"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3249,
                                                            "type": "address payable",
                                                            "value": "_scheduleInvokerAddress"
                                                        },
                                                        "id": 3382,
                                                        "name": "Identifier",
                                                        "src": "2701:23:25"
                                                    },
                                                    {
                                                        "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": 3383,
                                                                "name": "Identifier",
                                                                "src": "2727:3:25"
                                                            }
                                                        ],
                                                        "id": 3384,
                                                        "name": "MemberAccess",
                                                        "src": "2727:10:25"
                                                    }
                                                ],
                                                "id": 3385,
                                                "name": "Assignment",
                                                "src": "2701:36:25"
                                            }
                                        ],
                                        "id": 3386,
                                        "name": "ExpressionStatement",
                                        "src": "2701:36:25"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3251,
                                                            "type": "address",
                                                            "value": "_scheduleTokenAddress"
                                                        },
                                                        "id": 3387,
                                                        "name": "Identifier",
                                                        "src": "2747:21:25"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3376,
                                                            "type": "address",
                                                            "value": "tokenAddress"
                                                        },
                                                        "id": 3388,
                                                        "name": "Identifier",
                                                        "src": "2771:12:25"
                                                    }
                                                ],
                                                "id": 3389,
                                                "name": "Assignment",
                                                "src": "2747:36:25"
                                            }
                                        ],
                                        "id": 3390,
                                        "name": "ExpressionStatement",
                                        "src": "2747:36:25"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3253,
                                                            "type": "uint256",
                                                            "value": "_scheduleTokenAmount"
                                                        },
                                                        "id": 3391,
                                                        "name": "Identifier",
                                                        "src": "2793:20:25"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3378,
                                                            "type": "uint256",
                                                            "value": "tokenAmount"
                                                        },
                                                        "id": 3392,
                                                        "name": "Identifier",
                                                        "src": "2816:11:25"
                                                    }
                                                ],
                                                "id": 3393,
                                                "name": "Assignment",
                                                "src": "2793:34:25"
                                            }
                                        ],
                                        "id": 3394,
                                        "name": "ExpressionStatement",
                                        "src": "2793:34:25"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                3396
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "pool",
                                                    "scope": 3432,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "contract KToken",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "KToken",
                                                            "referencedDeclaration": 2115,
                                                            "type": "contract KToken"
                                                        },
                                                        "id": 3395,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "2838:6:25"
                                                    }
                                                ],
                                                "id": 3396,
                                                "name": "VariableDeclaration",
                                                "src": "2838:11:25"
                                            },
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "contract KToken",
                                                    "type_conversion": true
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                {
                                                                    "typeIdentifier": "t_address",
                                                                    "typeString": "address"
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 2115,
                                                            "type": "type(contract KToken)",
                                                            "value": "KToken"
                                                        },
                                                        "id": 3397,
                                                        "name": "Identifier",
                                                        "src": "2852:6:25"
                                                    },
                                                    {
                                                        "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": 3482,
                                                                    "type": "function (address) view returns (address)",
                                                                    "value": "poolAddress"
                                                                },
                                                                "id": 3398,
                                                                "name": "Identifier",
                                                                "src": "2859:11:25"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3376,
                                                                    "type": "address",
                                                                    "value": "tokenAddress"
                                                                },
                                                                "id": 3399,
                                                                "name": "Identifier",
                                                                "src": "2871:12:25"
                                                            }
                                                        ],
                                                        "id": 3400,
                                                        "name": "FunctionCall",
                                                        "src": "2859:25:25"
                                                    }
                                                ],
                                                "id": 3401,
                                                "name": "FunctionCall",
                                                "src": "2852:33:25"
                                            }
                                        ],
                                        "id": 3402,
                                        "name": "VariableDeclarationStatement",
                                        "src": "2838:47:25"
                                    },
                                    {
                                        "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_address_payable",
                                                                    "typeString": "address payable"
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                                                    "typeString": "literal_string \"\""
                                                                },
                                                                {
                                                                    "typeIdentifier": "t_uint256",
                                                                    "typeString": "uint256"
                                                                }
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "invoke",
                                                            "referencedDeclaration": 1880,
                                                            "type": "function (address,bytes memory,uint256) payable external"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3396,
                                                                    "type": "contract KToken",
                                                                    "value": "pool"
                                                                },
                                                                "id": 3403,
                                                                "name": "Identifier",
                                                                "src": "2895:4:25"
                                                            }
                                                        ],
                                                        "id": 3405,
                                                        "name": "MemberAccess",
                                                        "src": "2895:11:25"
                                                    },
                                                    {
                                                        "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$_KollateralLiquidityProxy_$3516",
                                                                            "typeString": "contract KollateralLiquidityProxy"
                                                                        }
                                                                    ],
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "type": "type(address)"
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "name": "address"
                                                                        },
                                                                        "id": 3406,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "2907:7:25"
                                                                    }
                                                                ],
                                                                "id": 3407,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "2907:7:25"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": -28,
                                                                    "type": "contract KollateralLiquidityProxy",
                                                                    "value": "this"
                                                                },
                                                                "id": 3408,
                                                                "name": "Identifier",
                                                                "src": "2915:4:25"
                                                            }
                                                        ],
                                                        "id": 3409,
                                                        "name": "FunctionCall",
                                                        "src": "2907:13:25"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"\"",
                                                            "value": ""
                                                        },
                                                        "id": 3410,
                                                        "name": "Literal",
                                                        "src": "2922:2:25"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3378,
                                                            "type": "uint256",
                                                            "value": "tokenAmount"
                                                        },
                                                        "id": 3411,
                                                        "name": "Identifier",
                                                        "src": "2926:11:25"
                                                    }
                                                ],
                                                "id": 3412,
                                                "name": "FunctionCall",
                                                "src": "2895:43:25"
                                            }
                                        ],
                                        "id": 3413,
                                        "name": "ExpressionStatement",
                                        "src": "2895:43:25"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address payable"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3249,
                                                            "type": "address payable",
                                                            "value": "_scheduleInvokerAddress"
                                                        },
                                                        "id": 3414,
                                                        "name": "Identifier",
                                                        "src": "2949:23:25"
                                                    },
                                                    {
                                                        "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": 3415,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "2975:7:25"
                                                                    }
                                                                ],
                                                                "id": 3416,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "2975:7:25"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 3417,
                                                                "name": "Literal",
                                                                "src": "2983:1:25"
                                                            }
                                                        ],
                                                        "id": 3418,
                                                        "name": "FunctionCall",
                                                        "src": "2975:10:25"
                                                    }
                                                ],
                                                "id": 3419,
                                                "name": "Assignment",
                                                "src": "2949:36:25"
                                            }
                                        ],
                                        "id": 3420,
                                        "name": "ExpressionStatement",
                                        "src": "2949:36:25"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "address"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3251,
                                                            "type": "address",
                                                            "value": "_scheduleTokenAddress"
                                                        },
                                                        "id": 3421,
                                                        "name": "Identifier",
                                                        "src": "2995:21:25"
                                                    },
                                                    {
                                                        "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": 3422,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "3019:7:25"
                                                                    }
                                                                ],
                                                                "id": 3423,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "3019:7:25"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 3424,
                                                                "name": "Literal",
                                                                "src": "3027:1:25"
                                                            }
                                                        ],
                                                        "id": 3425,
                                                        "name": "FunctionCall",
                                                        "src": "3019:10:25"
                                                    }
                                                ],
                                                "id": 3426,
                                                "name": "Assignment",
                                                "src": "2995:34:25"
                                            }
                                        ],
                                        "id": 3427,
                                        "name": "ExpressionStatement",
                                        "src": "2995:34:25"
                                    },
                                    {
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "operator": "=",
                                                    "type": "uint256"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3253,
                                                            "type": "uint256",
                                                            "value": "_scheduleTokenAmount"
                                                        },
                                                        "id": 3428,
                                                        "name": "Identifier",
                                                        "src": "3039:20:25"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "30",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "number",
                                                            "type": "int_const 0",
                                                            "value": "0"
                                                        },
                                                        "id": 3429,
                                                        "name": "Literal",
                                                        "src": "3062:1:25"
                                                    }
                                                ],
                                                "id": 3430,
                                                "name": "Assignment",
                                                "src": "3039:24:25"
                                            }
                                        ],
                                        "id": 3431,
                                        "name": "ExpressionStatement",
                                        "src": "3039:24:25"
                                    }
                                ],
                                "id": 3432,
                                "name": "Block",
                                "src": "2691:379:25"
                            }
                        ],
                        "id": 3433,
                        "name": "FunctionDefinition",
                        "src": "2594:476:25"
                    },
                    {
                        "attributes": {
                            "baseFunctions": [
                                1177
                            ],
                            "functionSelector": "09c5eabe",
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "execute",
                            "scope": 3516,
                            "stateMutability": "payable",
                            "virtual": false,
                            "visibility": "external"
                        },
                        "children": [
                            {
                                "attributes": {
                                    "overrides": [
                                        null
                                    ]
                                },
                                "id": 3437,
                                "name": "OverrideSpecifier",
                                "src": "3131:8:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "data",
                                            "scope": 3470,
                                            "stateVariable": false,
                                            "storageLocation": "calldata",
                                            "type": "bytes",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bytes",
                                                    "type": "bytes"
                                                },
                                                "id": 3434,
                                                "name": "ElementaryTypeName",
                                                "src": "3093:5:25"
                                            }
                                        ],
                                        "id": 3435,
                                        "name": "VariableDeclaration",
                                        "src": "3093:19:25"
                                    }
                                ],
                                "id": 3436,
                                "name": "ParameterList",
                                "src": "3092:21:25"
                            },
                            {
                                "attributes": {
                                    "parameters": [
                                        null
                                    ]
                                },
                                "children": [],
                                "id": 3438,
                                "name": "ParameterList",
                                "src": "3140:0:25"
                            },
                            {
                                "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_90f1ee5f16679c4c41f60fb1d23e1b018a67e342e254a06605779689d3eabb9b",
                                                                    "typeString": "literal_string \"KollateralLiquidityProxy: not scheduled\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 3439,
                                                        "name": "Identifier",
                                                        "src": "3150:7:25"
                                                    },
                                                    {
                                                        "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": 3249,
                                                                    "type": "address payable",
                                                                    "value": "_scheduleInvokerAddress"
                                                                },
                                                                "id": 3440,
                                                                "name": "Identifier",
                                                                "src": "3171:23:25"
                                                            },
                                                            {
                                                                "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": 3441,
                                                                                "name": "ElementaryTypeName",
                                                                                "src": "3198:7:25"
                                                                            }
                                                                        ],
                                                                        "id": 3442,
                                                                        "name": "ElementaryTypeNameExpression",
                                                                        "src": "3198:7:25"
                                                                    },
                                                                    {
                                                                        "attributes": {
                                                                            "hexvalue": "30",
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "lValueRequested": false,
                                                                            "token": "number",
                                                                            "type": "int_const 0",
                                                                            "value": "0"
                                                                        },
                                                                        "id": 3443,
                                                                        "name": "Literal",
                                                                        "src": "3206:1:25"
                                                                    }
                                                                ],
                                                                "id": 3444,
                                                                "name": "FunctionCall",
                                                                "src": "3198:10:25"
                                                            }
                                                        ],
                                                        "id": 3445,
                                                        "name": "BinaryOperation",
                                                        "src": "3171:37:25"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "4b6f6c6c61746572616c4c697175696469747950726f78793a206e6f74207363686564756c6564",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"KollateralLiquidityProxy: not scheduled\"",
                                                            "value": "KollateralLiquidityProxy: not scheduled"
                                                        },
                                                        "id": 3446,
                                                        "name": "Literal",
                                                        "src": "3222:41:25"
                                                    }
                                                ],
                                                "id": 3447,
                                                "name": "FunctionCall",
                                                "src": "3150:123:25"
                                            }
                                        ],
                                        "id": 3448,
                                        "name": "ExpressionStatement",
                                        "src": "3150:123:25"
                                    },
                                    {
                                        "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_8eda1b4c2c825c8e010d94cec4723f6c7c3e52f780266b540302a12e8e2dabaa",
                                                                    "typeString": "literal_string \"KollateralLiquidityProxy: transfer to invoker failed\""
                                                                }
                                                            ],
                                                            "overloadedDeclarations": [
                                                                -18,
                                                                -18
                                                            ],
                                                            "referencedDeclaration": -18,
                                                            "type": "function (bool,string memory) pure",
                                                            "value": "require"
                                                        },
                                                        "id": 3449,
                                                        "name": "Identifier",
                                                        "src": "3284:7:25"
                                                    },
                                                    {
                                                        "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": 3450,
                                                                "name": "Identifier",
                                                                "src": "3305:8:25"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3251,
                                                                    "type": "address",
                                                                    "value": "_scheduleTokenAddress"
                                                                },
                                                                "id": 3451,
                                                                "name": "Identifier",
                                                                "src": "3331:21:25"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3249,
                                                                    "type": "address payable",
                                                                    "value": "_scheduleInvokerAddress"
                                                                },
                                                                "id": 3452,
                                                                "name": "Identifier",
                                                                "src": "3370:23:25"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3253,
                                                                    "type": "uint256",
                                                                    "value": "_scheduleTokenAmount"
                                                                },
                                                                "id": 3453,
                                                                "name": "Identifier",
                                                                "src": "3411:20:25"
                                                            }
                                                        ],
                                                        "id": 3454,
                                                        "name": "FunctionCall",
                                                        "src": "3305:140:25"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "hexvalue": "4b6f6c6c61746572616c4c697175696469747950726f78793a207472616e7366657220746f20696e766f6b6572206661696c6564",
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "lValueRequested": false,
                                                            "token": "string",
                                                            "type": "literal_string \"KollateralLiquidityProxy: transfer to invoker failed\"",
                                                            "value": "KollateralLiquidityProxy: transfer to invoker failed"
                                                        },
                                                        "id": 3455,
                                                        "name": "Literal",
                                                        "src": "3459:54:25"
                                                    }
                                                ],
                                                "id": 3456,
                                                "name": "FunctionCall",
                                                "src": "3284:239:25"
                                            }
                                        ],
                                        "id": 3457,
                                        "name": "ExpressionStatement",
                                        "src": "3284:239:25"
                                    },
                                    {
                                        "attributes": {
                                            "assignments": [
                                                3459
                                            ]
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "constant": false,
                                                    "mutability": "mutable",
                                                    "name": "invoker",
                                                    "scope": 3469,
                                                    "stateVariable": false,
                                                    "storageLocation": "default",
                                                    "type": "contract IInvoker",
                                                    "visibility": "internal"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "name": "IInvoker",
                                                            "referencedDeclaration": 1234,
                                                            "type": "contract IInvoker"
                                                        },
                                                        "id": 3458,
                                                        "name": "UserDefinedTypeName",
                                                        "src": "3534:8:25"
                                                    }
                                                ],
                                                "id": 3459,
                                                "name": "VariableDeclaration",
                                                "src": "3534:16:25"
                                            },
                                            {
                                                "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": 3460,
                                                        "name": "Identifier",
                                                        "src": "3553:8:25"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3249,
                                                            "type": "address payable",
                                                            "value": "_scheduleInvokerAddress"
                                                        },
                                                        "id": 3461,
                                                        "name": "Identifier",
                                                        "src": "3562:23:25"
                                                    }
                                                ],
                                                "id": 3462,
                                                "name": "FunctionCall",
                                                "src": "3553:33:25"
                                            }
                                        ],
                                        "id": 3463,
                                        "name": "VariableDeclarationStatement",
                                        "src": "3534:52:25"
                                    },
                                    {
                                        "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": 3459,
                                                                    "type": "contract IInvoker",
                                                                    "value": "invoker"
                                                                },
                                                                "id": 3464,
                                                                "name": "Identifier",
                                                                "src": "3596:7:25"
                                                            }
                                                        ],
                                                        "id": 3466,
                                                        "name": "MemberAccess",
                                                        "src": "3596:22:25"
                                                    }
                                                ],
                                                "id": 3467,
                                                "name": "FunctionCall",
                                                "src": "3596:24:25"
                                            }
                                        ],
                                        "id": 3468,
                                        "name": "ExpressionStatement",
                                        "src": "3596:24:25"
                                    }
                                ],
                                "id": 3469,
                                "name": "Block",
                                "src": "3140:487:25"
                            }
                        ],
                        "id": 3470,
                        "name": "FunctionDefinition",
                        "src": "3076:551:25"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "poolAddress",
                            "scope": 3516,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAddress",
                                            "scope": 3482,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3471,
                                                "name": "ElementaryTypeName",
                                                "src": "3654:7:25"
                                            }
                                        ],
                                        "id": 3472,
                                        "name": "VariableDeclaration",
                                        "src": "3654:20:25"
                                    }
                                ],
                                "id": 3473,
                                "name": "ParameterList",
                                "src": "3653:22:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 3482,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3474,
                                                "name": "ElementaryTypeName",
                                                "src": "3699:7:25"
                                            }
                                        ],
                                        "id": 3475,
                                        "name": "VariableDeclaration",
                                        "src": "3699:7:25"
                                    }
                                ],
                                "id": 3476,
                                "name": "ParameterList",
                                "src": "3698:9:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 3476
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "isConstant": false,
                                                    "isLValue": true,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "type": "address"
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3247,
                                                            "type": "mapping(address => address)",
                                                            "value": "_tokenAddressToKTokenAddress"
                                                        },
                                                        "id": 3477,
                                                        "name": "Identifier",
                                                        "src": "3725:28:25"
                                                    },
                                                    {
                                                        "attributes": {
                                                            "overloadedDeclarations": [
                                                                null
                                                            ],
                                                            "referencedDeclaration": 3472,
                                                            "type": "address",
                                                            "value": "tokenAddress"
                                                        },
                                                        "id": 3478,
                                                        "name": "Identifier",
                                                        "src": "3754:12:25"
                                                    }
                                                ],
                                                "id": 3479,
                                                "name": "IndexAccess",
                                                "src": "3725:42:25"
                                            }
                                        ],
                                        "id": 3480,
                                        "name": "Return",
                                        "src": "3718:49:25"
                                    }
                                ],
                                "id": 3481,
                                "name": "Block",
                                "src": "3708:66:25"
                            }
                        ],
                        "id": 3482,
                        "name": "FunctionDefinition",
                        "src": "3633:141:25"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "isRegistered",
                            "scope": 3516,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAddress",
                                            "scope": 3499,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3483,
                                                "name": "ElementaryTypeName",
                                                "src": "3802:7:25"
                                            }
                                        ],
                                        "id": 3484,
                                        "name": "VariableDeclaration",
                                        "src": "3802:20:25"
                                    }
                                ],
                                "id": 3485,
                                "name": "ParameterList",
                                "src": "3801:22:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 3499,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 3486,
                                                "name": "ElementaryTypeName",
                                                "src": "3847:4:25"
                                            }
                                        ],
                                        "id": 3487,
                                        "name": "VariableDeclaration",
                                        "src": "3847:4:25"
                                    }
                                ],
                                "id": 3488,
                                "name": "ParameterList",
                                "src": "3846:6:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 3488
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "commonType": {
                                                        "typeIdentifier": "t_address",
                                                        "typeString": "address"
                                                    },
                                                    "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": "address",
                                                            "type_conversion": false
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "argumentTypes": [
                                                                        {
                                                                            "typeIdentifier": "t_address",
                                                                            "typeString": "address"
                                                                        }
                                                                    ],
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3482,
                                                                    "type": "function (address) view returns (address)",
                                                                    "value": "poolAddress"
                                                                },
                                                                "id": 3489,
                                                                "name": "Identifier",
                                                                "src": "3870:11:25"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "overloadedDeclarations": [
                                                                        null
                                                                    ],
                                                                    "referencedDeclaration": 3484,
                                                                    "type": "address",
                                                                    "value": "tokenAddress"
                                                                },
                                                                "id": 3490,
                                                                "name": "Identifier",
                                                                "src": "3882:12:25"
                                                            }
                                                        ],
                                                        "id": 3491,
                                                        "name": "FunctionCall",
                                                        "src": "3870:25:25"
                                                    },
                                                    {
                                                        "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": 3492,
                                                                        "name": "ElementaryTypeName",
                                                                        "src": "3899:7:25"
                                                                    }
                                                                ],
                                                                "id": 3493,
                                                                "name": "ElementaryTypeNameExpression",
                                                                "src": "3899:7:25"
                                                            },
                                                            {
                                                                "attributes": {
                                                                    "hexvalue": "30",
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "lValueRequested": false,
                                                                    "token": "number",
                                                                    "type": "int_const 0",
                                                                    "value": "0"
                                                                },
                                                                "id": 3494,
                                                                "name": "Literal",
                                                                "src": "3907:1:25"
                                                            }
                                                        ],
                                                        "id": 3495,
                                                        "name": "FunctionCall",
                                                        "src": "3899:10:25"
                                                    }
                                                ],
                                                "id": 3496,
                                                "name": "BinaryOperation",
                                                "src": "3870:39:25"
                                            }
                                        ],
                                        "id": 3497,
                                        "name": "Return",
                                        "src": "3863:46:25"
                                    }
                                ],
                                "id": 3498,
                                "name": "Block",
                                "src": "3853:63:25"
                            }
                        ],
                        "id": 3499,
                        "name": "FunctionDefinition",
                        "src": "3780:136:25"
                    },
                    {
                        "attributes": {
                            "implemented": true,
                            "isConstructor": false,
                            "kind": "function",
                            "modifiers": [
                                null
                            ],
                            "name": "isPaused",
                            "scope": 3516,
                            "stateMutability": "view",
                            "virtual": false,
                            "visibility": "internal"
                        },
                        "children": [
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "tokenAddress",
                                            "scope": 3515,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "address",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "address",
                                                    "stateMutability": "nonpayable",
                                                    "type": "address"
                                                },
                                                "id": 3500,
                                                "name": "ElementaryTypeName",
                                                "src": "3940:7:25"
                                            }
                                        ],
                                        "id": 3501,
                                        "name": "VariableDeclaration",
                                        "src": "3940:20:25"
                                    }
                                ],
                                "id": 3502,
                                "name": "ParameterList",
                                "src": "3939:22:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "constant": false,
                                            "mutability": "mutable",
                                            "name": "",
                                            "scope": 3515,
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "type": "bool",
                                            "visibility": "internal"
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "name": "bool",
                                                    "type": "bool"
                                                },
                                                "id": 3503,
                                                "name": "ElementaryTypeName",
                                                "src": "3985:4:25"
                                            }
                                        ],
                                        "id": 3504,
                                        "name": "VariableDeclaration",
                                        "src": "3985:4:25"
                                    }
                                ],
                                "id": 3505,
                                "name": "ParameterList",
                                "src": "3984:6:25"
                            },
                            {
                                "children": [
                                    {
                                        "attributes": {
                                            "functionReturnParameters": 3505
                                        },
                                        "children": [
                                            {
                                                "attributes": {
                                                    "arguments": [
                                                        null
                                                    ],
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "isStructConstructorCall": false,
                                                    "lValueRequested": false,
                                                    "names": [
                                                        null
                                                    ],
                                                    "tryCall": false,
                                                    "type": "bool",
                                                    "type_conversion": false
                                                },
                                                "children": [
                                                    {
                                                        "attributes": {
                                                            "argumentTypes": [
                                                                null
                                                            ],
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "member_name": "paused",
                                                            "referencedDeclaration": 6201,
                                                            "type": "function () view external returns (bool)"
                                                        },
                                                        "children": [
                                                            {
                                                                "attributes": {
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "isStructConstructorCall": false,
                                                                    "lValueRequested": false,
                                                                    "names": [
                                                                        null
                                                                    ],
                                                                    "tryCall": false,
                                                                    "type": "contract Pausable",
                                                                    "type_conversion": true
                                                                },
                                                                "children": [
                                                                    {
                                                                        "attributes": {
                                                                            "argumentTypes": [
                                                                                {
                                                                                    "typeIdentifier": "t_address",
                                                                                    "typeString": "address"
                                                                                }
                                                                            ],
                                                                            "overloadedDeclarations": [
                                                                                null
                                                                            ],
                                                                            "referencedDeclaration": 6255,
                                                                            "type": "type(contract Pausable)",
                                                                            "value": "Pausable"
                                                                        },
                                                                        "id": 3506,
                                                                        "name": "Identifier",
                                                                        "src": "4008:8:25"
                                                                    },
                                                                    {
                                                                        "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": 3482,
                                                                                    "type": "function (address) view returns (address)",
                                                                                    "value": "poolAddress"
                                                                                },
                                                                                "id": 3507,
                                                                                "name": "Identifier",
                                                                                "src": "4017:11:25"
                                                                            },
                                                                            {
                                                                                "attributes": {
                                                                                    "overloadedDeclarations": [
                                                                                        null
                                                                                    ],
                                                                                    "referencedDeclaration": 3501,
                                                                                    "type": "address",
                                                                                    "value": "tokenAddress"
                                                                                },
                                                                                "id": 3508,
                                                                                "name": "Identifier",
                                                                                "src": "4029:12:25"
                                                                            }
                                                                        ],
                                                                        "id": 3509,
                                                                        "name": "FunctionCall",
                                                                        "src": "4017:25:25"
                                                                    }
                                                                ],
                                                                "id": 3510,
                                                                "name": "FunctionCall",
                                                                "src": "4008:35:25"
                                                            }
                                                        ],
                                                        "id": 3511,
                                                        "name": "MemberAccess",
                                                        "src": "4008:42:25"
                                                    }
                                                ],
                                                "id": 3512,
                                                "name": "FunctionCall",
                                                "src": "4008:44:25"
                                            }
                                        ],
                                        "id": 3513,
                                        "name": "Return",
                                        "src": "4001:51:25"
                                    }
                                ],
                                "id": 3514,
                                "name": "Block",
                                "src": "3991:68:25"
                            }
                        ],
                        "id": 3515,
                        "name": "FunctionDefinition",
                        "src": "3922:137:25"
                    }
                ],
                "id": 3516,
                "name": "ContractDefinition",
                "src": "976:3085:25"
            }
        ],
        "id": 3517,
        "name": "SourceUnit",
        "src": "640:3422:25"
    },
    "compiler": {
        "name": "solc",
        "version": "0.7.3+commit.9bfce1f6.Emscripten.clang"
    },
    "networks": {},
    "schemaVersion": "3.3.3",
    "updatedAt": "2021-02-01T23:13:33.232Z",
    "devdoc": {
        "kind": "dev",
        "methods": {
            "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": {},
        "version": 1
    }
}
